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

package ru.keyapis.identity.v1;

public final class KeyapisIdentityV1Proto {
  private KeyapisIdentityV1Proto() {}
  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 AuthServiceErrorOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.identity.v1.AuthServiceError)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Ошибки авторизационного сервиса
     * </pre>
     *
     * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
     * @return Whether the auth field is set.
     */
    boolean hasAuth();
    /**
     * <pre>
     * Ошибки авторизационного сервиса
     * </pre>
     *
     * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
     * @return The auth.
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError getAuth();
    /**
     * <pre>
     * Ошибки авторизационного сервиса
     * </pre>
     *
     * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthErrorOrBuilder getAuthOrBuilder();

    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.ReasonCase getReasonCase();
  }
  /**
   * <pre>
   * Ошибки авторизационного сервиса
   * </pre>
   *
   * Protobuf type {@code keyapis.identity.v1.AuthServiceError}
   */
  public static final class AuthServiceError extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.identity.v1.AuthServiceError)
      AuthServiceErrorOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AuthServiceError.newBuilder() to construct.
    private AuthServiceError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AuthServiceError() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder.class);
    }

    public interface AuthErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.identity.v1.AuthServiceError.AuthError)
        com.google.protobuf.MessageOrBuilder {
    }
    /**
     * <pre>
     * Ошибки авторизационного сервиса
     * </pre>
     *
     * Protobuf type {@code keyapis.identity.v1.AuthServiceError.AuthError}
     */
    public static final class AuthError extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:keyapis.identity.v1.AuthServiceError.AuthError)
        AuthErrorOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use AuthError.newBuilder() to construct.
      private AuthError(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private AuthError() {
      }

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_AuthError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_AuthError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.Builder.class);
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

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

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

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

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

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

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

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * Protobuf type {@code keyapis.identity.v1.AuthServiceError.AuthError}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.AuthServiceError.AuthError)
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_AuthError_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_AuthError_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.Builder.class);
        }

        // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.newBuilder()
        private Builder() {

        }

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

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

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_AuthError_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError getDefaultInstanceForType() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError build() {
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError buildPartial() {
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError result = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError(this);
          onBuilt();
          return result;
        }

        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError) {
            return mergeFrom((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError other) {
          if (other == ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.getDefaultInstance()) return this;
          this.mergeUnknownFields(other.getUnknownFields());
          onChanged();
          return this;
        }

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

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

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


        // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.AuthServiceError.AuthError)
      }

      // @@protoc_insertion_point(class_scope:keyapis.identity.v1.AuthServiceError.AuthError)
      private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError();
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    private int reasonCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object reason_;
    public enum ReasonCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      AUTH(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 AUTH;
          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 AUTH_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Ошибки авторизационного сервиса
     * </pre>
     *
     * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
     * @return Whether the auth field is set.
     */
    @java.lang.Override
    public boolean hasAuth() {
      return reasonCase_ == 1;
    }
    /**
     * <pre>
     * Ошибки авторизационного сервиса
     * </pre>
     *
     * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
     * @return The auth.
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError getAuth() {
      if (reasonCase_ == 1) {
         return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError) reason_;
      }
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибки авторизационного сервиса
     * </pre>
     *
     * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthErrorOrBuilder getAuthOrBuilder() {
      if (reasonCase_ == 1) {
         return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError) reason_;
      }
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (reasonCase_ == 1) {
        output.writeMessage(1, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError) reason_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (reasonCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError) reason_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ошибки авторизационного сервиса
     * </pre>
     *
     * Protobuf type {@code keyapis.identity.v1.AuthServiceError}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.AuthServiceError)
        ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder.class);
      }

      // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_AuthServiceError_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getDefaultInstanceForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError result) {
        result.reasonCase_ = reasonCase_;
        result.reason_ = this.reason_;
        if (reasonCase_ == 1 &&
            authBuilder_ != null) {
          result.reason_ = authBuilder_.build();
        }
      }

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

      public Builder mergeFrom(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError other) {
        if (other == ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance()) return this;
        switch (other.getReasonCase()) {
          case AUTH: {
            mergeAuth(other.getAuth());
            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(
                    getAuthFieldBuilder().getBuilder(),
                    extensionRegistry);
                reasonCase_ = 1;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public ReasonCase
          getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

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

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthErrorOrBuilder> authBuilder_;
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
       * @return Whether the auth field is set.
       */
      @java.lang.Override
      public boolean hasAuth() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
       * @return The auth.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError getAuth() {
        if (authBuilder_ == null) {
          if (reasonCase_ == 1) {
            return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError) reason_;
          }
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.getDefaultInstance();
        } else {
          if (reasonCase_ == 1) {
            return authBuilder_.getMessage();
          }
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
       */
      public Builder setAuth(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError value) {
        if (authBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          reason_ = value;
          onChanged();
        } else {
          authBuilder_.setMessage(value);
        }
        reasonCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
       */
      public Builder setAuth(
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.Builder builderForValue) {
        if (authBuilder_ == null) {
          reason_ = builderForValue.build();
          onChanged();
        } else {
          authBuilder_.setMessage(builderForValue.build());
        }
        reasonCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
       */
      public Builder mergeAuth(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError value) {
        if (authBuilder_ == null) {
          if (reasonCase_ == 1 &&
              reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.getDefaultInstance()) {
            reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError) reason_)
                .mergeFrom(value).buildPartial();
          } else {
            reason_ = value;
          }
          onChanged();
        } else {
          if (reasonCase_ == 1) {
            authBuilder_.mergeFrom(value);
          } else {
            authBuilder_.setMessage(value);
          }
        }
        reasonCase_ = 1;
        return this;
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
       */
      public Builder clearAuth() {
        if (authBuilder_ == null) {
          if (reasonCase_ == 1) {
            reasonCase_ = 0;
            reason_ = null;
            onChanged();
          }
        } else {
          if (reasonCase_ == 1) {
            reasonCase_ = 0;
            reason_ = null;
          }
          authBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
       */
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.Builder getAuthBuilder() {
        return getAuthFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthErrorOrBuilder getAuthOrBuilder() {
        if ((reasonCase_ == 1) && (authBuilder_ != null)) {
          return authBuilder_.getMessageOrBuilder();
        } else {
          if (reasonCase_ == 1) {
            return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError) reason_;
          }
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError.AuthError auth = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthErrorOrBuilder> 
          getAuthFieldBuilder() {
        if (authBuilder_ == null) {
          if (!(reasonCase_ == 1)) {
            reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.getDefaultInstance();
          }
          authBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthErrorOrBuilder>(
                  (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.AuthError) reason_,
                  getParentForChildren(),
                  isClean());
          reason_ = null;
        }
        reasonCase_ = 1;
        onChanged();
        return authBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.AuthServiceError)
    }

    // @@protoc_insertion_point(class_scope:keyapis.identity.v1.AuthServiceError)
    private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError();
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostOauth2LoginByCodeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.identity.v1.PostOauth2LoginByCodeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор ОТП-кода
     * </pre>
     *
     * <code>string code_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The codeId.
     */
    java.lang.String getCodeId();
    /**
     * <pre>
     * Идентификатор ОТП-кода
     * </pre>
     *
     * <code>string code_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for codeId.
     */
    com.google.protobuf.ByteString
        getCodeIdBytes();

    /**
     * <pre>
     * Значение ОТП-кода
     * </pre>
     *
     * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The code.
     */
    java.lang.String getCode();
    /**
     * <pre>
     * Значение ОТП-кода
     * </pre>
     *
     * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for code.
     */
    com.google.protobuf.ByteString
        getCodeBytes();

    /**
     * <pre>
     * Идентификатор текущей попытки логина пользователя
     * </pre>
     *
     * <code>string login_challenge = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The loginChallenge.
     */
    java.lang.String getLoginChallenge();
    /**
     * <pre>
     * Идентификатор текущей попытки логина пользователя
     * </pre>
     *
     * <code>string login_challenge = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for loginChallenge.
     */
    com.google.protobuf.ByteString
        getLoginChallengeBytes();
  }
  /**
   * <pre>
   * Запрос на авторизацию по ОТП-коду
   * </pre>
   *
   * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByCodeRequest}
   */
  public static final class PostOauth2LoginByCodeRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.identity.v1.PostOauth2LoginByCodeRequest)
      PostOauth2LoginByCodeRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostOauth2LoginByCodeRequest.newBuilder() to construct.
    private PostOauth2LoginByCodeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostOauth2LoginByCodeRequest() {
      codeId_ = "";
      code_ = "";
      loginChallenge_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest.Builder.class);
    }

    public static final int CODE_ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object codeId_ = "";
    /**
     * <pre>
     * Идентификатор ОТП-кода
     * </pre>
     *
     * <code>string code_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The codeId.
     */
    @java.lang.Override
    public java.lang.String getCodeId() {
      java.lang.Object ref = codeId_;
      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();
        codeId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор ОТП-кода
     * </pre>
     *
     * <code>string code_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for codeId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCodeIdBytes() {
      java.lang.Object ref = codeId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        codeId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CODE_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object code_ = "";
    /**
     * <pre>
     * Значение ОТП-кода
     * </pre>
     *
     * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The code.
     */
    @java.lang.Override
    public java.lang.String getCode() {
      java.lang.Object ref = code_;
      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();
        code_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Значение ОТП-кода
     * </pre>
     *
     * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for code.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCodeBytes() {
      java.lang.Object ref = code_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        code_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOGIN_CHALLENGE_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object loginChallenge_ = "";
    /**
     * <pre>
     * Идентификатор текущей попытки логина пользователя
     * </pre>
     *
     * <code>string login_challenge = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The loginChallenge.
     */
    @java.lang.Override
    public java.lang.String getLoginChallenge() {
      java.lang.Object ref = loginChallenge_;
      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();
        loginChallenge_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор текущей попытки логина пользователя
     * </pre>
     *
     * <code>string login_challenge = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for loginChallenge.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLoginChallengeBytes() {
      java.lang.Object ref = loginChallenge_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        loginChallenge_ = 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(codeId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, codeId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(code_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, code_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(loginChallenge_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, loginChallenge_);
      }
      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(codeId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, codeId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(code_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, code_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(loginChallenge_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, loginChallenge_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getCodeId()
          .equals(other.getCodeId())) return false;
      if (!getCode()
          .equals(other.getCode())) return false;
      if (!getLoginChallenge()
          .equals(other.getLoginChallenge())) 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) + CODE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getCodeId().hashCode();
      hash = (37 * hash) + CODE_FIELD_NUMBER;
      hash = (53 * hash) + getCode().hashCode();
      hash = (37 * hash) + LOGIN_CHALLENGE_FIELD_NUMBER;
      hash = (53 * hash) + getLoginChallenge().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос на авторизацию по ОТП-коду
     * </pre>
     *
     * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByCodeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.PostOauth2LoginByCodeRequest)
        ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest.Builder.class);
      }

      // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest getDefaultInstanceForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest.getDefaultInstance();
      }

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

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest buildPartial() {
        ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest result = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.codeId_ = codeId_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.code_ = code_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.loginChallenge_ = loginChallenge_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest other) {
        if (other == ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest.getDefaultInstance()) return this;
        if (!other.getCodeId().isEmpty()) {
          codeId_ = other.codeId_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getCode().isEmpty()) {
          code_ = other.code_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getLoginChallenge().isEmpty()) {
          loginChallenge_ = other.loginChallenge_;
          bitField0_ |= 0x00000004;
          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: {
                codeId_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                code_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                loginChallenge_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object codeId_ = "";
      /**
       * <pre>
       * Идентификатор ОТП-кода
       * </pre>
       *
       * <code>string code_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The codeId.
       */
      public java.lang.String getCodeId() {
        java.lang.Object ref = codeId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          codeId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор ОТП-кода
       * </pre>
       *
       * <code>string code_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for codeId.
       */
      public com.google.protobuf.ByteString
          getCodeIdBytes() {
        java.lang.Object ref = codeId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          codeId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор ОТП-кода
       * </pre>
       *
       * <code>string code_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The codeId to set.
       * @return This builder for chaining.
       */
      public Builder setCodeId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        codeId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор ОТП-кода
       * </pre>
       *
       * <code>string code_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearCodeId() {
        codeId_ = getDefaultInstance().getCodeId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор ОТП-кода
       * </pre>
       *
       * <code>string code_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for codeId to set.
       * @return This builder for chaining.
       */
      public Builder setCodeIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        codeId_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private java.lang.Object code_ = "";
      /**
       * <pre>
       * Значение ОТП-кода
       * </pre>
       *
       * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The code.
       */
      public java.lang.String getCode() {
        java.lang.Object ref = code_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          code_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Значение ОТП-кода
       * </pre>
       *
       * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for code.
       */
      public com.google.protobuf.ByteString
          getCodeBytes() {
        java.lang.Object ref = code_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          code_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Значение ОТП-кода
       * </pre>
       *
       * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The code to set.
       * @return This builder for chaining.
       */
      public Builder setCode(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        code_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение ОТП-кода
       * </pre>
       *
       * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearCode() {
        code_ = getDefaultInstance().getCode();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Значение ОТП-кода
       * </pre>
       *
       * <code>string code = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for code to set.
       * @return This builder for chaining.
       */
      public Builder setCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        code_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object loginChallenge_ = "";
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The loginChallenge.
       */
      public java.lang.String getLoginChallenge() {
        java.lang.Object ref = loginChallenge_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          loginChallenge_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for loginChallenge.
       */
      public com.google.protobuf.ByteString
          getLoginChallengeBytes() {
        java.lang.Object ref = loginChallenge_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          loginChallenge_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The loginChallenge to set.
       * @return This builder for chaining.
       */
      public Builder setLoginChallenge(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        loginChallenge_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearLoginChallenge() {
        loginChallenge_ = getDefaultInstance().getLoginChallenge();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for loginChallenge to set.
       * @return This builder for chaining.
       */
      public Builder setLoginChallengeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        loginChallenge_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.PostOauth2LoginByCodeRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.identity.v1.PostOauth2LoginByCodeRequest)
    private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest();
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostOauth2LoginByCodeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.identity.v1.PostOauth2LoginByCodeResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error error = 1;</code>
     * @return The error.
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error error = 1;</code>
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос об авторизации пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByCodeResponse}
   */
  public static final class PostOauth2LoginByCodeResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.identity.v1.PostOauth2LoginByCodeResponse)
      PostOauth2LoginByCodeResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostOauth2LoginByCodeResponse.newBuilder() to construct.
    private PostOauth2LoginByCodeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostOauth2LoginByCodeResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Builder.class);
    }

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

      /**
       * <pre>
       * Ошибка отп-кода
       * </pre>
       *
       * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
       * @return Whether the otpCode field is set.
       */
      boolean hasOtpCode();
      /**
       * <pre>
       * Ошибка отп-кода
       * </pre>
       *
       * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
       * @return The otpCode.
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error getOtpCode();
      /**
       * <pre>
       * Ошибка отп-кода
       * </pre>
       *
       * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.ErrorOrBuilder getOtpCodeOrBuilder();

      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       * @return Whether the sso field is set.
       */
      boolean hasSso();
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       * @return The sso.
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError getSso();
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder getSsoOrBuilder();

      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       * @return Whether the key field is set.
       */
      boolean hasKey();
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       * @return The key.
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError getKey();
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder getKeyOrBuilder();

      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       * @return Whether the authService field is set.
       */
      boolean hasAuthService();
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       * @return The authService.
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getAuthService();
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder getAuthServiceOrBuilder();

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

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.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 {
        OTP_CODE(1),
        SSO(2),
        KEY(3),
        AUTH_SERVICE(4),
        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 OTP_CODE;
            case 2: return SSO;
            case 3: return KEY;
            case 4: return AUTH_SERVICE;
            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 OTP_CODE_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка отп-кода
       * </pre>
       *
       * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
       * @return Whether the otpCode field is set.
       */
      @java.lang.Override
      public boolean hasOtpCode() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка отп-кода
       * </pre>
       *
       * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
       * @return The otpCode.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error getOtpCode() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка отп-кода
       * </pre>
       *
       * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.ErrorOrBuilder getOtpCodeOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.getDefaultInstance();
      }

      public static final int SSO_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       * @return Whether the sso field is set.
       */
      @java.lang.Override
      public boolean hasSso() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       * @return The sso.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError getSso() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder getSsoOrBuilder() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
      }

      public static final int KEY_FIELD_NUMBER = 3;
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       * @return Whether the key field is set.
       */
      @java.lang.Override
      public boolean hasKey() {
        return reasonCase_ == 3;
      }
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       * @return The key.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError getKey() {
        if (reasonCase_ == 3) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder getKeyOrBuilder() {
        if (reasonCase_ == 3) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
      }

      public static final int AUTH_SERVICE_FIELD_NUMBER = 4;
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       * @return Whether the authService field is set.
       */
      @java.lang.Override
      public boolean hasAuthService() {
        return reasonCase_ == 4;
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       * @return The authService.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getAuthService() {
        if (reasonCase_ == 4) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder getAuthServiceOrBuilder() {
        if (reasonCase_ == 4) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error) reason_);
        }
        if (reasonCase_ == 2) {
          output.writeMessage(2, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_);
        }
        if (reasonCase_ == 3) {
          output.writeMessage(3, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_);
        }
        if (reasonCase_ == 4) {
          output.writeMessage(4, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error) reason_);
        }
        if (reasonCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_);
        }
        if (reasonCase_ == 3) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_);
        }
        if (reasonCase_ == 4) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getOtpCode()
                .equals(other.getOtpCode())) return false;
            break;
          case 2:
            if (!getSso()
                .equals(other.getSso())) return false;
            break;
          case 3:
            if (!getKey()
                .equals(other.getKey())) return false;
            break;
          case 4:
            if (!getAuthService()
                .equals(other.getAuthService())) 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) + OTP_CODE_FIELD_NUMBER;
            hash = (53 * hash) + getOtpCode().hashCode();
            break;
          case 2:
            hash = (37 * hash) + SSO_FIELD_NUMBER;
            hash = (53 * hash) + getSso().hashCode();
            break;
          case 3:
            hash = (37 * hash) + KEY_FIELD_NUMBER;
            hash = (53 * hash) + getKey().hashCode();
            break;
          case 4:
            hash = (37 * hash) + AUTH_SERVICE_FIELD_NUMBER;
            hash = (53 * hash) + getAuthService().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка запроса авторизации пользователя
       * </pre>
       *
       * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error)
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.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 (otpCodeBuilder_ != null) {
            otpCodeBuilder_.clear();
          }
          if (ssoBuilder_ != null) {
            ssoBuilder_.clear();
          }
          if (keyBuilder_ != null) {
            keyBuilder_.clear();
          }
          if (authServiceBuilder_ != null) {
            authServiceBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error build() {
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

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

        private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              otpCodeBuilder_ != null) {
            result.reason_ = otpCodeBuilder_.build();
          }
          if (reasonCase_ == 2 &&
              ssoBuilder_ != null) {
            result.reason_ = ssoBuilder_.build();
          }
          if (reasonCase_ == 3 &&
              keyBuilder_ != null) {
            result.reason_ = keyBuilder_.build();
          }
          if (reasonCase_ == 4 &&
              authServiceBuilder_ != null) {
            result.reason_ = authServiceBuilder_.build();
          }
        }

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

        public Builder mergeFrom(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error other) {
          if (other == ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case OTP_CODE: {
              mergeOtpCode(other.getOtpCode());
              break;
            }
            case SSO: {
              mergeSso(other.getSso());
              break;
            }
            case KEY: {
              mergeKey(other.getKey());
              break;
            }
            case AUTH_SERVICE: {
              mergeAuthService(other.getAuthService());
              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(
                      getOtpCodeFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getSsoFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 2;
                  break;
                } // case 18
                case 26: {
                  input.readMessage(
                      getKeyFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 3;
                  break;
                } // case 26
                case 34: {
                  input.readMessage(
                      getAuthServiceFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 4;
                  break;
                } // case 34
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

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

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.ErrorOrBuilder> otpCodeBuilder_;
        /**
         * <pre>
         * Ошибка отп-кода
         * </pre>
         *
         * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
         * @return Whether the otpCode field is set.
         */
        @java.lang.Override
        public boolean hasOtpCode() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка отп-кода
         * </pre>
         *
         * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
         * @return The otpCode.
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error getOtpCode() {
          if (otpCodeBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return otpCodeBuilder_.getMessage();
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка отп-кода
         * </pre>
         *
         * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
         */
        public Builder setOtpCode(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error value) {
          if (otpCodeBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            otpCodeBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка отп-кода
         * </pre>
         *
         * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
         */
        public Builder setOtpCode(
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.Builder builderForValue) {
          if (otpCodeBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            otpCodeBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка отп-кода
         * </pre>
         *
         * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
         */
        public Builder mergeOtpCode(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error value) {
          if (otpCodeBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.getDefaultInstance()) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              otpCodeBuilder_.mergeFrom(value);
            } else {
              otpCodeBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка отп-кода
         * </pre>
         *
         * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
         */
        public Builder clearOtpCode() {
          if (otpCodeBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            otpCodeBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка отп-кода
         * </pre>
         *
         * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
         */
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.Builder getOtpCodeBuilder() {
          return getOtpCodeFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка отп-кода
         * </pre>
         *
         * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.ErrorOrBuilder getOtpCodeOrBuilder() {
          if ((reasonCase_ == 1) && (otpCodeBuilder_ != null)) {
            return otpCodeBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка отп-кода
         * </pre>
         *
         * <code>.keyapis.identity.v1.OtpCode.Error otp_code = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.ErrorOrBuilder> 
            getOtpCodeFieldBuilder() {
          if (otpCodeBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.getDefaultInstance();
            }
            otpCodeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.ErrorOrBuilder>(
                    (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.OtpCode.Error) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return otpCodeBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder> ssoBuilder_;
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         * @return Whether the sso field is set.
         */
        @java.lang.Override
        public boolean hasSso() {
          return reasonCase_ == 2;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         * @return The sso.
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError getSso() {
          if (ssoBuilder_ == null) {
            if (reasonCase_ == 2) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
          } else {
            if (reasonCase_ == 2) {
              return ssoBuilder_.getMessage();
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public Builder setSso(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError value) {
          if (ssoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            ssoBuilder_.setMessage(value);
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public Builder setSso(
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder builderForValue) {
          if (ssoBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            ssoBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public Builder mergeSso(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError value) {
          if (ssoBuilder_ == null) {
            if (reasonCase_ == 2 &&
                reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance()) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 2) {
              ssoBuilder_.mergeFrom(value);
            } else {
              ssoBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public Builder clearSso() {
          if (ssoBuilder_ == null) {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
            }
            ssoBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder getSsoBuilder() {
          return getSsoFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder getSsoOrBuilder() {
          if ((reasonCase_ == 2) && (ssoBuilder_ != null)) {
            return ssoBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 2) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder> 
            getSsoFieldBuilder() {
          if (ssoBuilder_ == null) {
            if (!(reasonCase_ == 2)) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
            }
            ssoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder>(
                    (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 2;
          onChanged();
          return ssoBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder> keyBuilder_;
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         * @return Whether the key field is set.
         */
        @java.lang.Override
        public boolean hasKey() {
          return reasonCase_ == 3;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         * @return The key.
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError getKey() {
          if (keyBuilder_ == null) {
            if (reasonCase_ == 3) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
          } else {
            if (reasonCase_ == 3) {
              return keyBuilder_.getMessage();
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public Builder setKey(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError value) {
          if (keyBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            keyBuilder_.setMessage(value);
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public Builder setKey(
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder builderForValue) {
          if (keyBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            keyBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public Builder mergeKey(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError value) {
          if (keyBuilder_ == null) {
            if (reasonCase_ == 3 &&
                reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance()) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 3) {
              keyBuilder_.mergeFrom(value);
            } else {
              keyBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public Builder clearKey() {
          if (keyBuilder_ == null) {
            if (reasonCase_ == 3) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 3) {
              reasonCase_ = 0;
              reason_ = null;
            }
            keyBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder getKeyBuilder() {
          return getKeyFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder getKeyOrBuilder() {
          if ((reasonCase_ == 3) && (keyBuilder_ != null)) {
            return keyBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 3) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder> 
            getKeyFieldBuilder() {
          if (keyBuilder_ == null) {
            if (!(reasonCase_ == 3)) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
            }
            keyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder>(
                    (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 3;
          onChanged();
          return keyBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder> authServiceBuilder_;
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         * @return Whether the authService field is set.
         */
        @java.lang.Override
        public boolean hasAuthService() {
          return reasonCase_ == 4;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         * @return The authService.
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getAuthService() {
          if (authServiceBuilder_ == null) {
            if (reasonCase_ == 4) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
          } else {
            if (reasonCase_ == 4) {
              return authServiceBuilder_.getMessage();
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public Builder setAuthService(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError value) {
          if (authServiceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            authServiceBuilder_.setMessage(value);
          }
          reasonCase_ = 4;
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public Builder setAuthService(
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder builderForValue) {
          if (authServiceBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            authServiceBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 4;
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public Builder mergeAuthService(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError value) {
          if (authServiceBuilder_ == null) {
            if (reasonCase_ == 4 &&
                reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance()) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 4) {
              authServiceBuilder_.mergeFrom(value);
            } else {
              authServiceBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 4;
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public Builder clearAuthService() {
          if (authServiceBuilder_ == null) {
            if (reasonCase_ == 4) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 4) {
              reasonCase_ = 0;
              reason_ = null;
            }
            authServiceBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder getAuthServiceBuilder() {
          return getAuthServiceFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder getAuthServiceOrBuilder() {
          if ((reasonCase_ == 4) && (authServiceBuilder_ != null)) {
            return authServiceBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 4) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder> 
            getAuthServiceFieldBuilder() {
          if (authServiceBuilder_ == null) {
            if (!(reasonCase_ == 4)) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
            }
            authServiceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder>(
                    (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 4;
          onChanged();
          return authServiceBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error)
      private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error();
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.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 {
      ERROR(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 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 ERROR_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error error = 1;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error getError() {
      if (typeCase_ == 1) {
         return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error) type_;
      }
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByCodeResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error) type_;
      }
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.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.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.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.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос об авторизации пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByCodeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.PostOauth2LoginByCodeResponse)
        ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.Builder.class);
      }

      // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse getDefaultInstanceForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

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

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.PostOauth2LoginByCodeResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.identity.v1.PostOauth2LoginByCodeResponse)
    private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse();
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByCodeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostOauth2LoginByPasswordRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.identity.v1.PostOauth2LoginByPasswordRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 1;</code>
     * @return Whether the phoneNumber field is set.
     */
    boolean hasPhoneNumber();
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 1;</code>
     * @return The phoneNumber.
     */
    java.lang.String getPhoneNumber();
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 1;</code>
     * @return The bytes for phoneNumber.
     */
    com.google.protobuf.ByteString
        getPhoneNumberBytes();

    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 2;</code>
     * @return Whether the email field is set.
     */
    boolean hasEmail();
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 2;</code>
     * @return The email.
     */
    java.lang.String getEmail();
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 2;</code>
     * @return The bytes for email.
     */
    com.google.protobuf.ByteString
        getEmailBytes();

    /**
     * <pre>
     * Логин
     * </pre>
     *
     * <code>string login = 3;</code>
     * @return Whether the login field is set.
     */
    boolean hasLogin();
    /**
     * <pre>
     * Логин
     * </pre>
     *
     * <code>string login = 3;</code>
     * @return The login.
     */
    java.lang.String getLogin();
    /**
     * <pre>
     * Логин
     * </pre>
     *
     * <code>string login = 3;</code>
     * @return The bytes for login.
     */
    com.google.protobuf.ByteString
        getLoginBytes();

    /**
     * <pre>
     * Пароль
     * </pre>
     *
     * <code>string password = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The password.
     */
    java.lang.String getPassword();
    /**
     * <pre>
     * Пароль
     * </pre>
     *
     * <code>string password = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for password.
     */
    com.google.protobuf.ByteString
        getPasswordBytes();

    /**
     * <pre>
     * Ответ на капчу
     * </pre>
     *
     * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return Whether the captchaAnswer field is set.
     */
    boolean hasCaptchaAnswer();
    /**
     * <pre>
     * Ответ на капчу
     * </pre>
     *
     * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return The captchaAnswer.
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer getCaptchaAnswer();
    /**
     * <pre>
     * Ответ на капчу
     * </pre>
     *
     * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswerOrBuilder getCaptchaAnswerOrBuilder();

    /**
     * <pre>
     * Идентификатор текущей попытки логина пользователя
     * </pre>
     *
     * <code>string login_challenge = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The loginChallenge.
     */
    java.lang.String getLoginChallenge();
    /**
     * <pre>
     * Идентификатор текущей попытки логина пользователя
     * </pre>
     *
     * <code>string login_challenge = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for loginChallenge.
     */
    com.google.protobuf.ByteString
        getLoginChallengeBytes();

    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Запрос на авторизацию по паролю
   * </pre>
   *
   * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByPasswordRequest}
   */
  public static final class PostOauth2LoginByPasswordRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.identity.v1.PostOauth2LoginByPasswordRequest)
      PostOauth2LoginByPasswordRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostOauth2LoginByPasswordRequest.newBuilder() to construct.
    private PostOauth2LoginByPasswordRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostOauth2LoginByPasswordRequest() {
      password_ = "";
      loginChallenge_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest.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 {
      PHONE_NUMBER(1),
      EMAIL(2),
      LOGIN(3),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return PHONE_NUMBER;
          case 2: return EMAIL;
          case 3: return LOGIN;
          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 PHONE_NUMBER_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 1;</code>
     * @return Whether the phoneNumber field is set.
     */
    public boolean hasPhoneNumber() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 1;</code>
     * @return The phoneNumber.
     */
    public java.lang.String getPhoneNumber() {
      java.lang.Object ref = "";
      if (typeCase_ == 1) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (typeCase_ == 1) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 1;</code>
     * @return The bytes for phoneNumber.
     */
    public com.google.protobuf.ByteString
        getPhoneNumberBytes() {
      java.lang.Object ref = "";
      if (typeCase_ == 1) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (typeCase_ == 1) {
          type_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EMAIL_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 2;</code>
     * @return Whether the email field is set.
     */
    public boolean hasEmail() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 2;</code>
     * @return The email.
     */
    public java.lang.String getEmail() {
      java.lang.Object ref = "";
      if (typeCase_ == 2) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (typeCase_ == 2) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 2;</code>
     * @return The bytes for email.
     */
    public com.google.protobuf.ByteString
        getEmailBytes() {
      java.lang.Object ref = "";
      if (typeCase_ == 2) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (typeCase_ == 2) {
          type_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LOGIN_FIELD_NUMBER = 3;
    /**
     * <pre>
     * Логин
     * </pre>
     *
     * <code>string login = 3;</code>
     * @return Whether the login field is set.
     */
    public boolean hasLogin() {
      return typeCase_ == 3;
    }
    /**
     * <pre>
     * Логин
     * </pre>
     *
     * <code>string login = 3;</code>
     * @return The login.
     */
    public java.lang.String getLogin() {
      java.lang.Object ref = "";
      if (typeCase_ == 3) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (typeCase_ == 3) {
          type_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * Логин
     * </pre>
     *
     * <code>string login = 3;</code>
     * @return The bytes for login.
     */
    public com.google.protobuf.ByteString
        getLoginBytes() {
      java.lang.Object ref = "";
      if (typeCase_ == 3) {
        ref = type_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (typeCase_ == 3) {
          type_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PASSWORD_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object password_ = "";
    /**
     * <pre>
     * Пароль
     * </pre>
     *
     * <code>string password = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The password.
     */
    @java.lang.Override
    public java.lang.String getPassword() {
      java.lang.Object ref = password_;
      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();
        password_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Пароль
     * </pre>
     *
     * <code>string password = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for password.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPasswordBytes() {
      java.lang.Object ref = password_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        password_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CAPTCHA_ANSWER_FIELD_NUMBER = 5;
    private ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer captchaAnswer_;
    /**
     * <pre>
     * Ответ на капчу
     * </pre>
     *
     * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return Whether the captchaAnswer field is set.
     */
    @java.lang.Override
    public boolean hasCaptchaAnswer() {
      return captchaAnswer_ != null;
    }
    /**
     * <pre>
     * Ответ на капчу
     * </pre>
     *
     * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     * @return The captchaAnswer.
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer getCaptchaAnswer() {
      return captchaAnswer_ == null ? ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.getDefaultInstance() : captchaAnswer_;
    }
    /**
     * <pre>
     * Ответ на капчу
     * </pre>
     *
     * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswerOrBuilder getCaptchaAnswerOrBuilder() {
      return captchaAnswer_ == null ? ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.getDefaultInstance() : captchaAnswer_;
    }

    public static final int LOGIN_CHALLENGE_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object loginChallenge_ = "";
    /**
     * <pre>
     * Идентификатор текущей попытки логина пользователя
     * </pre>
     *
     * <code>string login_challenge = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The loginChallenge.
     */
    @java.lang.Override
    public java.lang.String getLoginChallenge() {
      java.lang.Object ref = loginChallenge_;
      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();
        loginChallenge_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор текущей попытки логина пользователя
     * </pre>
     *
     * <code>string login_challenge = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for loginChallenge.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLoginChallengeBytes() {
      java.lang.Object ref = loginChallenge_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        loginChallenge_ = 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 (typeCase_ == 1) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, type_);
      }
      if (typeCase_ == 2) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, type_);
      }
      if (typeCase_ == 3) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(password_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, password_);
      }
      if (captchaAnswer_ != null) {
        output.writeMessage(5, getCaptchaAnswer());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(loginChallenge_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, loginChallenge_);
      }
      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.GeneratedMessageV3.computeStringSize(1, type_);
      }
      if (typeCase_ == 2) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, type_);
      }
      if (typeCase_ == 3) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(password_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, password_);
      }
      if (captchaAnswer_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getCaptchaAnswer());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(loginChallenge_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, loginChallenge_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getPassword()
          .equals(other.getPassword())) return false;
      if (hasCaptchaAnswer() != other.hasCaptchaAnswer()) return false;
      if (hasCaptchaAnswer()) {
        if (!getCaptchaAnswer()
            .equals(other.getCaptchaAnswer())) return false;
      }
      if (!getLoginChallenge()
          .equals(other.getLoginChallenge())) return false;
      if (!getTypeCase().equals(other.getTypeCase())) return false;
      switch (typeCase_) {
        case 1:
          if (!getPhoneNumber()
              .equals(other.getPhoneNumber())) return false;
          break;
        case 2:
          if (!getEmail()
              .equals(other.getEmail())) return false;
          break;
        case 3:
          if (!getLogin()
              .equals(other.getLogin())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PASSWORD_FIELD_NUMBER;
      hash = (53 * hash) + getPassword().hashCode();
      if (hasCaptchaAnswer()) {
        hash = (37 * hash) + CAPTCHA_ANSWER_FIELD_NUMBER;
        hash = (53 * hash) + getCaptchaAnswer().hashCode();
      }
      hash = (37 * hash) + LOGIN_CHALLENGE_FIELD_NUMBER;
      hash = (53 * hash) + getLoginChallenge().hashCode();
      switch (typeCase_) {
        case 1:
          hash = (37 * hash) + PHONE_NUMBER_FIELD_NUMBER;
          hash = (53 * hash) + getPhoneNumber().hashCode();
          break;
        case 2:
          hash = (37 * hash) + EMAIL_FIELD_NUMBER;
          hash = (53 * hash) + getEmail().hashCode();
          break;
        case 3:
          hash = (37 * hash) + LOGIN_FIELD_NUMBER;
          hash = (53 * hash) + getLogin().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Запрос на авторизацию по паролю
     * </pre>
     *
     * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByPasswordRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.PostOauth2LoginByPasswordRequest)
        ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest.Builder.class);
      }

      // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        password_ = "";
        captchaAnswer_ = null;
        if (captchaAnswerBuilder_ != null) {
          captchaAnswerBuilder_.dispose();
          captchaAnswerBuilder_ = null;
        }
        loginChallenge_ = "";
        typeCase_ = 0;
        type_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest getDefaultInstanceForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.password_ = password_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.captchaAnswer_ = captchaAnswerBuilder_ == null
              ? captchaAnswer_
              : captchaAnswerBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.loginChallenge_ = loginChallenge_;
        }
      }

      private void buildPartialOneofs(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
      }

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

      public Builder mergeFrom(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest other) {
        if (other == ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest.getDefaultInstance()) return this;
        if (!other.getPassword().isEmpty()) {
          password_ = other.password_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (other.hasCaptchaAnswer()) {
          mergeCaptchaAnswer(other.getCaptchaAnswer());
        }
        if (!other.getLoginChallenge().isEmpty()) {
          loginChallenge_ = other.loginChallenge_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        switch (other.getTypeCase()) {
          case PHONE_NUMBER: {
            typeCase_ = 1;
            type_ = other.type_;
            onChanged();
            break;
          }
          case EMAIL: {
            typeCase_ = 2;
            type_ = other.type_;
            onChanged();
            break;
          }
          case LOGIN: {
            typeCase_ = 3;
            type_ = other.type_;
            onChanged();
            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: {
                java.lang.String s = input.readStringRequireUtf8();
                typeCase_ = 1;
                type_ = s;
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                typeCase_ = 2;
                type_ = s;
                break;
              } // case 18
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                typeCase_ = 3;
                type_ = s;
                break;
              } // case 26
              case 34: {
                password_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getCaptchaAnswerFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                loginChallenge_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int typeCase_ = 0;
      private java.lang.Object type_;
      public TypeCase
          getTypeCase() {
        return TypeCase.forNumber(
            typeCase_);
      }

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

      private int bitField0_;

      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 1;</code>
       * @return Whether the phoneNumber field is set.
       */
      @java.lang.Override
      public boolean hasPhoneNumber() {
        return typeCase_ == 1;
      }
      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 1;</code>
       * @return The phoneNumber.
       */
      @java.lang.Override
      public java.lang.String getPhoneNumber() {
        java.lang.Object ref = "";
        if (typeCase_ == 1) {
          ref = type_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (typeCase_ == 1) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 1;</code>
       * @return The bytes for phoneNumber.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPhoneNumberBytes() {
        java.lang.Object ref = "";
        if (typeCase_ == 1) {
          ref = type_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (typeCase_ == 1) {
            type_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 1;</code>
       * @param value The phoneNumber to set.
       * @return This builder for chaining.
       */
      public Builder setPhoneNumber(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhoneNumber() {
        if (typeCase_ == 1) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 1;</code>
       * @param value The bytes for phoneNumber to set.
       * @return This builder for chaining.
       */
      public Builder setPhoneNumberBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        typeCase_ = 1;
        type_ = value;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 2;</code>
       * @return Whether the email field is set.
       */
      @java.lang.Override
      public boolean hasEmail() {
        return typeCase_ == 2;
      }
      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 2;</code>
       * @return The email.
       */
      @java.lang.Override
      public java.lang.String getEmail() {
        java.lang.Object ref = "";
        if (typeCase_ == 2) {
          ref = type_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (typeCase_ == 2) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 2;</code>
       * @return The bytes for email.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getEmailBytes() {
        java.lang.Object ref = "";
        if (typeCase_ == 2) {
          ref = type_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (typeCase_ == 2) {
            type_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 2;</code>
       * @param value The email to set.
       * @return This builder for chaining.
       */
      public Builder setEmail(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        typeCase_ = 2;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEmail() {
        if (typeCase_ == 2) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 2;</code>
       * @param value The bytes for email to set.
       * @return This builder for chaining.
       */
      public Builder setEmailBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        typeCase_ = 2;
        type_ = value;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * Логин
       * </pre>
       *
       * <code>string login = 3;</code>
       * @return Whether the login field is set.
       */
      @java.lang.Override
      public boolean hasLogin() {
        return typeCase_ == 3;
      }
      /**
       * <pre>
       * Логин
       * </pre>
       *
       * <code>string login = 3;</code>
       * @return The login.
       */
      @java.lang.Override
      public java.lang.String getLogin() {
        java.lang.Object ref = "";
        if (typeCase_ == 3) {
          ref = type_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (typeCase_ == 3) {
            type_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Логин
       * </pre>
       *
       * <code>string login = 3;</code>
       * @return The bytes for login.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getLoginBytes() {
        java.lang.Object ref = "";
        if (typeCase_ == 3) {
          ref = type_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (typeCase_ == 3) {
            type_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Логин
       * </pre>
       *
       * <code>string login = 3;</code>
       * @param value The login to set.
       * @return This builder for chaining.
       */
      public Builder setLogin(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        typeCase_ = 3;
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Логин
       * </pre>
       *
       * <code>string login = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLogin() {
        if (typeCase_ == 3) {
          typeCase_ = 0;
          type_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * Логин
       * </pre>
       *
       * <code>string login = 3;</code>
       * @param value The bytes for login to set.
       * @return This builder for chaining.
       */
      public Builder setLoginBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        typeCase_ = 3;
        type_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object password_ = "";
      /**
       * <pre>
       * Пароль
       * </pre>
       *
       * <code>string password = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The password.
       */
      public java.lang.String getPassword() {
        java.lang.Object ref = password_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          password_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Пароль
       * </pre>
       *
       * <code>string password = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for password.
       */
      public com.google.protobuf.ByteString
          getPasswordBytes() {
        java.lang.Object ref = password_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          password_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Пароль
       * </pre>
       *
       * <code>string password = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The password to set.
       * @return This builder for chaining.
       */
      public Builder setPassword(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        password_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Пароль
       * </pre>
       *
       * <code>string password = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearPassword() {
        password_ = getDefaultInstance().getPassword();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Пароль
       * </pre>
       *
       * <code>string password = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for password to set.
       * @return This builder for chaining.
       */
      public Builder setPasswordBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        password_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer captchaAnswer_;
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswerOrBuilder> captchaAnswerBuilder_;
      /**
       * <pre>
       * Ответ на капчу
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
       * @return Whether the captchaAnswer field is set.
       */
      public boolean hasCaptchaAnswer() {
        return ((bitField0_ & 0x00000010) != 0);
      }
      /**
       * <pre>
       * Ответ на капчу
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
       * @return The captchaAnswer.
       */
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer getCaptchaAnswer() {
        if (captchaAnswerBuilder_ == null) {
          return captchaAnswer_ == null ? ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.getDefaultInstance() : captchaAnswer_;
        } else {
          return captchaAnswerBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Ответ на капчу
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
       */
      public Builder setCaptchaAnswer(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer value) {
        if (captchaAnswerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          captchaAnswer_ = value;
        } else {
          captchaAnswerBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ответ на капчу
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
       */
      public Builder setCaptchaAnswer(
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Builder builderForValue) {
        if (captchaAnswerBuilder_ == null) {
          captchaAnswer_ = builderForValue.build();
        } else {
          captchaAnswerBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ответ на капчу
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
       */
      public Builder mergeCaptchaAnswer(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer value) {
        if (captchaAnswerBuilder_ == null) {
          if (((bitField0_ & 0x00000010) != 0) &&
            captchaAnswer_ != null &&
            captchaAnswer_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.getDefaultInstance()) {
            getCaptchaAnswerBuilder().mergeFrom(value);
          } else {
            captchaAnswer_ = value;
          }
        } else {
          captchaAnswerBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ответ на капчу
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
       */
      public Builder clearCaptchaAnswer() {
        bitField0_ = (bitField0_ & ~0x00000010);
        captchaAnswer_ = null;
        if (captchaAnswerBuilder_ != null) {
          captchaAnswerBuilder_.dispose();
          captchaAnswerBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Ответ на капчу
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
       */
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Builder getCaptchaAnswerBuilder() {
        bitField0_ |= 0x00000010;
        onChanged();
        return getCaptchaAnswerFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Ответ на капчу
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
       */
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswerOrBuilder getCaptchaAnswerOrBuilder() {
        if (captchaAnswerBuilder_ != null) {
          return captchaAnswerBuilder_.getMessageOrBuilder();
        } else {
          return captchaAnswer_ == null ?
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.getDefaultInstance() : captchaAnswer_;
        }
      }
      /**
       * <pre>
       * Ответ на капчу
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer captcha_answer = 5 [(.google.api.field_behavior) = OPTIONAL];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswerOrBuilder> 
          getCaptchaAnswerFieldBuilder() {
        if (captchaAnswerBuilder_ == null) {
          captchaAnswerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswerOrBuilder>(
                  getCaptchaAnswer(),
                  getParentForChildren(),
                  isClean());
          captchaAnswer_ = null;
        }
        return captchaAnswerBuilder_;
      }

      private java.lang.Object loginChallenge_ = "";
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The loginChallenge.
       */
      public java.lang.String getLoginChallenge() {
        java.lang.Object ref = loginChallenge_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          loginChallenge_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for loginChallenge.
       */
      public com.google.protobuf.ByteString
          getLoginChallengeBytes() {
        java.lang.Object ref = loginChallenge_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          loginChallenge_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The loginChallenge to set.
       * @return This builder for chaining.
       */
      public Builder setLoginChallenge(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        loginChallenge_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearLoginChallenge() {
        loginChallenge_ = getDefaultInstance().getLoginChallenge();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор текущей попытки логина пользователя
       * </pre>
       *
       * <code>string login_challenge = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for loginChallenge to set.
       * @return This builder for chaining.
       */
      public Builder setLoginChallengeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        loginChallenge_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.PostOauth2LoginByPasswordRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.identity.v1.PostOauth2LoginByPasswordRequest)
    private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest();
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostOauth2LoginByPasswordResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.identity.v1.PostOauth2LoginByPasswordResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error error = 1;</code>
     * @return The error.
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error error = 1;</code>
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос об авторизации по паролю пользователя
   * </pre>
   *
   * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByPasswordResponse}
   */
  public static final class PostOauth2LoginByPasswordResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.identity.v1.PostOauth2LoginByPasswordResponse)
      PostOauth2LoginByPasswordResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostOauth2LoginByPasswordResponse.newBuilder() to construct.
    private PostOauth2LoginByPasswordResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PostOauth2LoginByPasswordResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Builder.class);
    }

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

      /**
       * <pre>
       * Ошибка капчи
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
       * @return Whether the captchaAnswer field is set.
       */
      boolean hasCaptchaAnswer();
      /**
       * <pre>
       * Ошибка капчи
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
       * @return The captchaAnswer.
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error getCaptchaAnswer();
      /**
       * <pre>
       * Ошибка капчи
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.ErrorOrBuilder getCaptchaAnswerOrBuilder();

      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       * @return Whether the sso field is set.
       */
      boolean hasSso();
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       * @return The sso.
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError getSso();
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder getSsoOrBuilder();

      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       * @return Whether the key field is set.
       */
      boolean hasKey();
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       * @return The key.
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError getKey();
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder getKeyOrBuilder();

      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       * @return Whether the authService field is set.
       */
      boolean hasAuthService();
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       * @return The authService.
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getAuthService();
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder getAuthServiceOrBuilder();

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

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.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 {
        CAPTCHA_ANSWER(1),
        SSO(2),
        KEY(3),
        AUTH_SERVICE(4),
        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 CAPTCHA_ANSWER;
            case 2: return SSO;
            case 3: return KEY;
            case 4: return AUTH_SERVICE;
            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 CAPTCHA_ANSWER_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка капчи
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
       * @return Whether the captchaAnswer field is set.
       */
      @java.lang.Override
      public boolean hasCaptchaAnswer() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка капчи
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
       * @return The captchaAnswer.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error getCaptchaAnswer() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка капчи
       * </pre>
       *
       * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.ErrorOrBuilder getCaptchaAnswerOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.getDefaultInstance();
      }

      public static final int SSO_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       * @return Whether the sso field is set.
       */
      @java.lang.Override
      public boolean hasSso() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       * @return The sso.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError getSso() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка из ССО
       * </pre>
       *
       * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder getSsoOrBuilder() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
      }

      public static final int KEY_FIELD_NUMBER = 3;
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       * @return Whether the key field is set.
       */
      @java.lang.Override
      public boolean hasKey() {
        return reasonCase_ == 3;
      }
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       * @return The key.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError getKey() {
        if (reasonCase_ == 3) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибки сервисов ключа
       * </pre>
       *
       * <code>.keyapis.identity.v1.KeyError key = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder getKeyOrBuilder() {
        if (reasonCase_ == 3) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
      }

      public static final int AUTH_SERVICE_FIELD_NUMBER = 4;
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       * @return Whether the authService field is set.
       */
      @java.lang.Override
      public boolean hasAuthService() {
        return reasonCase_ == 4;
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       * @return The authService.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getAuthService() {
        if (reasonCase_ == 4) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder getAuthServiceOrBuilder() {
        if (reasonCase_ == 4) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error) reason_);
        }
        if (reasonCase_ == 2) {
          output.writeMessage(2, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_);
        }
        if (reasonCase_ == 3) {
          output.writeMessage(3, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_);
        }
        if (reasonCase_ == 4) {
          output.writeMessage(4, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error) reason_);
        }
        if (reasonCase_ == 2) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_);
        }
        if (reasonCase_ == 3) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_);
        }
        if (reasonCase_ == 4) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

        if (!getReasonCase().equals(other.getReasonCase())) return false;
        switch (reasonCase_) {
          case 1:
            if (!getCaptchaAnswer()
                .equals(other.getCaptchaAnswer())) return false;
            break;
          case 2:
            if (!getSso()
                .equals(other.getSso())) return false;
            break;
          case 3:
            if (!getKey()
                .equals(other.getKey())) return false;
            break;
          case 4:
            if (!getAuthService()
                .equals(other.getAuthService())) 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) + CAPTCHA_ANSWER_FIELD_NUMBER;
            hash = (53 * hash) + getCaptchaAnswer().hashCode();
            break;
          case 2:
            hash = (37 * hash) + SSO_FIELD_NUMBER;
            hash = (53 * hash) + getSso().hashCode();
            break;
          case 3:
            hash = (37 * hash) + KEY_FIELD_NUMBER;
            hash = (53 * hash) + getKey().hashCode();
            break;
          case 4:
            hash = (37 * hash) + AUTH_SERVICE_FIELD_NUMBER;
            hash = (53 * hash) + getAuthService().hashCode();
            break;
          case 0:
          default:
        }
        hash = (29 * hash) + getUnknownFields().hashCode();
        memoizedHashCode = hash;
        return hash;
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка запроса авторизации пользователя
       * </pre>
       *
       * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error)
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.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 (captchaAnswerBuilder_ != null) {
            captchaAnswerBuilder_.clear();
          }
          if (ssoBuilder_ != null) {
            ssoBuilder_.clear();
          }
          if (keyBuilder_ != null) {
            keyBuilder_.clear();
          }
          if (authServiceBuilder_ != null) {
            authServiceBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error build() {
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

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

        private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              captchaAnswerBuilder_ != null) {
            result.reason_ = captchaAnswerBuilder_.build();
          }
          if (reasonCase_ == 2 &&
              ssoBuilder_ != null) {
            result.reason_ = ssoBuilder_.build();
          }
          if (reasonCase_ == 3 &&
              keyBuilder_ != null) {
            result.reason_ = keyBuilder_.build();
          }
          if (reasonCase_ == 4 &&
              authServiceBuilder_ != null) {
            result.reason_ = authServiceBuilder_.build();
          }
        }

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

        public Builder mergeFrom(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error other) {
          if (other == ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case CAPTCHA_ANSWER: {
              mergeCaptchaAnswer(other.getCaptchaAnswer());
              break;
            }
            case SSO: {
              mergeSso(other.getSso());
              break;
            }
            case KEY: {
              mergeKey(other.getKey());
              break;
            }
            case AUTH_SERVICE: {
              mergeAuthService(other.getAuthService());
              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(
                      getCaptchaAnswerFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                case 18: {
                  input.readMessage(
                      getSsoFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 2;
                  break;
                } // case 18
                case 26: {
                  input.readMessage(
                      getKeyFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 3;
                  break;
                } // case 26
                case 34: {
                  input.readMessage(
                      getAuthServiceFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 4;
                  break;
                } // case 34
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

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

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.ErrorOrBuilder> captchaAnswerBuilder_;
        /**
         * <pre>
         * Ошибка капчи
         * </pre>
         *
         * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
         * @return Whether the captchaAnswer field is set.
         */
        @java.lang.Override
        public boolean hasCaptchaAnswer() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибка капчи
         * </pre>
         *
         * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
         * @return The captchaAnswer.
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error getCaptchaAnswer() {
          if (captchaAnswerBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return captchaAnswerBuilder_.getMessage();
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка капчи
         * </pre>
         *
         * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
         */
        public Builder setCaptchaAnswer(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error value) {
          if (captchaAnswerBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            captchaAnswerBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка капчи
         * </pre>
         *
         * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
         */
        public Builder setCaptchaAnswer(
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.Builder builderForValue) {
          if (captchaAnswerBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            captchaAnswerBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка капчи
         * </pre>
         *
         * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
         */
        public Builder mergeCaptchaAnswer(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error value) {
          if (captchaAnswerBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.getDefaultInstance()) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              captchaAnswerBuilder_.mergeFrom(value);
            } else {
              captchaAnswerBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибка капчи
         * </pre>
         *
         * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
         */
        public Builder clearCaptchaAnswer() {
          if (captchaAnswerBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            captchaAnswerBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка капчи
         * </pre>
         *
         * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
         */
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.Builder getCaptchaAnswerBuilder() {
          return getCaptchaAnswerFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка капчи
         * </pre>
         *
         * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.ErrorOrBuilder getCaptchaAnswerOrBuilder() {
          if ((reasonCase_ == 1) && (captchaAnswerBuilder_ != null)) {
            return captchaAnswerBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка капчи
         * </pre>
         *
         * <code>.keyapis.identity.v1.CaptchaAnswer.Error captcha_answer = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.ErrorOrBuilder> 
            getCaptchaAnswerFieldBuilder() {
          if (captchaAnswerBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.getDefaultInstance();
            }
            captchaAnswerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.ErrorOrBuilder>(
                    (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.CaptchaAnswer.Error) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return captchaAnswerBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder> ssoBuilder_;
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         * @return Whether the sso field is set.
         */
        @java.lang.Override
        public boolean hasSso() {
          return reasonCase_ == 2;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         * @return The sso.
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError getSso() {
          if (ssoBuilder_ == null) {
            if (reasonCase_ == 2) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
          } else {
            if (reasonCase_ == 2) {
              return ssoBuilder_.getMessage();
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public Builder setSso(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError value) {
          if (ssoBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            ssoBuilder_.setMessage(value);
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public Builder setSso(
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder builderForValue) {
          if (ssoBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            ssoBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public Builder mergeSso(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError value) {
          if (ssoBuilder_ == null) {
            if (reasonCase_ == 2 &&
                reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance()) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 2) {
              ssoBuilder_.mergeFrom(value);
            } else {
              ssoBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 2;
          return this;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public Builder clearSso() {
          if (ssoBuilder_ == null) {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 2) {
              reasonCase_ = 0;
              reason_ = null;
            }
            ssoBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder getSsoBuilder() {
          return getSsoFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder getSsoOrBuilder() {
          if ((reasonCase_ == 2) && (ssoBuilder_ != null)) {
            return ssoBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 2) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибка из ССО
         * </pre>
         *
         * <code>.keyapis.identity.v1.SsoError sso = 2;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder> 
            getSsoFieldBuilder() {
          if (ssoBuilder_ == null) {
            if (!(reasonCase_ == 2)) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.getDefaultInstance();
            }
            ssoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoErrorOrBuilder>(
                    (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.SsoError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 2;
          onChanged();
          return ssoBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder> keyBuilder_;
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         * @return Whether the key field is set.
         */
        @java.lang.Override
        public boolean hasKey() {
          return reasonCase_ == 3;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         * @return The key.
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError getKey() {
          if (keyBuilder_ == null) {
            if (reasonCase_ == 3) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
          } else {
            if (reasonCase_ == 3) {
              return keyBuilder_.getMessage();
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public Builder setKey(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError value) {
          if (keyBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            keyBuilder_.setMessage(value);
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public Builder setKey(
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder builderForValue) {
          if (keyBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            keyBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public Builder mergeKey(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError value) {
          if (keyBuilder_ == null) {
            if (reasonCase_ == 3 &&
                reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance()) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 3) {
              keyBuilder_.mergeFrom(value);
            } else {
              keyBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 3;
          return this;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public Builder clearKey() {
          if (keyBuilder_ == null) {
            if (reasonCase_ == 3) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 3) {
              reasonCase_ = 0;
              reason_ = null;
            }
            keyBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder getKeyBuilder() {
          return getKeyFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder getKeyOrBuilder() {
          if ((reasonCase_ == 3) && (keyBuilder_ != null)) {
            return keyBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 3) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки сервисов ключа
         * </pre>
         *
         * <code>.keyapis.identity.v1.KeyError key = 3;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder> 
            getKeyFieldBuilder() {
          if (keyBuilder_ == null) {
            if (!(reasonCase_ == 3)) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.getDefaultInstance();
            }
            keyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyErrorOrBuilder>(
                    (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.KeyError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 3;
          onChanged();
          return keyBuilder_;
        }

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder> authServiceBuilder_;
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         * @return Whether the authService field is set.
         */
        @java.lang.Override
        public boolean hasAuthService() {
          return reasonCase_ == 4;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         * @return The authService.
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getAuthService() {
          if (authServiceBuilder_ == null) {
            if (reasonCase_ == 4) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
          } else {
            if (reasonCase_ == 4) {
              return authServiceBuilder_.getMessage();
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public Builder setAuthService(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError value) {
          if (authServiceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            authServiceBuilder_.setMessage(value);
          }
          reasonCase_ = 4;
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public Builder setAuthService(
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder builderForValue) {
          if (authServiceBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            authServiceBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 4;
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public Builder mergeAuthService(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError value) {
          if (authServiceBuilder_ == null) {
            if (reasonCase_ == 4 &&
                reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance()) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 4) {
              authServiceBuilder_.mergeFrom(value);
            } else {
              authServiceBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 4;
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public Builder clearAuthService() {
          if (authServiceBuilder_ == null) {
            if (reasonCase_ == 4) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 4) {
              reasonCase_ = 0;
              reason_ = null;
            }
            authServiceBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder getAuthServiceBuilder() {
          return getAuthServiceFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder getAuthServiceOrBuilder() {
          if ((reasonCase_ == 4) && (authServiceBuilder_ != null)) {
            return authServiceBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 4) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder> 
            getAuthServiceFieldBuilder() {
          if (authServiceBuilder_ == null) {
            if (!(reasonCase_ == 4)) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
            }
            authServiceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder>(
                    (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 4;
          onChanged();
          return authServiceBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error)
      private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error();
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.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 {
      ERROR(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 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 ERROR_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error error = 1;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error getError() {
      if (typeCase_ == 1) {
         return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error) type_;
      }
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.PostOauth2LoginByPasswordResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error) type_;
      }
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.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.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.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.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Ответ на запрос об авторизации по паролю пользователя
     * </pre>
     *
     * Protobuf type {@code keyapis.identity.v1.PostOauth2LoginByPasswordResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.PostOauth2LoginByPasswordResponse)
        ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.Builder.class);
      }

      // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse getDefaultInstanceForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

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

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.PostOauth2LoginByPasswordResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.identity.v1.PostOauth2LoginByPasswordResponse)
    private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse();
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.PostOauth2LoginByPasswordResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetOauth2ConsentRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.identity.v1.GetOauth2ConsentRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Идентификатор текущей попытки запроса соглашения пользователя
     * </pre>
     *
     * <code>string consent_challenge = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The consentChallenge.
     */
    java.lang.String getConsentChallenge();
    /**
     * <pre>
     * Идентификатор текущей попытки запроса соглашения пользователя
     * </pre>
     *
     * <code>string consent_challenge = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for consentChallenge.
     */
    com.google.protobuf.ByteString
        getConsentChallengeBytes();
  }
  /**
   * <pre>
   * Запрос соглашения пользователя по процедуре OAuth2
   * </pre>
   *
   * Protobuf type {@code keyapis.identity.v1.GetOauth2ConsentRequest}
   */
  public static final class GetOauth2ConsentRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.identity.v1.GetOauth2ConsentRequest)
      GetOauth2ConsentRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetOauth2ConsentRequest.newBuilder() to construct.
    private GetOauth2ConsentRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetOauth2ConsentRequest() {
      consentChallenge_ = "";
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest.Builder.class);
    }

    public static final int CONSENT_CHALLENGE_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object consentChallenge_ = "";
    /**
     * <pre>
     * Идентификатор текущей попытки запроса соглашения пользователя
     * </pre>
     *
     * <code>string consent_challenge = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The consentChallenge.
     */
    @java.lang.Override
    public java.lang.String getConsentChallenge() {
      java.lang.Object ref = consentChallenge_;
      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();
        consentChallenge_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Идентификатор текущей попытки запроса соглашения пользователя
     * </pre>
     *
     * <code>string consent_challenge = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for consentChallenge.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getConsentChallengeBytes() {
      java.lang.Object ref = consentChallenge_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        consentChallenge_ = 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(consentChallenge_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, consentChallenge_);
      }
      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(consentChallenge_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, consentChallenge_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

      if (!getConsentChallenge()
          .equals(other.getConsentChallenge())) 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) + CONSENT_CHALLENGE_FIELD_NUMBER;
      hash = (53 * hash) + getConsentChallenge().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest 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>
     * Запрос соглашения пользователя по процедуре OAuth2
     * </pre>
     *
     * Protobuf type {@code keyapis.identity.v1.GetOauth2ConsentRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.GetOauth2ConsentRequest)
        ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest.Builder.class);
      }

      // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest getDefaultInstanceForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest.getDefaultInstance();
      }

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

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest buildPartial() {
        ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest result = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.consentChallenge_ = consentChallenge_;
        }
      }

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

      public Builder mergeFrom(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest other) {
        if (other == ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest.getDefaultInstance()) return this;
        if (!other.getConsentChallenge().isEmpty()) {
          consentChallenge_ = other.consentChallenge_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

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

      private java.lang.Object consentChallenge_ = "";
      /**
       * <pre>
       * Идентификатор текущей попытки запроса соглашения пользователя
       * </pre>
       *
       * <code>string consent_challenge = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The consentChallenge.
       */
      public java.lang.String getConsentChallenge() {
        java.lang.Object ref = consentChallenge_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          consentChallenge_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор текущей попытки запроса соглашения пользователя
       * </pre>
       *
       * <code>string consent_challenge = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for consentChallenge.
       */
      public com.google.protobuf.ByteString
          getConsentChallengeBytes() {
        java.lang.Object ref = consentChallenge_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          consentChallenge_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Идентификатор текущей попытки запроса соглашения пользователя
       * </pre>
       *
       * <code>string consent_challenge = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The consentChallenge to set.
       * @return This builder for chaining.
       */
      public Builder setConsentChallenge(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        consentChallenge_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор текущей попытки запроса соглашения пользователя
       * </pre>
       *
       * <code>string consent_challenge = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearConsentChallenge() {
        consentChallenge_ = getDefaultInstance().getConsentChallenge();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Идентификатор текущей попытки запроса соглашения пользователя
       * </pre>
       *
       * <code>string consent_challenge = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for consentChallenge to set.
       * @return This builder for chaining.
       */
      public Builder setConsentChallengeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        consentChallenge_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.GetOauth2ConsentRequest)
    }

    // @@protoc_insertion_point(class_scope:keyapis.identity.v1.GetOauth2ConsentRequest)
    private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest();
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetOauth2ConsentResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.identity.v1.GetOauth2ConsentResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.GetOauth2ConsentResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.GetOauth2ConsentResponse.Error error = 1;</code>
     * @return The error.
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error getError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.GetOauth2ConsentResponse.Error error = 1;</code>
     */
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.ErrorOrBuilder getErrorOrBuilder();

    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос соглашения пользователя по процедуре OAuth2
   * </pre>
   *
   * Protobuf type {@code keyapis.identity.v1.GetOauth2ConsentResponse}
   */
  public static final class GetOauth2ConsentResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:keyapis.identity.v1.GetOauth2ConsentResponse)
      GetOauth2ConsentResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetOauth2ConsentResponse.newBuilder() to construct.
    private GetOauth2ConsentResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetOauth2ConsentResponse() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Builder.class);
    }

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

      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
       * @return Whether the authService field is set.
       */
      boolean hasAuthService();
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
       * @return The authService.
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getAuthService();
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
       */
      ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder getAuthServiceOrBuilder();

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

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

      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_Error_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_Error_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.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 {
        AUTH_SERVICE(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 AUTH_SERVICE;
            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 AUTH_SERVICE_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
       * @return Whether the authService field is set.
       */
      @java.lang.Override
      public boolean hasAuthService() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
       * @return The authService.
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getAuthService() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибки авторизационного сервиса
       * </pre>
       *
       * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder getAuthServiceOrBuilder() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
        }
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
      }

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

        memoizedIsInitialized = 1;
        return true;
      }

      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (reasonCase_ == 1) {
          output.writeMessage(1, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_);
        }
        getUnknownFields().writeTo(output);
      }

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

        size = 0;
        if (reasonCase_ == 1) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_);
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSize = size;
        return size;
      }

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

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

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }

      @java.lang.Override
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      @java.lang.Override
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * <pre>
       * Ошибка запроса авторизации пользователя
       * </pre>
       *
       * Protobuf type {@code keyapis.identity.v1.GetOauth2ConsentResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.GetOauth2ConsentResponse.Error)
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.ErrorOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_Error_descriptor;
        }

        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_Error_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error.Builder.class);
        }

        // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.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 (authServiceBuilder_ != null) {
            authServiceBuilder_.clear();
          }
          reasonCase_ = 0;
          reason_ = null;
          return this;
        }

        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_Error_descriptor;
        }

        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error getDefaultInstanceForType() {
          return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error.getDefaultInstance();
        }

        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error build() {
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

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

        private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error result) {
          int from_bitField0_ = bitField0_;
        }

        private void buildPartialOneofs(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error result) {
          result.reasonCase_ = reasonCase_;
          result.reason_ = this.reason_;
          if (reasonCase_ == 1 &&
              authServiceBuilder_ != null) {
            result.reason_ = authServiceBuilder_.build();
          }
        }

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

        public Builder mergeFrom(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error other) {
          if (other == ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error.getDefaultInstance()) return this;
          switch (other.getReasonCase()) {
            case AUTH_SERVICE: {
              mergeAuthService(other.getAuthService());
              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(
                      getAuthServiceFieldBuilder().getBuilder(),
                      extensionRegistry);
                  reasonCase_ = 1;
                  break;
                } // case 10
                default: {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
              } // switch (tag)
            } // while (!done)
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.unwrapIOException();
          } finally {
            onChanged();
          } // finally
          return this;
        }
        private int reasonCase_ = 0;
        private java.lang.Object reason_;
        public ReasonCase
            getReasonCase() {
          return ReasonCase.forNumber(
              reasonCase_);
        }

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

        private int bitField0_;

        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder> authServiceBuilder_;
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
         * @return Whether the authService field is set.
         */
        @java.lang.Override
        public boolean hasAuthService() {
          return reasonCase_ == 1;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
         * @return The authService.
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError getAuthService() {
          if (authServiceBuilder_ == null) {
            if (reasonCase_ == 1) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
          } else {
            if (reasonCase_ == 1) {
              return authServiceBuilder_.getMessage();
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
         */
        public Builder setAuthService(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError value) {
          if (authServiceBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            reason_ = value;
            onChanged();
          } else {
            authServiceBuilder_.setMessage(value);
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
         */
        public Builder setAuthService(
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder builderForValue) {
          if (authServiceBuilder_ == null) {
            reason_ = builderForValue.build();
            onChanged();
          } else {
            authServiceBuilder_.setMessage(builderForValue.build());
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
         */
        public Builder mergeAuthService(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError value) {
          if (authServiceBuilder_ == null) {
            if (reasonCase_ == 1 &&
                reason_ != ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance()) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.newBuilder((ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_)
                  .mergeFrom(value).buildPartial();
            } else {
              reason_ = value;
            }
            onChanged();
          } else {
            if (reasonCase_ == 1) {
              authServiceBuilder_.mergeFrom(value);
            } else {
              authServiceBuilder_.setMessage(value);
            }
          }
          reasonCase_ = 1;
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
         */
        public Builder clearAuthService() {
          if (authServiceBuilder_ == null) {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
              onChanged();
            }
          } else {
            if (reasonCase_ == 1) {
              reasonCase_ = 0;
              reason_ = null;
            }
            authServiceBuilder_.clear();
          }
          return this;
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
         */
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder getAuthServiceBuilder() {
          return getAuthServiceFieldBuilder().getBuilder();
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder getAuthServiceOrBuilder() {
          if ((reasonCase_ == 1) && (authServiceBuilder_ != null)) {
            return authServiceBuilder_.getMessageOrBuilder();
          } else {
            if (reasonCase_ == 1) {
              return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_;
            }
            return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
          }
        }
        /**
         * <pre>
         * Ошибки авторизационного сервиса
         * </pre>
         *
         * <code>.keyapis.identity.v1.AuthServiceError auth_service = 1;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder> 
            getAuthServiceFieldBuilder() {
          if (authServiceBuilder_ == null) {
            if (!(reasonCase_ == 1)) {
              reason_ = ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.getDefaultInstance();
            }
            authServiceBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError.Builder, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceErrorOrBuilder>(
                    (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.AuthServiceError) reason_,
                    getParentForChildren(),
                    isClean());
            reason_ = null;
          }
          reasonCase_ = 1;
          onChanged();
          return authServiceBuilder_;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.GetOauth2ConsentResponse.Error)
      }

      // @@protoc_insertion_point(class_scope:keyapis.identity.v1.GetOauth2ConsentResponse.Error)
      private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error();
      }

      public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.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 {
      ERROR(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 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 ERROR_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.GetOauth2ConsentResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.GetOauth2ConsentResponse.Error error = 1;</code>
     * @return The error.
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error getError() {
      if (typeCase_ == 1) {
         return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error) type_;
      }
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.identity.v1.GetOauth2ConsentResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.ErrorOrBuilder getErrorOrBuilder() {
      if (typeCase_ == 1) {
         return (ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error) type_;
      }
      return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.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.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.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.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Error) type_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

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

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

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse 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>
     * Ответ на запрос соглашения пользователя по процедуре OAuth2
     * </pre>
     *
     * Protobuf type {@code keyapis.identity.v1.GetOauth2ConsentResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.identity.v1.GetOauth2ConsentResponse)
        ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.class, ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.Builder.class);
      }

      // Construct using ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_descriptor;
      }

      @java.lang.Override
      public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse getDefaultInstanceForType() {
        return ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse.getDefaultInstance();
      }

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

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

      private void buildPartial0(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse result) {
        result.typeCase_ = typeCase_;
        result.type_ = this.type_;
        if (typeCase_ == 1 &&
            errorBuilder_ != null) {
          result.type_ = errorBuilder_.build();
        }
      }

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

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

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


      // @@protoc_insertion_point(builder_scope:keyapis.identity.v1.GetOauth2ConsentResponse)
    }

    // @@protoc_insertion_point(class_scope:keyapis.identity.v1.GetOauth2ConsentResponse)
    private static final ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse();
    }

    public static ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

    @java.lang.Override
    public ru.keyapis.identity.v1.KeyapisIdentityV1Proto.GetOauth2ConsentResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_AuthServiceError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_AuthServiceError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_AuthServiceError_AuthError_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_AuthServiceError_AuthError_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_Error_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_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 = {
      "\n4keyapis/identity/v1/keyapis_identity_o" +
      "auth2_v1.proto\022\023keyapis.identity.v1\032\034goo" +
      "gle/api/annotations.proto\032\037google/api/fi" +
      "eld_behavior.proto\032\037google/protobuf/time" +
      "stamp.proto\032;keyapis/identity/v1/keyapis" +
      "_identity_authorization_v1.proto\"j\n\020Auth" +
      "ServiceError\022?\n\004auth\030\001 \001(\0132/.keyapis.ide" +
      "ntity.v1.AuthServiceError.AuthErrorH\000\032\013\n" +
      "\tAuthErrorB\010\n\006reason\"e\n\034PostOauth2LoginB" +
      "yCodeRequest\022\024\n\007code_id\030\001 \001(\tB\003\340A\002\022\021\n\004co" +
      "de\030\002 \001(\tB\003\340A\002\022\034\n\017login_challenge\030\003 \001(\tB\003" +
      "\340A\002\"\331\002\n\035PostOauth2LoginByCodeResponse\022I\n" +
      "\005error\030\001 \001(\01328.keyapis.identity.v1.PostO" +
      "auth2LoginByCodeResponse.ErrorH\000\032\344\001\n\005Err" +
      "or\0226\n\010otp_code\030\001 \001(\0132\".keyapis.identity." +
      "v1.OtpCode.ErrorH\000\022,\n\003sso\030\002 \001(\0132\035.keyapi" +
      "s.identity.v1.SsoErrorH\000\022,\n\003key\030\003 \001(\0132\035." +
      "keyapis.identity.v1.KeyErrorH\000\022=\n\014auth_s" +
      "ervice\030\004 \001(\0132%.keyapis.identity.v1.AuthS" +
      "erviceErrorH\000B\010\n\006reasonB\006\n\004type\"\332\001\n Post" +
      "Oauth2LoginByPasswordRequest\022\026\n\014phone_nu" +
      "mber\030\001 \001(\tH\000\022\017\n\005email\030\002 \001(\tH\000\022\017\n\005login\030\003" +
      " \001(\tH\000\022\025\n\010password\030\004 \001(\tB\003\340A\002\022?\n\016captcha" +
      "_answer\030\005 \001(\0132\".keyapis.identity.v1.Capt" +
      "chaAnswerB\003\340A\001\022\034\n\017login_challenge\030\006 \001(\tB" +
      "\003\340A\002B\006\n\004type\"\355\002\n!PostOauth2LoginByPasswo" +
      "rdResponse\022M\n\005error\030\001 \001(\0132<.keyapis.iden" +
      "tity.v1.PostOauth2LoginByPasswordRespons" +
      "e.ErrorH\000\032\360\001\n\005Error\022B\n\016captcha_answer\030\001 " +
      "\001(\0132(.keyapis.identity.v1.CaptchaAnswer." +
      "ErrorH\000\022,\n\003sso\030\002 \001(\0132\035.keyapis.identity." +
      "v1.SsoErrorH\000\022,\n\003key\030\003 \001(\0132\035.keyapis.ide" +
      "ntity.v1.KeyErrorH\000\022=\n\014auth_service\030\004 \001(" +
      "\0132%.keyapis.identity.v1.AuthServiceError" +
      "H\000B\010\n\006reasonB\006\n\004type\"9\n\027GetOauth2Consent" +
      "Request\022\036\n\021consent_challenge\030\001 \001(\tB\003\340A\002\"" +
      "\272\001\n\030GetOauth2ConsentResponse\022D\n\005error\030\001 " +
      "\001(\01323.keyapis.identity.v1.GetOauth2Conse" +
      "ntResponse.ErrorH\000\032P\n\005Error\022=\n\014auth_serv" +
      "ice\030\001 \001(\0132%.keyapis.identity.v1.AuthServ" +
      "iceErrorH\000B\010\n\006reasonB\006\n\004type2\240\004\n\rOauth2S" +
      "ervice\022\260\001\n\025PostOauth2LoginByCode\0221.keyap" +
      "is.identity.v1.PostOauth2LoginByCodeRequ" +
      "est\0322.keyapis.identity.v1.PostOauth2Logi" +
      "nByCodeResponse\"0\202\323\344\223\002*\"%/identity/api/v" +
      "1/oauth2/login_by_code:\001*\022\300\001\n\031PostOauth2" +
      "LoginByPassword\0225.keyapis.identity.v1.Po" +
      "stOauth2LoginByPasswordRequest\0326.keyapis" +
      ".identity.v1.PostOauth2LoginByPasswordRe" +
      "sponse\"4\202\323\344\223\002.\")/identity/api/v1/oauth2/" +
      "login_by_password:\001*\022\230\001\n\020GetOauth2Consen" +
      "t\022,.keyapis.identity.v1.GetOauth2Consent" +
      "Request\032-.keyapis.identity.v1.GetOauth2C" +
      "onsentResponse\"\'\202\323\344\223\002!\022\037/identity/api/v1" +
      "/oauth2/consentB\250\001\n\026ru.keyapis.identity." +
      "v1B\026KeyapisIdentityV1ProtoH\003P\000Z\024/keyapis" +
      "_identity_v1\330\001\001\370\001\001\242\002\021KEYAPISIDENTITYV1\252\002" +
      "\023Keyapis.Identity.V1\312\002\023Keyapis\\Identity\\" +
      "V1\352\002\025Keyapis::Identity::V1b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.api.AnnotationsProto.getDescriptor(),
          com.google.api.FieldBehaviorProto.getDescriptor(),
          com.google.protobuf.TimestampProto.getDescriptor(),
          ru.keyapis.identity.v1.KeyapisIdentityV1Proto.getDescriptor(),
        });
    internal_static_keyapis_identity_v1_AuthServiceError_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_keyapis_identity_v1_AuthServiceError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_AuthServiceError_descriptor,
        new java.lang.String[] { "Auth", "Reason", });
    internal_static_keyapis_identity_v1_AuthServiceError_AuthError_descriptor =
      internal_static_keyapis_identity_v1_AuthServiceError_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_identity_v1_AuthServiceError_AuthError_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_AuthServiceError_AuthError_descriptor,
        new java.lang.String[] { });
    internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_PostOauth2LoginByCodeRequest_descriptor,
        new java.lang.String[] { "CodeId", "Code", "LoginChallenge", });
    internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_descriptor,
        new java.lang.String[] { "Error", "Type", });
    internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_descriptor =
      internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_PostOauth2LoginByCodeResponse_Error_descriptor,
        new java.lang.String[] { "OtpCode", "Sso", "Key", "AuthService", "Reason", });
    internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordRequest_descriptor,
        new java.lang.String[] { "PhoneNumber", "Email", "Login", "Password", "CaptchaAnswer", "LoginChallenge", "Type", });
    internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_descriptor,
        new java.lang.String[] { "Error", "Type", });
    internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_descriptor =
      internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_PostOauth2LoginByPasswordResponse_Error_descriptor,
        new java.lang.String[] { "CaptchaAnswer", "Sso", "Key", "AuthService", "Reason", });
    internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_GetOauth2ConsentRequest_descriptor,
        new java.lang.String[] { "ConsentChallenge", });
    internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_descriptor,
        new java.lang.String[] { "Error", "Type", });
    internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_Error_descriptor =
      internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_descriptor.getNestedTypes().get(0);
    internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_Error_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_keyapis_identity_v1_GetOauth2ConsentResponse_Error_descriptor,
        new java.lang.String[] { "AuthService", "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);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    com.google.api.AnnotationsProto.getDescriptor();
    com.google.api.FieldBehaviorProto.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
    ru.keyapis.identity.v1.KeyapisIdentityV1Proto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
