// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: deviceapis/device/v1/deviceapis_device_gate_v1.proto

package ru.deviceapis.device.v1;

public final class DeviceapisDeviceV1Proto {
  private DeviceapisDeviceV1Proto() {}
  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 GateModeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:deviceapis.device.v1.GateMode)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Флаг включения Gate режима.
     * true=gate; false=ordinary
     * </pre>
     *
     * <code>bool is_gate_mode_on = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The isGateModeOn.
     */
    boolean getIsGateModeOn();

    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    java.util.List<ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House> 
        getHousesList();
    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House getHouses(int index);
    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    int getHousesCount();
    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    java.util.List<? extends ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder> 
        getHousesOrBuilderList();
    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder getHousesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Настройки Gate режима
   * </pre>
   *
   * Protobuf type {@code deviceapis.device.v1.GateMode}
   */
  public static final class GateMode extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:deviceapis.device.v1.GateMode)
      GateModeOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GateMode.newBuilder() to construct.
    private GateMode(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GateMode() {
      houses_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GateMode_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GateMode_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder.class);
    }

    public static final int IS_GATE_MODE_ON_FIELD_NUMBER = 1;
    private boolean isGateModeOn_ = false;
    /**
     * <pre>
     * Флаг включения Gate режима.
     * true=gate; false=ordinary
     * </pre>
     *
     * <code>bool is_gate_mode_on = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The isGateModeOn.
     */
    @java.lang.Override
    public boolean getIsGateModeOn() {
      return isGateModeOn_;
    }

    public static final int HOUSES_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private java.util.List<ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House> houses_;
    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    @java.lang.Override
    public java.util.List<ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House> getHousesList() {
      return houses_;
    }
    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    @java.lang.Override
    public java.util.List<? extends ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder> 
        getHousesOrBuilderList() {
      return houses_;
    }
    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    @java.lang.Override
    public int getHousesCount() {
      return houses_.size();
    }
    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House getHouses(int index) {
      return houses_.get(index);
    }
    /**
     * <pre>
     * Дома Gate режима.
     * При редактировании массив полностью заменяется на отправленный
     * </pre>
     *
     * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder getHousesOrBuilder(
        int index) {
      return houses_.get(index);
    }

    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 (isGateModeOn_ != false) {
        output.writeBool(1, isGateModeOn_);
      }
      for (int i = 0; i < houses_.size(); i++) {
        output.writeMessage(2, houses_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (isGateModeOn_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, isGateModeOn_);
      }
      for (int i = 0; i < houses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, houses_.get(i));
      }
      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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode)) {
        return super.equals(obj);
      }
      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode other = (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) obj;

      if (getIsGateModeOn()
          != other.getIsGateModeOn()) return false;
      if (!getHousesList()
          .equals(other.getHousesList())) 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) + IS_GATE_MODE_ON_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsGateModeOn());
      if (getHousesCount() > 0) {
        hash = (37 * hash) + HOUSES_FIELD_NUMBER;
        hash = (53 * hash) + getHousesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode 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>
     * Настройки Gate режима
     * </pre>
     *
     * Protobuf type {@code deviceapis.device.v1.GateMode}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:deviceapis.device.v1.GateMode)
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GateMode_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GateMode_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder.class);
      }

      // Construct using ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        isGateModeOn_ = false;
        if (housesBuilder_ == null) {
          houses_ = java.util.Collections.emptyList();
        } else {
          houses_ = null;
          housesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GateMode_descriptor;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getDefaultInstanceForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode build() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode buildPartial() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode result = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode result) {
        if (housesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            houses_ = java.util.Collections.unmodifiableList(houses_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.houses_ = houses_;
        } else {
          result.houses_ = housesBuilder_.build();
        }
      }

      private void buildPartial0(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.isGateModeOn_ = isGateModeOn_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) {
          return mergeFrom((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode other) {
        if (other == ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance()) return this;
        if (other.getIsGateModeOn() != false) {
          setIsGateModeOn(other.getIsGateModeOn());
        }
        if (housesBuilder_ == null) {
          if (!other.houses_.isEmpty()) {
            if (houses_.isEmpty()) {
              houses_ = other.houses_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureHousesIsMutable();
              houses_.addAll(other.houses_);
            }
            onChanged();
          }
        } else {
          if (!other.houses_.isEmpty()) {
            if (housesBuilder_.isEmpty()) {
              housesBuilder_.dispose();
              housesBuilder_ = null;
              houses_ = other.houses_;
              bitField0_ = (bitField0_ & ~0x00000002);
              housesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHousesFieldBuilder() : null;
            } else {
              housesBuilder_.addAllMessages(other.houses_);
            }
          }
        }
        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: {
                isGateModeOn_ = input.readBool();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 18: {
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House m =
                    input.readMessage(
                        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.parser(),
                        extensionRegistry);
                if (housesBuilder_ == null) {
                  ensureHousesIsMutable();
                  houses_.add(m);
                } else {
                  housesBuilder_.addMessage(m);
                }
                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 bitField0_;

      private boolean isGateModeOn_ ;
      /**
       * <pre>
       * Флаг включения Gate режима.
       * true=gate; false=ordinary
       * </pre>
       *
       * <code>bool is_gate_mode_on = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The isGateModeOn.
       */
      @java.lang.Override
      public boolean getIsGateModeOn() {
        return isGateModeOn_;
      }
      /**
       * <pre>
       * Флаг включения Gate режима.
       * true=gate; false=ordinary
       * </pre>
       *
       * <code>bool is_gate_mode_on = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @param value The isGateModeOn to set.
       * @return This builder for chaining.
       */
      public Builder setIsGateModeOn(boolean value) {

        isGateModeOn_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Флаг включения Gate режима.
       * true=gate; false=ordinary
       * </pre>
       *
       * <code>bool is_gate_mode_on = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return This builder for chaining.
       */
      public Builder clearIsGateModeOn() {
        bitField0_ = (bitField0_ & ~0x00000001);
        isGateModeOn_ = false;
        onChanged();
        return this;
      }

      private java.util.List<ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House> houses_ =
        java.util.Collections.emptyList();
      private void ensureHousesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          houses_ = new java.util.ArrayList<ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House>(houses_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder> housesBuilder_;

      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public java.util.List<ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House> getHousesList() {
        if (housesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(houses_);
        } else {
          return housesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public int getHousesCount() {
        if (housesBuilder_ == null) {
          return houses_.size();
        } else {
          return housesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House getHouses(int index) {
        if (housesBuilder_ == null) {
          return houses_.get(index);
        } else {
          return housesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public Builder setHouses(
          int index, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House value) {
        if (housesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHousesIsMutable();
          houses_.set(index, value);
          onChanged();
        } else {
          housesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public Builder setHouses(
          int index, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder builderForValue) {
        if (housesBuilder_ == null) {
          ensureHousesIsMutable();
          houses_.set(index, builderForValue.build());
          onChanged();
        } else {
          housesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public Builder addHouses(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House value) {
        if (housesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHousesIsMutable();
          houses_.add(value);
          onChanged();
        } else {
          housesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public Builder addHouses(
          int index, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House value) {
        if (housesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHousesIsMutable();
          houses_.add(index, value);
          onChanged();
        } else {
          housesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public Builder addHouses(
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder builderForValue) {
        if (housesBuilder_ == null) {
          ensureHousesIsMutable();
          houses_.add(builderForValue.build());
          onChanged();
        } else {
          housesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public Builder addHouses(
          int index, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder builderForValue) {
        if (housesBuilder_ == null) {
          ensureHousesIsMutable();
          houses_.add(index, builderForValue.build());
          onChanged();
        } else {
          housesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public Builder addAllHouses(
          java.lang.Iterable<? extends ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House> values) {
        if (housesBuilder_ == null) {
          ensureHousesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, houses_);
          onChanged();
        } else {
          housesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public Builder clearHouses() {
        if (housesBuilder_ == null) {
          houses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          housesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public Builder removeHouses(int index) {
        if (housesBuilder_ == null) {
          ensureHousesIsMutable();
          houses_.remove(index);
          onChanged();
        } else {
          housesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder getHousesBuilder(
          int index) {
        return getHousesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder getHousesOrBuilder(
          int index) {
        if (housesBuilder_ == null) {
          return houses_.get(index);  } else {
          return housesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public java.util.List<? extends ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder> 
           getHousesOrBuilderList() {
        if (housesBuilder_ != null) {
          return housesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(houses_);
        }
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder addHousesBuilder() {
        return getHousesFieldBuilder().addBuilder(
            ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.getDefaultInstance());
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder addHousesBuilder(
          int index) {
        return getHousesFieldBuilder().addBuilder(
            index, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.getDefaultInstance());
      }
      /**
       * <pre>
       * Дома Gate режима.
       * При редактировании массив полностью заменяется на отправленный
       * </pre>
       *
       * <code>repeated .deviceapis.device.v1.House houses = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       */
      public java.util.List<ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder> 
           getHousesBuilderList() {
        return getHousesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder> 
          getHousesFieldBuilder() {
        if (housesBuilder_ == null) {
          housesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder>(
                  houses_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          houses_ = null;
        }
        return housesBuilder_;
      }
      @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:deviceapis.device.v1.GateMode)
    }

    // @@protoc_insertion_point(class_scope:deviceapis.device.v1.GateMode)
    private static final ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode();
    }

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GateMode>
        PARSER = new com.google.protobuf.AbstractParser<GateMode>() {
      @java.lang.Override
      public GateMode 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<GateMode> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGateModeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:deviceapis.device.v1.GetGateModeRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Запрос получения Gate режима
   * </pre>
   *
   * Protobuf type {@code deviceapis.device.v1.GetGateModeRequest}
   */
  public static final class GetGateModeRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:deviceapis.device.v1.GetGateModeRequest)
      GetGateModeRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGateModeRequest.newBuilder() to construct.
    private GetGateModeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGateModeRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest.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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest)) {
        return super.equals(obj);
      }
      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest other = (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest) 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest 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>
     * Запрос получения Gate режима
     * </pre>
     *
     * Protobuf type {@code deviceapis.device.v1.GetGateModeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:deviceapis.device.v1.GetGateModeRequest)
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest.Builder.class);
      }

      // Construct using ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest.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.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeRequest_descriptor;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest getDefaultInstanceForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest build() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest buildPartial() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest result = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest) {
          return mergeFrom((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest other) {
        if (other == ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest.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:deviceapis.device.v1.GetGateModeRequest)
    }

    // @@protoc_insertion_point(class_scope:deviceapis.device.v1.GetGateModeRequest)
    private static final ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest();
    }

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGateModeRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetGateModeRequest>() {
      @java.lang.Override
      public GetGateModeRequest 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<GetGateModeRequest> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetGateModeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:deviceapis.device.v1.GetGateModeResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     * @return The data.
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getData();
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder getDataOrBuilder();

    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения Gate режима
   * </pre>
   *
   * Protobuf type {@code deviceapis.device.v1.GetGateModeResponse}
   */
  public static final class GetGateModeResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:deviceapis.device.v1.GetGateModeResponse)
      GetGateModeResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetGateModeResponse.newBuilder() to construct.
    private GetGateModeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetGateModeResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse.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 {
      DATA(1),
      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 DATA;
          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 DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getData() {
      if (typeCase_ == 1) {
         return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_;
      }
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
    }
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_;
      }
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse)) {
        return super.equals(obj);
      }
      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse other = (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getData()
              .equals(other.getData())) 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) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + getData().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse 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>
     * Ответ на запрос получения Gate режима
     * </pre>
     *
     * Protobuf type {@code deviceapis.device.v1.GetGateModeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:deviceapis.device.v1.GetGateModeResponse)
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse.Builder.class);
      }

      // Construct using ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_GetGateModeResponse_descriptor;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse getDefaultInstanceForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse build() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse buildPartial() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse result = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            dataBuilder_ != null) {
          result.type_ = dataBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse) {
          return mergeFrom((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse other) {
        if (other == ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse.getDefaultInstance()) return this;
        switch (other.getTypeCase()) {
          case DATA: {
            mergeData(other.getData());
            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(
                    getDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 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 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_;
          }
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public Builder setData(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public Builder setData(
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public Builder mergeData(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode value) {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1 &&
              type_ != ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance()) {
            type_ = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.newBuilder((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 1) {
            return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_;
          }
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder>(
                  (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }
      @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:deviceapis.device.v1.GetGateModeResponse)
    }

    // @@protoc_insertion_point(class_scope:deviceapis.device.v1.GetGateModeResponse)
    private static final ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse();
    }

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetGateModeResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetGateModeResponse>() {
      @java.lang.Override
      public GetGateModeResponse 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<GetGateModeResponse> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GetGateModeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HouseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:deviceapis.device.v1.House)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Адрес дома
     * </pre>
     *
     * <code>string address = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The address.
     */
    java.lang.String getAddress();
    /**
     * <pre>
     * Адрес дома
     * </pre>
     *
     * <code>string address = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for address.
     */
    com.google.protobuf.ByteString
        getAddressBytes();

    /**
     * <pre>
     * Номер дома (подъезда)
     * </pre>
     *
     * <code>string prefix = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The prefix.
     */
    java.lang.String getPrefix();
    /**
     * <pre>
     * Номер дома (подъезда)
     * </pre>
     *
     * <code>string prefix = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for prefix.
     */
    com.google.protobuf.ByteString
        getPrefixBytes();

    /**
     * <pre>
     * Диапазон квартир.
     * Если не задан, то устройство позволяет набор любой квартиры
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
     * @return Whether the roomRange field is set.
     */
    boolean hasRoomRange();
    /**
     * <pre>
     * Диапазон квартир.
     * Если не задан, то устройство позволяет набор любой квартиры
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
     * @return The roomRange.
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange getRoomRange();
    /**
     * <pre>
     * Диапазон квартир.
     * Если не задан, то устройство позволяет набор любой квартиры
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRangeOrBuilder getRoomRangeOrBuilder();

    /**
     * <pre>
     * Адрес Sip сервера.
     * При пустом sip_server будет использован сервер SIP регистрации
     * </pre>
     *
     * <code>string sip_server = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The sipServer.
     */
    java.lang.String getSipServer();
    /**
     * <pre>
     * Адрес Sip сервера.
     * При пустом sip_server будет использован сервер SIP регистрации
     * </pre>
     *
     * <code>string sip_server = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The bytes for sipServer.
     */
    com.google.protobuf.ByteString
        getSipServerBytes();

    /**
     * <pre>
     * Вариант подстановки номера дома и квартиры в SIP Invite.
     * При отсутствии значения используется вариант H4LZ_F4LZ
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.InviteTemplateType invite_template_type = 5 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The enum numeric value on the wire for inviteTemplateType.
     */
    int getInviteTemplateTypeValue();
    /**
     * <pre>
     * Вариант подстановки номера дома и квартиры в SIP Invite.
     * При отсутствии значения используется вариант H4LZ_F4LZ
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.InviteTemplateType invite_template_type = 5 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The inviteTemplateType.
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType getInviteTemplateType();
  }
  /**
   * <pre>
   * Дом Gate режима
   * </pre>
   *
   * Protobuf type {@code deviceapis.device.v1.House}
   */
  public static final class House extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:deviceapis.device.v1.House)
      HouseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use House.newBuilder() to construct.
    private House(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private House() {
      address_ = "";
      prefix_ = "";
      sipServer_ = "";
      inviteTemplateType_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder.class);
    }

    /**
     * <pre>
     * Варианты подстановки номера дома и квартиры в SIP Invite
     * </pre>
     *
     * Protobuf enum {@code deviceapis.device.v1.House.InviteTemplateType}
     */
    public enum InviteTemplateType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>INVITE_TEMPLATE_TYPE_UNKNOWN = 0;</code>
       */
      INVITE_TEMPLATE_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * 4 символа для номера дома с лидирующими нулями, 4 символа для номера квартиры с лидирующими нулями.
       * Номера дома и квартиры при звонке подставляются в виде: 00120123&#64;sip.acme.io
       * </pre>
       *
       * <code>H4LZ_F4LZ = 1;</code>
       */
      H4LZ_F4LZ(1),
      /**
       * <pre>
       * 4 символа для номера дома с лидирующими нулями, 4 или меньше символа для номера квартиры.
       * Номера дома и квартиры при звонке подставляются в виде: 0012123&#64;sip.acme.io
       * </pre>
       *
       * <code>H4LZ_F4 = 2;</code>
       */
      H4LZ_F4(2),
      /**
       * <pre>
       * 4 или меньше символа для номера дома, 4 символа для номера квартиры с лидирующими нулями.
       * Номера дома и квартиры при звонке подставляются в виде: 120123&#64;sip.acme.io
       * </pre>
       *
       * <code>H4_F4LZ = 3;</code>
       */
      H4_F4LZ(3),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>INVITE_TEMPLATE_TYPE_UNKNOWN = 0;</code>
       */
      public static final int INVITE_TEMPLATE_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * 4 символа для номера дома с лидирующими нулями, 4 символа для номера квартиры с лидирующими нулями.
       * Номера дома и квартиры при звонке подставляются в виде: 00120123&#64;sip.acme.io
       * </pre>
       *
       * <code>H4LZ_F4LZ = 1;</code>
       */
      public static final int H4LZ_F4LZ_VALUE = 1;
      /**
       * <pre>
       * 4 символа для номера дома с лидирующими нулями, 4 или меньше символа для номера квартиры.
       * Номера дома и квартиры при звонке подставляются в виде: 0012123&#64;sip.acme.io
       * </pre>
       *
       * <code>H4LZ_F4 = 2;</code>
       */
      public static final int H4LZ_F4_VALUE = 2;
      /**
       * <pre>
       * 4 или меньше символа для номера дома, 4 символа для номера квартиры с лидирующими нулями.
       * Номера дома и квартиры при звонке подставляются в виде: 120123&#64;sip.acme.io
       * </pre>
       *
       * <code>H4_F4LZ = 3;</code>
       */
      public static final int H4_F4LZ_VALUE = 3;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static InviteTemplateType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static InviteTemplateType forNumber(int value) {
        switch (value) {
          case 0: return INVITE_TEMPLATE_TYPE_UNKNOWN;
          case 1: return H4LZ_F4LZ;
          case 2: return H4LZ_F4;
          case 3: return H4_F4LZ;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.getDescriptor().getEnumTypes().get(0);
      }

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

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

      private final int value;

      private InviteTemplateType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:deviceapis.device.v1.House.InviteTemplateType)
    }

    public interface RoomRangeOrBuilder extends
        // @@protoc_insertion_point(interface_extends:deviceapis.device.v1.House.RoomRange)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Начало диапазона включительно
       * </pre>
       *
       * <code>string first_room_number = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The firstRoomNumber.
       */
      java.lang.String getFirstRoomNumber();
      /**
       * <pre>
       * Начало диапазона включительно
       * </pre>
       *
       * <code>string first_room_number = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The bytes for firstRoomNumber.
       */
      com.google.protobuf.ByteString
          getFirstRoomNumberBytes();

      /**
       * <pre>
       * Конец диапазона включительно
       * </pre>
       *
       * <code>string last_room_number = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The lastRoomNumber.
       */
      java.lang.String getLastRoomNumber();
      /**
       * <pre>
       * Конец диапазона включительно
       * </pre>
       *
       * <code>string last_room_number = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The bytes for lastRoomNumber.
       */
      com.google.protobuf.ByteString
          getLastRoomNumberBytes();
    }
    /**
     * <pre>
     * Диапазон квартир
     * </pre>
     *
     * Protobuf type {@code deviceapis.device.v1.House.RoomRange}
     */
    public static final class RoomRange extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:deviceapis.device.v1.House.RoomRange)
        RoomRangeOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use RoomRange.newBuilder() to construct.
      private RoomRange(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private RoomRange() {
        firstRoomNumber_ = "";
        lastRoomNumber_ = "";
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_RoomRange_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_RoomRange_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.Builder.class);
      }

      public static final int FIRST_ROOM_NUMBER_FIELD_NUMBER = 1;
      @SuppressWarnings("serial")
      private volatile java.lang.Object firstRoomNumber_ = "";
      /**
       * <pre>
       * Начало диапазона включительно
       * </pre>
       *
       * <code>string first_room_number = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The firstRoomNumber.
       */
      @java.lang.Override
      public java.lang.String getFirstRoomNumber() {
        java.lang.Object ref = firstRoomNumber_;
        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();
          firstRoomNumber_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * Начало диапазона включительно
       * </pre>
       *
       * <code>string first_room_number = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The bytes for firstRoomNumber.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getFirstRoomNumberBytes() {
        java.lang.Object ref = firstRoomNumber_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          firstRoomNumber_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }

      public static final int LAST_ROOM_NUMBER_FIELD_NUMBER = 2;
      @SuppressWarnings("serial")
      private volatile java.lang.Object lastRoomNumber_ = "";
      /**
       * <pre>
       * Конец диапазона включительно
       * </pre>
       *
       * <code>string last_room_number = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The lastRoomNumber.
       */
      @java.lang.Override
      public java.lang.String getLastRoomNumber() {
        java.lang.Object ref = lastRoomNumber_;
        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();
          lastRoomNumber_ = s;
          return s;
        }
      }
      /**
       * <pre>
       * Конец диапазона включительно
       * </pre>
       *
       * <code>string last_room_number = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The bytes for lastRoomNumber.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getLastRoomNumberBytes() {
        java.lang.Object ref = lastRoomNumber_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lastRoomNumber_ = 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(firstRoomNumber_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, firstRoomNumber_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastRoomNumber_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, lastRoomNumber_);
        }
        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(firstRoomNumber_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, firstRoomNumber_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastRoomNumber_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, lastRoomNumber_);
        }
        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.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange)) {
          return super.equals(obj);
        }
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange other = (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange) obj;

        if (!getFirstRoomNumber()
            .equals(other.getFirstRoomNumber())) return false;
        if (!getLastRoomNumber()
            .equals(other.getLastRoomNumber())) 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) + FIRST_ROOM_NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getFirstRoomNumber().hashCode();
        hash = (37 * hash) + LAST_ROOM_NUMBER_FIELD_NUMBER;
        hash = (53 * hash) + getLastRoomNumber().hashCode();
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

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

      public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange 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 deviceapis.device.v1.House.RoomRange}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:deviceapis.device.v1.House.RoomRange)
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRangeOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_RoomRange_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_RoomRange_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.Builder.class);
        }

        // Construct using ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.newBuilder()
        private Builder() {

        }

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_RoomRange_descriptor;
        }

        @java.lang.Override
        public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange getDefaultInstanceForType() {
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.getDefaultInstance();
        }

        @java.lang.Override
        public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange build() {
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange buildPartial() {
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange result = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange result) {
          int from_bitField0_ = bitField0_;
          if (((from_bitField0_ & 0x00000001) != 0)) {
            result.firstRoomNumber_ = firstRoomNumber_;
          }
          if (((from_bitField0_ & 0x00000002) != 0)) {
            result.lastRoomNumber_ = lastRoomNumber_;
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange) {
            return mergeFrom((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange other) {
          if (other == ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.getDefaultInstance()) return this;
          if (!other.getFirstRoomNumber().isEmpty()) {
            firstRoomNumber_ = other.firstRoomNumber_;
            bitField0_ |= 0x00000001;
            onChanged();
          }
          if (!other.getLastRoomNumber().isEmpty()) {
            lastRoomNumber_ = other.lastRoomNumber_;
            bitField0_ |= 0x00000002;
            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: {
                  firstRoomNumber_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
                case 18: {
                  lastRoomNumber_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000002;
                  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 bitField0_;

        private java.lang.Object firstRoomNumber_ = "";
        /**
         * <pre>
         * Начало диапазона включительно
         * </pre>
         *
         * <code>string first_room_number = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @return The firstRoomNumber.
         */
        public java.lang.String getFirstRoomNumber() {
          java.lang.Object ref = firstRoomNumber_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            firstRoomNumber_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Начало диапазона включительно
         * </pre>
         *
         * <code>string first_room_number = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @return The bytes for firstRoomNumber.
         */
        public com.google.protobuf.ByteString
            getFirstRoomNumberBytes() {
          java.lang.Object ref = firstRoomNumber_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            firstRoomNumber_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Начало диапазона включительно
         * </pre>
         *
         * <code>string first_room_number = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @param value The firstRoomNumber to set.
         * @return This builder for chaining.
         */
        public Builder setFirstRoomNumber(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          firstRoomNumber_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Начало диапазона включительно
         * </pre>
         *
         * <code>string first_room_number = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @return This builder for chaining.
         */
        public Builder clearFirstRoomNumber() {
          firstRoomNumber_ = getDefaultInstance().getFirstRoomNumber();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Начало диапазона включительно
         * </pre>
         *
         * <code>string first_room_number = 1 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @param value The bytes for firstRoomNumber to set.
         * @return This builder for chaining.
         */
        public Builder setFirstRoomNumberBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          firstRoomNumber_ = value;
          bitField0_ |= 0x00000001;
          onChanged();
          return this;
        }

        private java.lang.Object lastRoomNumber_ = "";
        /**
         * <pre>
         * Конец диапазона включительно
         * </pre>
         *
         * <code>string last_room_number = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @return The lastRoomNumber.
         */
        public java.lang.String getLastRoomNumber() {
          java.lang.Object ref = lastRoomNumber_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            lastRoomNumber_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <pre>
         * Конец диапазона включительно
         * </pre>
         *
         * <code>string last_room_number = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @return The bytes for lastRoomNumber.
         */
        public com.google.protobuf.ByteString
            getLastRoomNumberBytes() {
          java.lang.Object ref = lastRoomNumber_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            lastRoomNumber_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <pre>
         * Конец диапазона включительно
         * </pre>
         *
         * <code>string last_room_number = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @param value The lastRoomNumber to set.
         * @return This builder for chaining.
         */
        public Builder setLastRoomNumber(
            java.lang.String value) {
          if (value == null) { throw new NullPointerException(); }
          lastRoomNumber_ = value;
          bitField0_ |= 0x00000002;
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Конец диапазона включительно
         * </pre>
         *
         * <code>string last_room_number = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @return This builder for chaining.
         */
        public Builder clearLastRoomNumber() {
          lastRoomNumber_ = getDefaultInstance().getLastRoomNumber();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <pre>
         * Конец диапазона включительно
         * </pre>
         *
         * <code>string last_room_number = 2 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
         * @param value The bytes for lastRoomNumber to set.
         * @return This builder for chaining.
         */
        public Builder setLastRoomNumberBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) { throw new NullPointerException(); }
          checkByteStringIsUtf8(value);
          lastRoomNumber_ = value;
          bitField0_ |= 0x00000002;
          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:deviceapis.device.v1.House.RoomRange)
      }

      // @@protoc_insertion_point(class_scope:deviceapis.device.v1.House.RoomRange)
      private static final ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange();
      }

      public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static final com.google.protobuf.Parser<RoomRange>
          PARSER = new com.google.protobuf.AbstractParser<RoomRange>() {
        @java.lang.Override
        public RoomRange 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<RoomRange> parser() {
        return PARSER;
      }

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

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int ADDRESS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object address_ = "";
    /**
     * <pre>
     * Адрес дома
     * </pre>
     *
     * <code>string address = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The address.
     */
    @java.lang.Override
    public java.lang.String getAddress() {
      java.lang.Object ref = address_;
      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();
        address_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Адрес дома
     * </pre>
     *
     * <code>string address = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for address.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAddressBytes() {
      java.lang.Object ref = address_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        address_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PREFIX_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object prefix_ = "";
    /**
     * <pre>
     * Номер дома (подъезда)
     * </pre>
     *
     * <code>string prefix = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The prefix.
     */
    @java.lang.Override
    public java.lang.String getPrefix() {
      java.lang.Object ref = prefix_;
      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();
        prefix_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Номер дома (подъезда)
     * </pre>
     *
     * <code>string prefix = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for prefix.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPrefixBytes() {
      java.lang.Object ref = prefix_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        prefix_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ROOM_RANGE_FIELD_NUMBER = 3;
    private ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange roomRange_;
    /**
     * <pre>
     * Диапазон квартир.
     * Если не задан, то устройство позволяет набор любой квартиры
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
     * @return Whether the roomRange field is set.
     */
    @java.lang.Override
    public boolean hasRoomRange() {
      return roomRange_ != null;
    }
    /**
     * <pre>
     * Диапазон квартир.
     * Если не задан, то устройство позволяет набор любой квартиры
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
     * @return The roomRange.
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange getRoomRange() {
      return roomRange_ == null ? ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.getDefaultInstance() : roomRange_;
    }
    /**
     * <pre>
     * Диапазон квартир.
     * Если не задан, то устройство позволяет набор любой квартиры
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRangeOrBuilder getRoomRangeOrBuilder() {
      return roomRange_ == null ? ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.getDefaultInstance() : roomRange_;
    }

    public static final int SIP_SERVER_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object sipServer_ = "";
    /**
     * <pre>
     * Адрес Sip сервера.
     * При пустом sip_server будет использован сервер SIP регистрации
     * </pre>
     *
     * <code>string sip_server = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The sipServer.
     */
    @java.lang.Override
    public java.lang.String getSipServer() {
      java.lang.Object ref = sipServer_;
      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();
        sipServer_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Адрес Sip сервера.
     * При пустом sip_server будет использован сервер SIP регистрации
     * </pre>
     *
     * <code>string sip_server = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The bytes for sipServer.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSipServerBytes() {
      java.lang.Object ref = sipServer_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sipServer_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int INVITE_TEMPLATE_TYPE_FIELD_NUMBER = 5;
    private int inviteTemplateType_ = 0;
    /**
     * <pre>
     * Вариант подстановки номера дома и квартиры в SIP Invite.
     * При отсутствии значения используется вариант H4LZ_F4LZ
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.InviteTemplateType invite_template_type = 5 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The enum numeric value on the wire for inviteTemplateType.
     */
    @java.lang.Override public int getInviteTemplateTypeValue() {
      return inviteTemplateType_;
    }
    /**
     * <pre>
     * Вариант подстановки номера дома и квартиры в SIP Invite.
     * При отсутствии значения используется вариант H4LZ_F4LZ
     * </pre>
     *
     * <code>.deviceapis.device.v1.House.InviteTemplateType invite_template_type = 5 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
     * @return The inviteTemplateType.
     */
    @java.lang.Override public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType getInviteTemplateType() {
      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType result = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType.forNumber(inviteTemplateType_);
      return result == null ? ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType.UNRECOGNIZED : result;
    }

    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(address_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, address_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(prefix_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, prefix_);
      }
      if (roomRange_ != null) {
        output.writeMessage(3, getRoomRange());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sipServer_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, sipServer_);
      }
      if (inviteTemplateType_ != ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType.INVITE_TEMPLATE_TYPE_UNKNOWN.getNumber()) {
        output.writeEnum(5, inviteTemplateType_);
      }
      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(address_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, address_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(prefix_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, prefix_);
      }
      if (roomRange_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getRoomRange());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sipServer_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, sipServer_);
      }
      if (inviteTemplateType_ != ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType.INVITE_TEMPLATE_TYPE_UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, inviteTemplateType_);
      }
      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.deviceapis.device.v1.DeviceapisDeviceV1Proto.House)) {
        return super.equals(obj);
      }
      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House other = (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House) obj;

      if (!getAddress()
          .equals(other.getAddress())) return false;
      if (!getPrefix()
          .equals(other.getPrefix())) return false;
      if (hasRoomRange() != other.hasRoomRange()) return false;
      if (hasRoomRange()) {
        if (!getRoomRange()
            .equals(other.getRoomRange())) return false;
      }
      if (!getSipServer()
          .equals(other.getSipServer())) return false;
      if (inviteTemplateType_ != other.inviteTemplateType_) 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) + ADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getAddress().hashCode();
      hash = (37 * hash) + PREFIX_FIELD_NUMBER;
      hash = (53 * hash) + getPrefix().hashCode();
      if (hasRoomRange()) {
        hash = (37 * hash) + ROOM_RANGE_FIELD_NUMBER;
        hash = (53 * hash) + getRoomRange().hashCode();
      }
      hash = (37 * hash) + SIP_SERVER_FIELD_NUMBER;
      hash = (53 * hash) + getSipServer().hashCode();
      hash = (37 * hash) + INVITE_TEMPLATE_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + inviteTemplateType_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.House parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.House 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>
     * Дом Gate режима
     * </pre>
     *
     * Protobuf type {@code deviceapis.device.v1.House}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:deviceapis.device.v1.House)
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.HouseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.Builder.class);
      }

      // Construct using ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        address_ = "";
        prefix_ = "";
        roomRange_ = null;
        if (roomRangeBuilder_ != null) {
          roomRangeBuilder_.dispose();
          roomRangeBuilder_ = null;
        }
        sipServer_ = "";
        inviteTemplateType_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_House_descriptor;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House getDefaultInstanceForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.getDefaultInstance();
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House build() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House buildPartial() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House result = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.address_ = address_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.prefix_ = prefix_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.roomRange_ = roomRangeBuilder_ == null
              ? roomRange_
              : roomRangeBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.sipServer_ = sipServer_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.inviteTemplateType_ = inviteTemplateType_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House) {
          return mergeFrom((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House other) {
        if (other == ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.getDefaultInstance()) return this;
        if (!other.getAddress().isEmpty()) {
          address_ = other.address_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getPrefix().isEmpty()) {
          prefix_ = other.prefix_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (other.hasRoomRange()) {
          mergeRoomRange(other.getRoomRange());
        }
        if (!other.getSipServer().isEmpty()) {
          sipServer_ = other.sipServer_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.inviteTemplateType_ != 0) {
          setInviteTemplateTypeValue(other.getInviteTemplateTypeValue());
        }
        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: {
                address_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                prefix_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getRoomRangeFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                sipServer_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 40: {
                inviteTemplateType_ = input.readEnum();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              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 address_ = "";
      /**
       * <pre>
       * Адрес дома
       * </pre>
       *
       * <code>string address = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The address.
       */
      public java.lang.String getAddress() {
        java.lang.Object ref = address_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          address_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Адрес дома
       * </pre>
       *
       * <code>string address = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for address.
       */
      public com.google.protobuf.ByteString
          getAddressBytes() {
        java.lang.Object ref = address_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          address_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Адрес дома
       * </pre>
       *
       * <code>string address = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The address to set.
       * @return This builder for chaining.
       */
      public Builder setAddress(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        address_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Адрес дома
       * </pre>
       *
       * <code>string address = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearAddress() {
        address_ = getDefaultInstance().getAddress();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Адрес дома
       * </pre>
       *
       * <code>string address = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for address to set.
       * @return This builder for chaining.
       */
      public Builder setAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        address_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object prefix_ = "";
      /**
       * <pre>
       * Номер дома (подъезда)
       * </pre>
       *
       * <code>string prefix = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The prefix.
       */
      public java.lang.String getPrefix() {
        java.lang.Object ref = prefix_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          prefix_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Номер дома (подъезда)
       * </pre>
       *
       * <code>string prefix = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for prefix.
       */
      public com.google.protobuf.ByteString
          getPrefixBytes() {
        java.lang.Object ref = prefix_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          prefix_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Номер дома (подъезда)
       * </pre>
       *
       * <code>string prefix = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The prefix to set.
       * @return This builder for chaining.
       */
      public Builder setPrefix(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        prefix_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Номер дома (подъезда)
       * </pre>
       *
       * <code>string prefix = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearPrefix() {
        prefix_ = getDefaultInstance().getPrefix();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Номер дома (подъезда)
       * </pre>
       *
       * <code>string prefix = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for prefix to set.
       * @return This builder for chaining.
       */
      public Builder setPrefixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        prefix_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange roomRange_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRangeOrBuilder> roomRangeBuilder_;
      /**
       * <pre>
       * Диапазон квартир.
       * Если не задан, то устройство позволяет набор любой квартиры
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
       * @return Whether the roomRange field is set.
       */
      public boolean hasRoomRange() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Диапазон квартир.
       * Если не задан, то устройство позволяет набор любой квартиры
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
       * @return The roomRange.
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange getRoomRange() {
        if (roomRangeBuilder_ == null) {
          return roomRange_ == null ? ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.getDefaultInstance() : roomRange_;
        } else {
          return roomRangeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Диапазон квартир.
       * Если не задан, то устройство позволяет набор любой квартиры
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
       */
      public Builder setRoomRange(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange value) {
        if (roomRangeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          roomRange_ = value;
        } else {
          roomRangeBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Диапазон квартир.
       * Если не задан, то устройство позволяет набор любой квартиры
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
       */
      public Builder setRoomRange(
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.Builder builderForValue) {
        if (roomRangeBuilder_ == null) {
          roomRange_ = builderForValue.build();
        } else {
          roomRangeBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Диапазон квартир.
       * Если не задан, то устройство позволяет набор любой квартиры
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
       */
      public Builder mergeRoomRange(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange value) {
        if (roomRangeBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0) &&
            roomRange_ != null &&
            roomRange_ != ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.getDefaultInstance()) {
            getRoomRangeBuilder().mergeFrom(value);
          } else {
            roomRange_ = value;
          }
        } else {
          roomRangeBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Диапазон квартир.
       * Если не задан, то устройство позволяет набор любой квартиры
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
       */
      public Builder clearRoomRange() {
        bitField0_ = (bitField0_ & ~0x00000004);
        roomRange_ = null;
        if (roomRangeBuilder_ != null) {
          roomRangeBuilder_.dispose();
          roomRangeBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Диапазон квартир.
       * Если не задан, то устройство позволяет набор любой квартиры
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.Builder getRoomRangeBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getRoomRangeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Диапазон квартир.
       * Если не задан, то устройство позволяет набор любой квартиры
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRangeOrBuilder getRoomRangeOrBuilder() {
        if (roomRangeBuilder_ != null) {
          return roomRangeBuilder_.getMessageOrBuilder();
        } else {
          return roomRange_ == null ?
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.getDefaultInstance() : roomRange_;
        }
      }
      /**
       * <pre>
       * Диапазон квартир.
       * Если не задан, то устройство позволяет набор любой квартиры
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.RoomRange room_range = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRangeOrBuilder> 
          getRoomRangeFieldBuilder() {
        if (roomRangeBuilder_ == null) {
          roomRangeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRange.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.RoomRangeOrBuilder>(
                  getRoomRange(),
                  getParentForChildren(),
                  isClean());
          roomRange_ = null;
        }
        return roomRangeBuilder_;
      }

      private java.lang.Object sipServer_ = "";
      /**
       * <pre>
       * Адрес Sip сервера.
       * При пустом sip_server будет использован сервер SIP регистрации
       * </pre>
       *
       * <code>string sip_server = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The sipServer.
       */
      public java.lang.String getSipServer() {
        java.lang.Object ref = sipServer_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sipServer_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Адрес Sip сервера.
       * При пустом sip_server будет использован сервер SIP регистрации
       * </pre>
       *
       * <code>string sip_server = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The bytes for sipServer.
       */
      public com.google.protobuf.ByteString
          getSipServerBytes() {
        java.lang.Object ref = sipServer_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sipServer_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Адрес Sip сервера.
       * При пустом sip_server будет использован сервер SIP регистрации
       * </pre>
       *
       * <code>string sip_server = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @param value The sipServer to set.
       * @return This builder for chaining.
       */
      public Builder setSipServer(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        sipServer_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Адрес Sip сервера.
       * При пустом sip_server будет использован сервер SIP регистрации
       * </pre>
       *
       * <code>string sip_server = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return This builder for chaining.
       */
      public Builder clearSipServer() {
        sipServer_ = getDefaultInstance().getSipServer();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Адрес Sip сервера.
       * При пустом sip_server будет использован сервер SIP регистрации
       * </pre>
       *
       * <code>string sip_server = 4 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @param value The bytes for sipServer to set.
       * @return This builder for chaining.
       */
      public Builder setSipServerBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        sipServer_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private int inviteTemplateType_ = 0;
      /**
       * <pre>
       * Вариант подстановки номера дома и квартиры в SIP Invite.
       * При отсутствии значения используется вариант H4LZ_F4LZ
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.InviteTemplateType invite_template_type = 5 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The enum numeric value on the wire for inviteTemplateType.
       */
      @java.lang.Override public int getInviteTemplateTypeValue() {
        return inviteTemplateType_;
      }
      /**
       * <pre>
       * Вариант подстановки номера дома и квартиры в SIP Invite.
       * При отсутствии значения используется вариант H4LZ_F4LZ
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.InviteTemplateType invite_template_type = 5 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @param value The enum numeric value on the wire for inviteTemplateType to set.
       * @return This builder for chaining.
       */
      public Builder setInviteTemplateTypeValue(int value) {
        inviteTemplateType_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Вариант подстановки номера дома и квартиры в SIP Invite.
       * При отсутствии значения используется вариант H4LZ_F4LZ
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.InviteTemplateType invite_template_type = 5 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return The inviteTemplateType.
       */
      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType getInviteTemplateType() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType result = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType.forNumber(inviteTemplateType_);
        return result == null ? ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Вариант подстановки номера дома и квартиры в SIP Invite.
       * При отсутствии значения используется вариант H4LZ_F4LZ
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.InviteTemplateType invite_template_type = 5 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @param value The inviteTemplateType to set.
       * @return This builder for chaining.
       */
      public Builder setInviteTemplateType(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House.InviteTemplateType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000010;
        inviteTemplateType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Вариант подстановки номера дома и квартиры в SIP Invite.
       * При отсутствии значения используется вариант H4LZ_F4LZ
       * </pre>
       *
       * <code>.deviceapis.device.v1.House.InviteTemplateType invite_template_type = 5 [(.grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { ... }</code>
       * @return This builder for chaining.
       */
      public Builder clearInviteTemplateType() {
        bitField0_ = (bitField0_ & ~0x00000010);
        inviteTemplateType_ = 0;
        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:deviceapis.device.v1.House)
    }

    // @@protoc_insertion_point(class_scope:deviceapis.device.v1.House)
    private static final ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House();
    }

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<House>
        PARSER = new com.google.protobuf.AbstractParser<House>() {
      @java.lang.Override
      public House 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<House> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.House getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SaveGateModeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:deviceapis.device.v1.SaveGateModeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The data.
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getData();
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder getDataOrBuilder();
  }
  /**
   * <pre>
   * Запрос редактирования Gate режима
   * </pre>
   *
   * Protobuf type {@code deviceapis.device.v1.SaveGateModeRequest}
   */
  public static final class SaveGateModeRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:deviceapis.device.v1.SaveGateModeRequest)
      SaveGateModeRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaveGateModeRequest.newBuilder() to construct.
    private SaveGateModeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaveGateModeRequest() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode data_;
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The data.
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getData() {
      return data_ == null ? ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance() : data_;
    }
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder getDataOrBuilder() {
      return data_ == null ? ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance() : data_;
    }

    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 (data_ != null) {
        output.writeMessage(1, getData());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest)) {
        return super.equals(obj);
      }
      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest other = (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest) obj;

      if (hasData() != other.hasData()) return false;
      if (hasData()) {
        if (!getData()
            .equals(other.getData())) 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 (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest 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>
     * Запрос редактирования Gate режима
     * </pre>
     *
     * Protobuf type {@code deviceapis.device.v1.SaveGateModeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:deviceapis.device.v1.SaveGateModeRequest)
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest.Builder.class);
      }

      // Construct using ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeRequest_descriptor;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest getDefaultInstanceForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest.getDefaultInstance();
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest build() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest buildPartial() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest result = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.data_ = dataBuilder_ == null
              ? data_
              : dataBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest) {
          return mergeFrom((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest other) {
        if (other == ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        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(
                    getDataFieldBuilder().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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode data_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the data field is set.
       */
      public boolean hasData() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The data.
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setData(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
        } else {
          dataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setData(
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeData(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode value) {
        if (dataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            data_ != null &&
            data_ != ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance()) {
            getDataBuilder().mergeFrom(value);
          } else {
            data_ = value;
          }
        } else {
          dataBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearData() {
        bitField0_ = (bitField0_ & ~0x00000001);
        data_ = null;
        if (dataBuilder_ != null) {
          dataBuilder_.dispose();
          dataBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder getDataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance() : data_;
        }
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }
      @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:deviceapis.device.v1.SaveGateModeRequest)
    }

    // @@protoc_insertion_point(class_scope:deviceapis.device.v1.SaveGateModeRequest)
    private static final ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest();
    }

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SaveGateModeRequest>
        PARSER = new com.google.protobuf.AbstractParser<SaveGateModeRequest>() {
      @java.lang.Override
      public SaveGateModeRequest 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<SaveGateModeRequest> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SaveGateModeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:deviceapis.device.v1.SaveGateModeResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     * @return The data.
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getData();
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder getDataOrBuilder();

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
     * @return The error.
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
     */
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос редактирования Gate режима
   * </pre>
   *
   * Protobuf type {@code deviceapis.device.v1.SaveGateModeResponse}
   */
  public static final class SaveGateModeResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:deviceapis.device.v1.SaveGateModeResponse)
      SaveGateModeResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaveGateModeResponse.newBuilder() to construct.
    private SaveGateModeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaveGateModeResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Builder.class);
    }

    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:deviceapis.device.v1.SaveGateModeResponse.Error)
        com.google.protobuf.MessageOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError getValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
       */
      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationErrorOrBuilder getValidationOrBuilder();

      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса
     * </pre>
     *
     * Protobuf type {@code deviceapis.device.v1.SaveGateModeResponse.Error}
     */
    public static final class Error extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:deviceapis.device.v1.SaveGateModeResponse.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.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.Builder.class);
      }

      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 {
        VALIDATION(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 VALIDATION;
            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 VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError) reason_;
        }
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError) reason_;
        }
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.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.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError) 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError) 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error)) {
          return super.equals(obj);
        }
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error other = (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error) obj;

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getValidation()
                .equals(other.getValidation())) 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) + VALIDATION_FIELD_NUMBER;
            hash = (53 * hash) + getValidation().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

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

      public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.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 deviceapis.device.v1.SaveGateModeResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:deviceapis.device.v1.SaveGateModeResponse.Error)
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.Builder.class);
        }

        // Construct using ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.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 (validationBuilder_ != null) {
            validationBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error getDefaultInstanceForType() {
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error build() {
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error buildPartial() {
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error result = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error(this);
          if (bitField0_ != 0) { buildPartial0(result); }
          buildPartialOneofs(result);
          onBuilt();
          return result;
        }

        private void buildPartial0(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              validationBuilder_ != null) {
            result.reason_ = validationBuilder_.build();
          }
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error) {
            return mergeFrom((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error other) {
          if (other == ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case VALIDATION: {
              mergeValidation(other.getValidation());
              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(
                      getValidationFieldBuilder().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.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationErrorOrBuilder> validationBuilder_;
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
         * @return Whether the validation field is set.
         */
        @java.lang.Override
        public boolean hasValidation() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
         * @return The validation.
         */
        @java.lang.Override
        public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError getValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError) reason_;
            }
            return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return validationBuilder_.getMessage();
            }
            return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            validationBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.Builder builderForValue) {
          if (validationBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            validationBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError value) {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.getDefaultInstance()) {
              reason_ = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.newBuilder((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              validationBuilder_.mergeFrom(value);
            } else {
              validationBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          if (validationBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            validationBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
         */
        public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.Builder getValidationBuilder() {
          return getValidationFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationErrorOrBuilder getValidationOrBuilder() {
          if ((reasonCase_ == 1) && (validationBuilder_ != null)) {
            return validationBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError) reason_;
            }
            return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.deviceapis.device.v1.ValidationError validation = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationErrorOrBuilder> 
            getValidationFieldBuilder() {
          if (validationBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.getDefaultInstance();
            }
            validationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationErrorOrBuilder>(
                    (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.ValidationError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return validationBuilder_;
        }
        @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:deviceapis.device.v1.SaveGateModeResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:deviceapis.device.v1.SaveGateModeResponse.Error)
      private static final ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error();
      }

      public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.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(1),
      ERROR(2),
      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 DATA;
          case 2: 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 DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getData() {
      if (typeCase_ == 1) {
         return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_;
      }
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
    }
    /**
     * <pre>
     * Настройки Gate режима
     * </pre>
     *
     * <code>.deviceapis.device.v1.GateMode data = 1;</code>
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder getDataOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_;
      }
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error getError() {
      if (typeCase_ == 2) {
         return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error) type_;
      }
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 2) {
         return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error) type_;
      }
      return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.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 (typeCase_ == 1) {
        output.writeMessage(1, (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_);
      }
      if (typeCase_ == 2) {
        output.writeMessage(2, (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error) 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse)) {
        return super.equals(obj);
      }
      ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse other = (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse) obj;

      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getData()
              .equals(other.getData())) return false;
          break;
        case 2:
          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();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + DATA_FIELD_NUMBER;
          hash = (53 * hash) + getData().hashCode();
          break;
        case 2:
          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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse 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>
     * Ответ на запрос редактирования Gate режима
     * </pre>
     *
     * Protobuf type {@code deviceapis.device.v1.SaveGateModeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:deviceapis.device.v1.SaveGateModeResponse)
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.class, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Builder.class);
      }

      // Construct using ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        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.deviceapis.device.v1.DeviceapisDeviceV1Proto.internal_static_deviceapis_device_v1_SaveGateModeResponse_descriptor;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse getDefaultInstanceForType() {
        return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.getDefaultInstance();
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse build() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse buildPartial() {
        ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse result = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            dataBuilder_ != null) {
          result.type_ = dataBuilder_.build();
        }
        if (typeCase_ == 2 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse) {
          return mergeFrom((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse other) {
        if (other == ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.getDefaultInstance()) return this;
        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(
                    getDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 1;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getErrorFieldBuilder().getBuilder(),
                    extensionRegistry);
                typeCase_ = 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 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.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder> dataBuilder_;
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode getData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_;
          }
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
        } else {
          if (typeCase_ == 1) {
            return dataBuilder_.getMessage();
          }
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public Builder setData(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public Builder setData(
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder builderForValue) {
        if (dataBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public Builder mergeData(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode value) {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1 &&
              type_ != ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance()) {
            type_ = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.newBuilder((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 1) {
            dataBuilder_.mergeFrom(value);
          } else {
            dataBuilder_.setMessage(value);
          }
        }
        typeCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 1) {
            typeCase_ = 0;
            type_ = null;
          }
          dataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder getDataBuilder() {
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder getDataOrBuilder() {
        if ((typeCase_ == 1) && (dataBuilder_ != null)) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 1) {
            return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_;
          }
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Настройки Gate режима
       * </pre>
       *
       * <code>.deviceapis.device.v1.GateMode data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          if (!(typeCase_ == 1)) {
            type_ = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.getDefaultInstance();
          }
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateModeOrBuilder>(
                  (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.GateMode) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 1;
        onChanged();
        return dataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.ErrorOrBuilder> errorBuilder_;
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
       * @return Whether the error field is set.
       */
      @java.lang.Override
      public boolean hasError() {
        return typeCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
       * @return The error.
       */
      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error getError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error) type_;
          }
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.getDefaultInstance();
        } else {
          if (typeCase_ == 2) {
            return errorBuilder_.getMessage();
          }
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
       */
      public Builder setError(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error value) {
        if (errorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          type_ = value;
          onChanged();
        } else {
          errorBuilder_.setMessage(value);
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.Builder builderForValue) {
        if (errorBuilder_ == null) {
          type_ = builderForValue.build();
          onChanged();
        } else {
          errorBuilder_.setMessage(builderForValue.build());
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error value) {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2 &&
              type_ != ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.getDefaultInstance()) {
            type_ = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.newBuilder((ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error) type_)
                .mergeFrom(value).buildPartial();
          } else {
            type_ = value;
          }
          onChanged();
        } else {
          if (typeCase_ == 2) {
            errorBuilder_.mergeFrom(value);
          } else {
            errorBuilder_.setMessage(value);
          }
        }
        typeCase_ = 2;
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
       */
      public Builder clearError() {
        if (errorBuilder_ == null) {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
            onChanged();
          }
        } else {
          if (typeCase_ == 2) {
            typeCase_ = 0;
            type_ = null;
          }
          errorBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
       */
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.Builder getErrorBuilder() {
        return getErrorFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.ErrorOrBuilder getErrorOrBuilder() {
        if ((typeCase_ == 2) && (errorBuilder_ != null)) {
          return errorBuilder_.getMessageOrBuilder();
        } else {
          if (typeCase_ == 2) {
            return (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error) type_;
          }
          return ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.deviceapis.device.v1.SaveGateModeResponse.Error error = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.ErrorOrBuilder> 
          getErrorFieldBuilder() {
        if (errorBuilder_ == null) {
          if (!(typeCase_ == 2)) {
            type_ = ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.getDefaultInstance();
          }
          errorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error.Builder, ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.ErrorOrBuilder>(
                  (ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse.Error) type_,
                  getParentForChildren(),
                  isClean());
          type_ = null;
        }
        typeCase_ = 2;
        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:deviceapis.device.v1.SaveGateModeResponse)
    }

    // @@protoc_insertion_point(class_scope:deviceapis.device.v1.SaveGateModeResponse)
    private static final ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse();
    }

    public static ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SaveGateModeResponse>
        PARSER = new com.google.protobuf.AbstractParser<SaveGateModeResponse>() {
      @java.lang.Override
      public SaveGateModeResponse 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<SaveGateModeResponse> parser() {
      return PARSER;
    }

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

    @java.lang.Override
    public ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.SaveGateModeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_deviceapis_device_v1_GateMode_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_deviceapis_device_v1_GateMode_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_deviceapis_device_v1_GetGateModeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_deviceapis_device_v1_GetGateModeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_deviceapis_device_v1_GetGateModeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_deviceapis_device_v1_GetGateModeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_deviceapis_device_v1_House_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_deviceapis_device_v1_House_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_deviceapis_device_v1_House_RoomRange_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_deviceapis_device_v1_House_RoomRange_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_deviceapis_device_v1_SaveGateModeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_deviceapis_device_v1_SaveGateModeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_deviceapis_device_v1_SaveGateModeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_deviceapis_device_v1_SaveGateModeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n4deviceapis/device/v1/deviceapis_device" +
      "_gate_v1.proto\022\024deviceapis.device.v1\0326de" +
      "viceapis/device/v1/deviceapis_device_com" +
      "mon_v1.proto\032\034google/api/annotations.pro" +
      "to\032\037google/api/field_behavior.proto\032.pro" +
      "toc-gen-openapiv2/options/annotations.pr" +
      "oto\"f\n\010GateMode\022\"\n\017is_gate_mode_on\030\001 \001(\010" +
      "B\t\222A\006J\004true\0226\n\006houses\030\002 \003(\0132\033.deviceapis" +
      ".device.v1.HouseB\t\222A\006\240\001d\250\001\001\"\024\n\022GetGateMo" +
      "deRequest\"M\n\023GetGateModeResponse\022.\n\004data" +
      "\030\001 \001(\0132\036.deviceapis.device.v1.GateModeH\000" +
      "B\006\n\004type\"\272\003\n\005House\022\024\n\007address\030\001 \001(\tB\003\340A\002" +
      "\022\023\n\006prefix\030\002 \001(\tB\003\340A\002\0229\n\nroom_range\030\003 \001(" +
      "\0132%.deviceapis.device.v1.House.RoomRange" +
      "\022+\n\nsip_server\030\004 \001(\tB\027\222A\024J\022\"sip.acme.io:" +
      "5060\"\022\\\n\024invite_template_type\030\005 \001(\0162..de" +
      "viceapis.device.v1.House.InviteTemplateT" +
      "ypeB\016\222A\013J\tH4LZ_F4LZ\032_\n\tRoomRange\022(\n\021firs" +
      "t_room_number\030\001 \001(\tB\r\222A\007J\005\"234\"\340A\002\022(\n\020la" +
      "st_room_number\030\002 \001(\tB\016\222A\010J\006\"1234\"\340A\002\"_\n\022" +
      "InviteTemplateType\022 \n\034INVITE_TEMPLATE_TY" +
      "PE_UNKNOWN\020\000\022\r\n\tH4LZ_F4LZ\020\001\022\013\n\007H4LZ_F4\020\002" +
      "\022\013\n\007H4_F4LZ\020\003\"H\n\023SaveGateModeRequest\0221\n\004" +
      "data\030\001 \001(\0132\036.deviceapis.device.v1.GateMo" +
      "deB\003\340A\002\"\341\001\n\024SaveGateModeResponse\022.\n\004data" +
      "\030\001 \001(\0132\036.deviceapis.device.v1.GateModeH\000" +
      "\022A\n\005error\030\002 \001(\01320.deviceapis.device.v1.S" +
      "aveGateModeResponse.ErrorH\000\032N\n\005Error\022;\n\n" +
      "validation\030\001 \001(\0132%.deviceapis.device.v1." +
      "ValidationErrorH\000B\010\n\006reasonB\006\n\004type2\245\002\n\017" +
      "GateModeService\022\204\001\n\013GetGateMode\022(.device" +
      "apis.device.v1.GetGateModeRequest\032).devi" +
      "ceapis.device.v1.GetGateModeResponse\" \202\323" +
      "\344\223\002\032\022\030/device/api/v1/gate/mode\022\212\001\n\014SaveG" +
      "ateMode\022).deviceapis.device.v1.SaveGateM" +
      "odeRequest\032*.deviceapis.device.v1.SaveGa" +
      "teModeResponse\"#\202\323\344\223\002\035\"\030/device/api/v1/g" +
      "ate/mode:\001*B\257\001\n\027ru.deviceapis.device.v1B" +
      "\027DeviceapisDeviceV1ProtoH\003P\000Z\025/deviceapi" +
      "s_device_v1\330\001\001\370\001\001\242\002\022DEVICEAPISDEVICEV1\252\002" +
      "\024Deviceapis.Device.V1\312\002\024Deviceapis\\Devic" +
      "e\\V1\352\002\026Deviceapis::Device::V1b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.getDescriptor(),
          com.google.api.AnnotationsProto.getDescriptor(),
          com.google.api.FieldBehaviorProto.getDescriptor(),
          grpc.gateway.protoc_gen_openapiv2.options.Annotations.getDescriptor(),
        });
    internal_static_deviceapis_device_v1_GateMode_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_deviceapis_device_v1_GateMode_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_deviceapis_device_v1_GateMode_descriptor,
        new java.lang.String[] { "IsGateModeOn", "Houses", });
    internal_static_deviceapis_device_v1_GetGateModeRequest_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_deviceapis_device_v1_GetGateModeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_deviceapis_device_v1_GetGateModeRequest_descriptor,
        new java.lang.String[] { });
    internal_static_deviceapis_device_v1_GetGateModeResponse_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_deviceapis_device_v1_GetGateModeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_deviceapis_device_v1_GetGateModeResponse_descriptor,
        new java.lang.String[] { "Data", "Type", });
    internal_static_deviceapis_device_v1_House_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_deviceapis_device_v1_House_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_deviceapis_device_v1_House_descriptor,
        new java.lang.String[] { "Address", "Prefix", "RoomRange", "SipServer", "InviteTemplateType", });
    internal_static_deviceapis_device_v1_House_RoomRange_descriptor =
      internal_static_deviceapis_device_v1_House_descriptor.getNestedTypes().get(0);
    internal_static_deviceapis_device_v1_House_RoomRange_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_deviceapis_device_v1_House_RoomRange_descriptor,
        new java.lang.String[] { "FirstRoomNumber", "LastRoomNumber", });
    internal_static_deviceapis_device_v1_SaveGateModeRequest_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_deviceapis_device_v1_SaveGateModeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_deviceapis_device_v1_SaveGateModeRequest_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_deviceapis_device_v1_SaveGateModeResponse_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_deviceapis_device_v1_SaveGateModeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_deviceapis_device_v1_SaveGateModeResponse_descriptor,
        new java.lang.String[] { "Data", "Error", "Type", });
    internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_descriptor =
      internal_static_deviceapis_device_v1_SaveGateModeResponse_descriptor.getNestedTypes().get(0);
    internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_deviceapis_device_v1_SaveGateModeResponse_Error_descriptor,
        new java.lang.String[] { "Validation", "Reason", });
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(com.google.api.FieldBehaviorProto.fieldBehavior);
    registry.add(com.google.api.AnnotationsProto.http);
    registry.add(grpc.gateway.protoc_gen_openapiv2.options.Annotations.openapiv2Field);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    ru.deviceapis.device.v1.DeviceapisDeviceV1Proto.getDescriptor();
    com.google.api.AnnotationsProto.getDescriptor();
    com.google.api.FieldBehaviorProto.getDescriptor();
    grpc.gateway.protoc_gen_openapiv2.options.Annotations.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
