// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: spotify/login5/v3/credentials/credentials.proto

package com.spotify.login5v3;

public final class Credentials {
  private Credentials() {}
  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 StoredCredentialOrBuilder extends
      // @@protoc_insertion_point(interface_extends:spotify.login5.v3.credentials.StoredCredential)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string username = 1;</code>
     * @return The username.
     */
    java.lang.String getUsername();
    /**
     * <code>string username = 1;</code>
     * @return The bytes for username.
     */
    com.google.protobuf.ByteString
        getUsernameBytes();

    /**
     * <code>bytes data = 2;</code>
     * @return The data.
     */
    com.google.protobuf.ByteString getData();
  }
  /**
   * Protobuf type {@code spotify.login5.v3.credentials.StoredCredential}
   */
  public  static final class StoredCredential extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:spotify.login5.v3.credentials.StoredCredential)
      StoredCredentialOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use StoredCredential.newBuilder() to construct.
    private StoredCredential(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private StoredCredential() {
      username_ = "";
      data_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StoredCredential(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              username_ = s;
              break;
            }
            case 18: {

              data_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_StoredCredential_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_StoredCredential_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.login5v3.Credentials.StoredCredential.class, com.spotify.login5v3.Credentials.StoredCredential.Builder.class);
    }

    public static final int USERNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object username_;
    /**
     * <code>string username = 1;</code>
     * @return The username.
     */
    public java.lang.String getUsername() {
      java.lang.Object ref = username_;
      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();
        username_ = s;
        return s;
      }
    }
    /**
     * <code>string username = 1;</code>
     * @return The bytes for username.
     */
    public com.google.protobuf.ByteString
        getUsernameBytes() {
      java.lang.Object ref = username_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        username_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString data_;
    /**
     * <code>bytes data = 2;</code>
     * @return The data.
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getUsernameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, username_);
      }
      if (!data_.isEmpty()) {
        output.writeBytes(2, data_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getUsernameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, username_);
      }
      if (!data_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, data_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.spotify.login5v3.Credentials.StoredCredential)) {
        return super.equals(obj);
      }
      com.spotify.login5v3.Credentials.StoredCredential other = (com.spotify.login5v3.Credentials.StoredCredential) obj;

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

    public static com.spotify.login5v3.Credentials.StoredCredential parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.StoredCredential 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(com.spotify.login5v3.Credentials.StoredCredential 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;
    }
    /**
     * Protobuf type {@code spotify.login5.v3.credentials.StoredCredential}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:spotify.login5.v3.credentials.StoredCredential)
        com.spotify.login5v3.Credentials.StoredCredentialOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_StoredCredential_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_StoredCredential_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.login5v3.Credentials.StoredCredential.class, com.spotify.login5v3.Credentials.StoredCredential.Builder.class);
      }

      // Construct using com.spotify.login5v3.Credentials.StoredCredential.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        username_ = "";

        data_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_StoredCredential_descriptor;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.StoredCredential getDefaultInstanceForType() {
        return com.spotify.login5v3.Credentials.StoredCredential.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.StoredCredential build() {
        com.spotify.login5v3.Credentials.StoredCredential result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.StoredCredential buildPartial() {
        com.spotify.login5v3.Credentials.StoredCredential result = new com.spotify.login5v3.Credentials.StoredCredential(this);
        result.username_ = username_;
        result.data_ = data_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.spotify.login5v3.Credentials.StoredCredential) {
          return mergeFrom((com.spotify.login5v3.Credentials.StoredCredential)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.spotify.login5v3.Credentials.StoredCredential other) {
        if (other == com.spotify.login5v3.Credentials.StoredCredential.getDefaultInstance()) return this;
        if (!other.getUsername().isEmpty()) {
          username_ = other.username_;
          onChanged();
        }
        if (other.getData() != com.google.protobuf.ByteString.EMPTY) {
          setData(other.getData());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.spotify.login5v3.Credentials.StoredCredential parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.spotify.login5v3.Credentials.StoredCredential) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object username_ = "";
      /**
       * <code>string username = 1;</code>
       * @return The username.
       */
      public java.lang.String getUsername() {
        java.lang.Object ref = username_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          username_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string username = 1;</code>
       * @return The bytes for username.
       */
      public com.google.protobuf.ByteString
          getUsernameBytes() {
        java.lang.Object ref = username_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          username_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string username = 1;</code>
       * @param value The username to set.
       * @return This builder for chaining.
       */
      public Builder setUsername(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        username_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string username = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUsername() {
        
        username_ = getDefaultInstance().getUsername();
        onChanged();
        return this;
      }
      /**
       * <code>string username = 1;</code>
       * @param value The bytes for username to set.
       * @return This builder for chaining.
       */
      public Builder setUsernameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        username_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes data = 2;</code>
       * @return The data.
       */
      public com.google.protobuf.ByteString getData() {
        return data_;
      }
      /**
       * <code>bytes data = 2;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        data_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes data = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        
        data_ = getDefaultInstance().getData();
        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:spotify.login5.v3.credentials.StoredCredential)
    }

    // @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.StoredCredential)
    private static final com.spotify.login5v3.Credentials.StoredCredential DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.login5v3.Credentials.StoredCredential();
    }

    public static com.spotify.login5v3.Credentials.StoredCredential getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<StoredCredential>
        PARSER = new com.google.protobuf.AbstractParser<StoredCredential>() {
      @java.lang.Override
      public StoredCredential parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StoredCredential(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.spotify.login5v3.Credentials.StoredCredential getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PasswordOrBuilder extends
      // @@protoc_insertion_point(interface_extends:spotify.login5.v3.credentials.Password)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string id = 1;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <code>string password = 2;</code>
     * @return The password.
     */
    java.lang.String getPassword();
    /**
     * <code>string password = 2;</code>
     * @return The bytes for password.
     */
    com.google.protobuf.ByteString
        getPasswordBytes();

    /**
     * <code>bytes padding = 3;</code>
     * @return The padding.
     */
    com.google.protobuf.ByteString getPadding();
  }
  /**
   * Protobuf type {@code spotify.login5.v3.credentials.Password}
   */
  public  static final class Password extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:spotify.login5.v3.credentials.Password)
      PasswordOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Password.newBuilder() to construct.
    private Password(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Password() {
      id_ = "";
      password_ = "";
      padding_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Password(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              password_ = s;
              break;
            }
            case 26: {

              padding_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_Password_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_Password_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.login5v3.Credentials.Password.class, com.spotify.login5v3.Credentials.Password.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <code>string id = 1;</code>
     * @return The id.
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PASSWORD_FIELD_NUMBER = 2;
    private volatile java.lang.Object password_;
    /**
     * <code>string password = 2;</code>
     * @return The password.
     */
    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;
      }
    }
    /**
     * <code>string password = 2;</code>
     * @return The bytes for password.
     */
    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 PADDING_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString padding_;
    /**
     * <code>bytes padding = 3;</code>
     * @return The padding.
     */
    public com.google.protobuf.ByteString getPadding() {
      return padding_;
    }

    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 (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getPasswordBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, password_);
      }
      if (!padding_.isEmpty()) {
        output.writeBytes(3, padding_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getPasswordBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, password_);
      }
      if (!padding_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, padding_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.spotify.login5v3.Credentials.Password)) {
        return super.equals(obj);
      }
      com.spotify.login5v3.Credentials.Password other = (com.spotify.login5v3.Credentials.Password) obj;

      if (!getId()
          .equals(other.getId())) return false;
      if (!getPassword()
          .equals(other.getPassword())) return false;
      if (!getPadding()
          .equals(other.getPadding())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + PASSWORD_FIELD_NUMBER;
      hash = (53 * hash) + getPassword().hashCode();
      hash = (37 * hash) + PADDING_FIELD_NUMBER;
      hash = (53 * hash) + getPadding().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.spotify.login5v3.Credentials.Password parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.Password parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.Password parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.Password parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.Password parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.Password parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.Password parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.Password parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.Password parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.Password parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.Password parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.Password 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(com.spotify.login5v3.Credentials.Password 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;
    }
    /**
     * Protobuf type {@code spotify.login5.v3.credentials.Password}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:spotify.login5.v3.credentials.Password)
        com.spotify.login5v3.Credentials.PasswordOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_Password_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_Password_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.login5v3.Credentials.Password.class, com.spotify.login5v3.Credentials.Password.Builder.class);
      }

      // Construct using com.spotify.login5v3.Credentials.Password.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        password_ = "";

        padding_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_Password_descriptor;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.Password getDefaultInstanceForType() {
        return com.spotify.login5v3.Credentials.Password.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.Password build() {
        com.spotify.login5v3.Credentials.Password result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.Password buildPartial() {
        com.spotify.login5v3.Credentials.Password result = new com.spotify.login5v3.Credentials.Password(this);
        result.id_ = id_;
        result.password_ = password_;
        result.padding_ = padding_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.spotify.login5v3.Credentials.Password) {
          return mergeFrom((com.spotify.login5v3.Credentials.Password)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.spotify.login5v3.Credentials.Password other) {
        if (other == com.spotify.login5v3.Credentials.Password.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getPassword().isEmpty()) {
          password_ = other.password_;
          onChanged();
        }
        if (other.getPadding() != com.google.protobuf.ByteString.EMPTY) {
          setPadding(other.getPadding());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.spotify.login5v3.Credentials.Password parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.spotify.login5v3.Credentials.Password) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * <code>string id = 1;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <code>string id = 1;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object password_ = "";
      /**
       * <code>string password = 2;</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;
        }
      }
      /**
       * <code>string password = 2;</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;
        }
      }
      /**
       * <code>string password = 2;</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;
        onChanged();
        return this;
      }
      /**
       * <code>string password = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPassword() {
        
        password_ = getDefaultInstance().getPassword();
        onChanged();
        return this;
      }
      /**
       * <code>string password = 2;</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;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString padding_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>bytes padding = 3;</code>
       * @return The padding.
       */
      public com.google.protobuf.ByteString getPadding() {
        return padding_;
      }
      /**
       * <code>bytes padding = 3;</code>
       * @param value The padding to set.
       * @return This builder for chaining.
       */
      public Builder setPadding(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        padding_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes padding = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearPadding() {
        
        padding_ = getDefaultInstance().getPadding();
        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:spotify.login5.v3.credentials.Password)
    }

    // @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.Password)
    private static final com.spotify.login5v3.Credentials.Password DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.login5v3.Credentials.Password();
    }

    public static com.spotify.login5v3.Credentials.Password getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<Password>
        PARSER = new com.google.protobuf.AbstractParser<Password>() {
      @java.lang.Override
      public Password parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Password(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.spotify.login5v3.Credentials.Password getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FacebookAccessTokenOrBuilder extends
      // @@protoc_insertion_point(interface_extends:spotify.login5.v3.credentials.FacebookAccessToken)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string fb_uid = 1;</code>
     * @return The fbUid.
     */
    java.lang.String getFbUid();
    /**
     * <code>string fb_uid = 1;</code>
     * @return The bytes for fbUid.
     */
    com.google.protobuf.ByteString
        getFbUidBytes();

    /**
     * <code>string access_token = 2;</code>
     * @return The accessToken.
     */
    java.lang.String getAccessToken();
    /**
     * <code>string access_token = 2;</code>
     * @return The bytes for accessToken.
     */
    com.google.protobuf.ByteString
        getAccessTokenBytes();
  }
  /**
   * Protobuf type {@code spotify.login5.v3.credentials.FacebookAccessToken}
   */
  public  static final class FacebookAccessToken extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:spotify.login5.v3.credentials.FacebookAccessToken)
      FacebookAccessTokenOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use FacebookAccessToken.newBuilder() to construct.
    private FacebookAccessToken(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private FacebookAccessToken() {
      fbUid_ = "";
      accessToken_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private FacebookAccessToken(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              fbUid_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              accessToken_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_FacebookAccessToken_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_FacebookAccessToken_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.login5v3.Credentials.FacebookAccessToken.class, com.spotify.login5v3.Credentials.FacebookAccessToken.Builder.class);
    }

    public static final int FB_UID_FIELD_NUMBER = 1;
    private volatile java.lang.Object fbUid_;
    /**
     * <code>string fb_uid = 1;</code>
     * @return The fbUid.
     */
    public java.lang.String getFbUid() {
      java.lang.Object ref = fbUid_;
      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();
        fbUid_ = s;
        return s;
      }
    }
    /**
     * <code>string fb_uid = 1;</code>
     * @return The bytes for fbUid.
     */
    public com.google.protobuf.ByteString
        getFbUidBytes() {
      java.lang.Object ref = fbUid_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fbUid_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACCESS_TOKEN_FIELD_NUMBER = 2;
    private volatile java.lang.Object accessToken_;
    /**
     * <code>string access_token = 2;</code>
     * @return The accessToken.
     */
    public java.lang.String getAccessToken() {
      java.lang.Object ref = accessToken_;
      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();
        accessToken_ = s;
        return s;
      }
    }
    /**
     * <code>string access_token = 2;</code>
     * @return The bytes for accessToken.
     */
    public com.google.protobuf.ByteString
        getAccessTokenBytes() {
      java.lang.Object ref = accessToken_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        accessToken_ = 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 (!getFbUidBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, fbUid_);
      }
      if (!getAccessTokenBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, accessToken_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getFbUidBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, fbUid_);
      }
      if (!getAccessTokenBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, accessToken_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.spotify.login5v3.Credentials.FacebookAccessToken)) {
        return super.equals(obj);
      }
      com.spotify.login5v3.Credentials.FacebookAccessToken other = (com.spotify.login5v3.Credentials.FacebookAccessToken) obj;

      if (!getFbUid()
          .equals(other.getFbUid())) return false;
      if (!getAccessToken()
          .equals(other.getAccessToken())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + FB_UID_FIELD_NUMBER;
      hash = (53 * hash) + getFbUid().hashCode();
      hash = (37 * hash) + ACCESS_TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getAccessToken().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.FacebookAccessToken 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(com.spotify.login5v3.Credentials.FacebookAccessToken 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;
    }
    /**
     * Protobuf type {@code spotify.login5.v3.credentials.FacebookAccessToken}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:spotify.login5.v3.credentials.FacebookAccessToken)
        com.spotify.login5v3.Credentials.FacebookAccessTokenOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_FacebookAccessToken_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_FacebookAccessToken_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.login5v3.Credentials.FacebookAccessToken.class, com.spotify.login5v3.Credentials.FacebookAccessToken.Builder.class);
      }

      // Construct using com.spotify.login5v3.Credentials.FacebookAccessToken.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        fbUid_ = "";

        accessToken_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_FacebookAccessToken_descriptor;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.FacebookAccessToken getDefaultInstanceForType() {
        return com.spotify.login5v3.Credentials.FacebookAccessToken.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.FacebookAccessToken build() {
        com.spotify.login5v3.Credentials.FacebookAccessToken result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.FacebookAccessToken buildPartial() {
        com.spotify.login5v3.Credentials.FacebookAccessToken result = new com.spotify.login5v3.Credentials.FacebookAccessToken(this);
        result.fbUid_ = fbUid_;
        result.accessToken_ = accessToken_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.spotify.login5v3.Credentials.FacebookAccessToken) {
          return mergeFrom((com.spotify.login5v3.Credentials.FacebookAccessToken)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.spotify.login5v3.Credentials.FacebookAccessToken other) {
        if (other == com.spotify.login5v3.Credentials.FacebookAccessToken.getDefaultInstance()) return this;
        if (!other.getFbUid().isEmpty()) {
          fbUid_ = other.fbUid_;
          onChanged();
        }
        if (!other.getAccessToken().isEmpty()) {
          accessToken_ = other.accessToken_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.spotify.login5v3.Credentials.FacebookAccessToken parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.spotify.login5v3.Credentials.FacebookAccessToken) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object fbUid_ = "";
      /**
       * <code>string fb_uid = 1;</code>
       * @return The fbUid.
       */
      public java.lang.String getFbUid() {
        java.lang.Object ref = fbUid_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fbUid_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string fb_uid = 1;</code>
       * @return The bytes for fbUid.
       */
      public com.google.protobuf.ByteString
          getFbUidBytes() {
        java.lang.Object ref = fbUid_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fbUid_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string fb_uid = 1;</code>
       * @param value The fbUid to set.
       * @return This builder for chaining.
       */
      public Builder setFbUid(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        fbUid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string fb_uid = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFbUid() {
        
        fbUid_ = getDefaultInstance().getFbUid();
        onChanged();
        return this;
      }
      /**
       * <code>string fb_uid = 1;</code>
       * @param value The bytes for fbUid to set.
       * @return This builder for chaining.
       */
      public Builder setFbUidBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        fbUid_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object accessToken_ = "";
      /**
       * <code>string access_token = 2;</code>
       * @return The accessToken.
       */
      public java.lang.String getAccessToken() {
        java.lang.Object ref = accessToken_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          accessToken_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string access_token = 2;</code>
       * @return The bytes for accessToken.
       */
      public com.google.protobuf.ByteString
          getAccessTokenBytes() {
        java.lang.Object ref = accessToken_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          accessToken_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string access_token = 2;</code>
       * @param value The accessToken to set.
       * @return This builder for chaining.
       */
      public Builder setAccessToken(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        accessToken_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string access_token = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccessToken() {
        
        accessToken_ = getDefaultInstance().getAccessToken();
        onChanged();
        return this;
      }
      /**
       * <code>string access_token = 2;</code>
       * @param value The bytes for accessToken to set.
       * @return This builder for chaining.
       */
      public Builder setAccessTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        accessToken_ = value;
        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:spotify.login5.v3.credentials.FacebookAccessToken)
    }

    // @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.FacebookAccessToken)
    private static final com.spotify.login5v3.Credentials.FacebookAccessToken DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.login5v3.Credentials.FacebookAccessToken();
    }

    public static com.spotify.login5v3.Credentials.FacebookAccessToken getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<FacebookAccessToken>
        PARSER = new com.google.protobuf.AbstractParser<FacebookAccessToken>() {
      @java.lang.Override
      public FacebookAccessToken parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new FacebookAccessToken(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.spotify.login5v3.Credentials.FacebookAccessToken getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface OneTimeTokenOrBuilder extends
      // @@protoc_insertion_point(interface_extends:spotify.login5.v3.credentials.OneTimeToken)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string token = 1;</code>
     * @return The token.
     */
    java.lang.String getToken();
    /**
     * <code>string token = 1;</code>
     * @return The bytes for token.
     */
    com.google.protobuf.ByteString
        getTokenBytes();
  }
  /**
   * Protobuf type {@code spotify.login5.v3.credentials.OneTimeToken}
   */
  public  static final class OneTimeToken extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:spotify.login5.v3.credentials.OneTimeToken)
      OneTimeTokenOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use OneTimeToken.newBuilder() to construct.
    private OneTimeToken(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private OneTimeToken() {
      token_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private OneTimeToken(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              token_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_OneTimeToken_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_OneTimeToken_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.login5v3.Credentials.OneTimeToken.class, com.spotify.login5v3.Credentials.OneTimeToken.Builder.class);
    }

    public static final int TOKEN_FIELD_NUMBER = 1;
    private volatile java.lang.Object token_;
    /**
     * <code>string token = 1;</code>
     * @return The token.
     */
    public java.lang.String getToken() {
      java.lang.Object ref = token_;
      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();
        token_ = s;
        return s;
      }
    }
    /**
     * <code>string token = 1;</code>
     * @return The bytes for token.
     */
    public com.google.protobuf.ByteString
        getTokenBytes() {
      java.lang.Object ref = token_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        token_ = 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 (!getTokenBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, token_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTokenBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, token_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.spotify.login5v3.Credentials.OneTimeToken)) {
        return super.equals(obj);
      }
      com.spotify.login5v3.Credentials.OneTimeToken other = (com.spotify.login5v3.Credentials.OneTimeToken) obj;

      if (!getToken()
          .equals(other.getToken())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + TOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getToken().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.spotify.login5v3.Credentials.OneTimeToken parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.OneTimeToken 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(com.spotify.login5v3.Credentials.OneTimeToken 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;
    }
    /**
     * Protobuf type {@code spotify.login5.v3.credentials.OneTimeToken}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:spotify.login5.v3.credentials.OneTimeToken)
        com.spotify.login5v3.Credentials.OneTimeTokenOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_OneTimeToken_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_OneTimeToken_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.login5v3.Credentials.OneTimeToken.class, com.spotify.login5v3.Credentials.OneTimeToken.Builder.class);
      }

      // Construct using com.spotify.login5v3.Credentials.OneTimeToken.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        token_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_OneTimeToken_descriptor;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.OneTimeToken getDefaultInstanceForType() {
        return com.spotify.login5v3.Credentials.OneTimeToken.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.OneTimeToken build() {
        com.spotify.login5v3.Credentials.OneTimeToken result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.OneTimeToken buildPartial() {
        com.spotify.login5v3.Credentials.OneTimeToken result = new com.spotify.login5v3.Credentials.OneTimeToken(this);
        result.token_ = token_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.spotify.login5v3.Credentials.OneTimeToken) {
          return mergeFrom((com.spotify.login5v3.Credentials.OneTimeToken)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.spotify.login5v3.Credentials.OneTimeToken other) {
        if (other == com.spotify.login5v3.Credentials.OneTimeToken.getDefaultInstance()) return this;
        if (!other.getToken().isEmpty()) {
          token_ = other.token_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.spotify.login5v3.Credentials.OneTimeToken parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.spotify.login5v3.Credentials.OneTimeToken) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object token_ = "";
      /**
       * <code>string token = 1;</code>
       * @return The token.
       */
      public java.lang.String getToken() {
        java.lang.Object ref = token_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          token_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string token = 1;</code>
       * @return The bytes for token.
       */
      public com.google.protobuf.ByteString
          getTokenBytes() {
        java.lang.Object ref = token_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          token_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string token = 1;</code>
       * @param value The token to set.
       * @return This builder for chaining.
       */
      public Builder setToken(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        token_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string token = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearToken() {
        
        token_ = getDefaultInstance().getToken();
        onChanged();
        return this;
      }
      /**
       * <code>string token = 1;</code>
       * @param value The bytes for token to set.
       * @return This builder for chaining.
       */
      public Builder setTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        token_ = value;
        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:spotify.login5.v3.credentials.OneTimeToken)
    }

    // @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.OneTimeToken)
    private static final com.spotify.login5v3.Credentials.OneTimeToken DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.login5v3.Credentials.OneTimeToken();
    }

    public static com.spotify.login5v3.Credentials.OneTimeToken getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<OneTimeToken>
        PARSER = new com.google.protobuf.AbstractParser<OneTimeToken>() {
      @java.lang.Override
      public OneTimeToken parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new OneTimeToken(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.spotify.login5v3.Credentials.OneTimeToken getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ParentChildCredentialOrBuilder extends
      // @@protoc_insertion_point(interface_extends:spotify.login5.v3.credentials.ParentChildCredential)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string child_id = 1;</code>
     * @return The childId.
     */
    java.lang.String getChildId();
    /**
     * <code>string child_id = 1;</code>
     * @return The bytes for childId.
     */
    com.google.protobuf.ByteString
        getChildIdBytes();

    /**
     * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
     * @return Whether the parentStoredCredential field is set.
     */
    boolean hasParentStoredCredential();
    /**
     * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
     * @return The parentStoredCredential.
     */
    com.spotify.login5v3.Credentials.StoredCredential getParentStoredCredential();
    /**
     * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
     */
    com.spotify.login5v3.Credentials.StoredCredentialOrBuilder getParentStoredCredentialOrBuilder();
  }
  /**
   * Protobuf type {@code spotify.login5.v3.credentials.ParentChildCredential}
   */
  public  static final class ParentChildCredential extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:spotify.login5.v3.credentials.ParentChildCredential)
      ParentChildCredentialOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ParentChildCredential.newBuilder() to construct.
    private ParentChildCredential(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ParentChildCredential() {
      childId_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ParentChildCredential(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              childId_ = s;
              break;
            }
            case 18: {
              com.spotify.login5v3.Credentials.StoredCredential.Builder subBuilder = null;
              if (parentStoredCredential_ != null) {
                subBuilder = parentStoredCredential_.toBuilder();
              }
              parentStoredCredential_ = input.readMessage(com.spotify.login5v3.Credentials.StoredCredential.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(parentStoredCredential_);
                parentStoredCredential_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_ParentChildCredential_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_ParentChildCredential_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.login5v3.Credentials.ParentChildCredential.class, com.spotify.login5v3.Credentials.ParentChildCredential.Builder.class);
    }

    public static final int CHILD_ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object childId_;
    /**
     * <code>string child_id = 1;</code>
     * @return The childId.
     */
    public java.lang.String getChildId() {
      java.lang.Object ref = childId_;
      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();
        childId_ = s;
        return s;
      }
    }
    /**
     * <code>string child_id = 1;</code>
     * @return The bytes for childId.
     */
    public com.google.protobuf.ByteString
        getChildIdBytes() {
      java.lang.Object ref = childId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        childId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PARENT_STORED_CREDENTIAL_FIELD_NUMBER = 2;
    private com.spotify.login5v3.Credentials.StoredCredential parentStoredCredential_;
    /**
     * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
     * @return Whether the parentStoredCredential field is set.
     */
    public boolean hasParentStoredCredential() {
      return parentStoredCredential_ != null;
    }
    /**
     * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
     * @return The parentStoredCredential.
     */
    public com.spotify.login5v3.Credentials.StoredCredential getParentStoredCredential() {
      return parentStoredCredential_ == null ? com.spotify.login5v3.Credentials.StoredCredential.getDefaultInstance() : parentStoredCredential_;
    }
    /**
     * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
     */
    public com.spotify.login5v3.Credentials.StoredCredentialOrBuilder getParentStoredCredentialOrBuilder() {
      return getParentStoredCredential();
    }

    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 (!getChildIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, childId_);
      }
      if (parentStoredCredential_ != null) {
        output.writeMessage(2, getParentStoredCredential());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getChildIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, childId_);
      }
      if (parentStoredCredential_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getParentStoredCredential());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.spotify.login5v3.Credentials.ParentChildCredential)) {
        return super.equals(obj);
      }
      com.spotify.login5v3.Credentials.ParentChildCredential other = (com.spotify.login5v3.Credentials.ParentChildCredential) obj;

      if (!getChildId()
          .equals(other.getChildId())) return false;
      if (hasParentStoredCredential() != other.hasParentStoredCredential()) return false;
      if (hasParentStoredCredential()) {
        if (!getParentStoredCredential()
            .equals(other.getParentStoredCredential())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) 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) + CHILD_ID_FIELD_NUMBER;
      hash = (53 * hash) + getChildId().hashCode();
      if (hasParentStoredCredential()) {
        hash = (37 * hash) + PARENT_STORED_CREDENTIAL_FIELD_NUMBER;
        hash = (53 * hash) + getParentStoredCredential().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.spotify.login5v3.Credentials.ParentChildCredential parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.ParentChildCredential 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(com.spotify.login5v3.Credentials.ParentChildCredential 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;
    }
    /**
     * Protobuf type {@code spotify.login5.v3.credentials.ParentChildCredential}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:spotify.login5.v3.credentials.ParentChildCredential)
        com.spotify.login5v3.Credentials.ParentChildCredentialOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_ParentChildCredential_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_ParentChildCredential_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.login5v3.Credentials.ParentChildCredential.class, com.spotify.login5v3.Credentials.ParentChildCredential.Builder.class);
      }

      // Construct using com.spotify.login5v3.Credentials.ParentChildCredential.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        childId_ = "";

        if (parentStoredCredentialBuilder_ == null) {
          parentStoredCredential_ = null;
        } else {
          parentStoredCredential_ = null;
          parentStoredCredentialBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_ParentChildCredential_descriptor;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.ParentChildCredential getDefaultInstanceForType() {
        return com.spotify.login5v3.Credentials.ParentChildCredential.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.ParentChildCredential build() {
        com.spotify.login5v3.Credentials.ParentChildCredential result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.ParentChildCredential buildPartial() {
        com.spotify.login5v3.Credentials.ParentChildCredential result = new com.spotify.login5v3.Credentials.ParentChildCredential(this);
        result.childId_ = childId_;
        if (parentStoredCredentialBuilder_ == null) {
          result.parentStoredCredential_ = parentStoredCredential_;
        } else {
          result.parentStoredCredential_ = parentStoredCredentialBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.spotify.login5v3.Credentials.ParentChildCredential) {
          return mergeFrom((com.spotify.login5v3.Credentials.ParentChildCredential)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.spotify.login5v3.Credentials.ParentChildCredential other) {
        if (other == com.spotify.login5v3.Credentials.ParentChildCredential.getDefaultInstance()) return this;
        if (!other.getChildId().isEmpty()) {
          childId_ = other.childId_;
          onChanged();
        }
        if (other.hasParentStoredCredential()) {
          mergeParentStoredCredential(other.getParentStoredCredential());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.spotify.login5v3.Credentials.ParentChildCredential parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.spotify.login5v3.Credentials.ParentChildCredential) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object childId_ = "";
      /**
       * <code>string child_id = 1;</code>
       * @return The childId.
       */
      public java.lang.String getChildId() {
        java.lang.Object ref = childId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          childId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string child_id = 1;</code>
       * @return The bytes for childId.
       */
      public com.google.protobuf.ByteString
          getChildIdBytes() {
        java.lang.Object ref = childId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          childId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string child_id = 1;</code>
       * @param value The childId to set.
       * @return This builder for chaining.
       */
      public Builder setChildId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        childId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string child_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearChildId() {
        
        childId_ = getDefaultInstance().getChildId();
        onChanged();
        return this;
      }
      /**
       * <code>string child_id = 1;</code>
       * @param value The bytes for childId to set.
       * @return This builder for chaining.
       */
      public Builder setChildIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        childId_ = value;
        onChanged();
        return this;
      }

      private com.spotify.login5v3.Credentials.StoredCredential parentStoredCredential_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.login5v3.Credentials.StoredCredential, com.spotify.login5v3.Credentials.StoredCredential.Builder, com.spotify.login5v3.Credentials.StoredCredentialOrBuilder> parentStoredCredentialBuilder_;
      /**
       * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
       * @return Whether the parentStoredCredential field is set.
       */
      public boolean hasParentStoredCredential() {
        return parentStoredCredentialBuilder_ != null || parentStoredCredential_ != null;
      }
      /**
       * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
       * @return The parentStoredCredential.
       */
      public com.spotify.login5v3.Credentials.StoredCredential getParentStoredCredential() {
        if (parentStoredCredentialBuilder_ == null) {
          return parentStoredCredential_ == null ? com.spotify.login5v3.Credentials.StoredCredential.getDefaultInstance() : parentStoredCredential_;
        } else {
          return parentStoredCredentialBuilder_.getMessage();
        }
      }
      /**
       * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
       */
      public Builder setParentStoredCredential(com.spotify.login5v3.Credentials.StoredCredential value) {
        if (parentStoredCredentialBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          parentStoredCredential_ = value;
          onChanged();
        } else {
          parentStoredCredentialBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
       */
      public Builder setParentStoredCredential(
          com.spotify.login5v3.Credentials.StoredCredential.Builder builderForValue) {
        if (parentStoredCredentialBuilder_ == null) {
          parentStoredCredential_ = builderForValue.build();
          onChanged();
        } else {
          parentStoredCredentialBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
       */
      public Builder mergeParentStoredCredential(com.spotify.login5v3.Credentials.StoredCredential value) {
        if (parentStoredCredentialBuilder_ == null) {
          if (parentStoredCredential_ != null) {
            parentStoredCredential_ =
              com.spotify.login5v3.Credentials.StoredCredential.newBuilder(parentStoredCredential_).mergeFrom(value).buildPartial();
          } else {
            parentStoredCredential_ = value;
          }
          onChanged();
        } else {
          parentStoredCredentialBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
       */
      public Builder clearParentStoredCredential() {
        if (parentStoredCredentialBuilder_ == null) {
          parentStoredCredential_ = null;
          onChanged();
        } else {
          parentStoredCredential_ = null;
          parentStoredCredentialBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
       */
      public com.spotify.login5v3.Credentials.StoredCredential.Builder getParentStoredCredentialBuilder() {
        
        onChanged();
        return getParentStoredCredentialFieldBuilder().getBuilder();
      }
      /**
       * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
       */
      public com.spotify.login5v3.Credentials.StoredCredentialOrBuilder getParentStoredCredentialOrBuilder() {
        if (parentStoredCredentialBuilder_ != null) {
          return parentStoredCredentialBuilder_.getMessageOrBuilder();
        } else {
          return parentStoredCredential_ == null ?
              com.spotify.login5v3.Credentials.StoredCredential.getDefaultInstance() : parentStoredCredential_;
        }
      }
      /**
       * <code>.spotify.login5.v3.credentials.StoredCredential parent_stored_credential = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.spotify.login5v3.Credentials.StoredCredential, com.spotify.login5v3.Credentials.StoredCredential.Builder, com.spotify.login5v3.Credentials.StoredCredentialOrBuilder> 
          getParentStoredCredentialFieldBuilder() {
        if (parentStoredCredentialBuilder_ == null) {
          parentStoredCredentialBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.spotify.login5v3.Credentials.StoredCredential, com.spotify.login5v3.Credentials.StoredCredential.Builder, com.spotify.login5v3.Credentials.StoredCredentialOrBuilder>(
                  getParentStoredCredential(),
                  getParentForChildren(),
                  isClean());
          parentStoredCredential_ = null;
        }
        return parentStoredCredentialBuilder_;
      }
      @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:spotify.login5.v3.credentials.ParentChildCredential)
    }

    // @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.ParentChildCredential)
    private static final com.spotify.login5v3.Credentials.ParentChildCredential DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.login5v3.Credentials.ParentChildCredential();
    }

    public static com.spotify.login5v3.Credentials.ParentChildCredential getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ParentChildCredential>
        PARSER = new com.google.protobuf.AbstractParser<ParentChildCredential>() {
      @java.lang.Override
      public ParentChildCredential parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ParentChildCredential(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.spotify.login5v3.Credentials.ParentChildCredential getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AppleSignInCredentialOrBuilder extends
      // @@protoc_insertion_point(interface_extends:spotify.login5.v3.credentials.AppleSignInCredential)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string auth_code = 1;</code>
     * @return The authCode.
     */
    java.lang.String getAuthCode();
    /**
     * <code>string auth_code = 1;</code>
     * @return The bytes for authCode.
     */
    com.google.protobuf.ByteString
        getAuthCodeBytes();

    /**
     * <code>string redirect_uri = 2;</code>
     * @return The redirectUri.
     */
    java.lang.String getRedirectUri();
    /**
     * <code>string redirect_uri = 2;</code>
     * @return The bytes for redirectUri.
     */
    com.google.protobuf.ByteString
        getRedirectUriBytes();

    /**
     * <code>string bundle_id = 3;</code>
     * @return The bundleId.
     */
    java.lang.String getBundleId();
    /**
     * <code>string bundle_id = 3;</code>
     * @return The bytes for bundleId.
     */
    com.google.protobuf.ByteString
        getBundleIdBytes();
  }
  /**
   * Protobuf type {@code spotify.login5.v3.credentials.AppleSignInCredential}
   */
  public  static final class AppleSignInCredential extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:spotify.login5.v3.credentials.AppleSignInCredential)
      AppleSignInCredentialOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AppleSignInCredential.newBuilder() to construct.
    private AppleSignInCredential(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AppleSignInCredential() {
      authCode_ = "";
      redirectUri_ = "";
      bundleId_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private AppleSignInCredential(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              authCode_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              redirectUri_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              bundleId_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_AppleSignInCredential_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_AppleSignInCredential_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.spotify.login5v3.Credentials.AppleSignInCredential.class, com.spotify.login5v3.Credentials.AppleSignInCredential.Builder.class);
    }

    public static final int AUTH_CODE_FIELD_NUMBER = 1;
    private volatile java.lang.Object authCode_;
    /**
     * <code>string auth_code = 1;</code>
     * @return The authCode.
     */
    public java.lang.String getAuthCode() {
      java.lang.Object ref = authCode_;
      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();
        authCode_ = s;
        return s;
      }
    }
    /**
     * <code>string auth_code = 1;</code>
     * @return The bytes for authCode.
     */
    public com.google.protobuf.ByteString
        getAuthCodeBytes() {
      java.lang.Object ref = authCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        authCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REDIRECT_URI_FIELD_NUMBER = 2;
    private volatile java.lang.Object redirectUri_;
    /**
     * <code>string redirect_uri = 2;</code>
     * @return The redirectUri.
     */
    public java.lang.String getRedirectUri() {
      java.lang.Object ref = redirectUri_;
      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();
        redirectUri_ = s;
        return s;
      }
    }
    /**
     * <code>string redirect_uri = 2;</code>
     * @return The bytes for redirectUri.
     */
    public com.google.protobuf.ByteString
        getRedirectUriBytes() {
      java.lang.Object ref = redirectUri_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        redirectUri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BUNDLE_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object bundleId_;
    /**
     * <code>string bundle_id = 3;</code>
     * @return The bundleId.
     */
    public java.lang.String getBundleId() {
      java.lang.Object ref = bundleId_;
      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();
        bundleId_ = s;
        return s;
      }
    }
    /**
     * <code>string bundle_id = 3;</code>
     * @return The bytes for bundleId.
     */
    public com.google.protobuf.ByteString
        getBundleIdBytes() {
      java.lang.Object ref = bundleId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bundleId_ = 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 (!getAuthCodeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, authCode_);
      }
      if (!getRedirectUriBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, redirectUri_);
      }
      if (!getBundleIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, bundleId_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getAuthCodeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, authCode_);
      }
      if (!getRedirectUriBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, redirectUri_);
      }
      if (!getBundleIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, bundleId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.spotify.login5v3.Credentials.AppleSignInCredential)) {
        return super.equals(obj);
      }
      com.spotify.login5v3.Credentials.AppleSignInCredential other = (com.spotify.login5v3.Credentials.AppleSignInCredential) obj;

      if (!getAuthCode()
          .equals(other.getAuthCode())) return false;
      if (!getRedirectUri()
          .equals(other.getRedirectUri())) return false;
      if (!getBundleId()
          .equals(other.getBundleId())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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) + AUTH_CODE_FIELD_NUMBER;
      hash = (53 * hash) + getAuthCode().hashCode();
      hash = (37 * hash) + REDIRECT_URI_FIELD_NUMBER;
      hash = (53 * hash) + getRedirectUri().hashCode();
      hash = (37 * hash) + BUNDLE_ID_FIELD_NUMBER;
      hash = (53 * hash) + getBundleId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.spotify.login5v3.Credentials.AppleSignInCredential 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(com.spotify.login5v3.Credentials.AppleSignInCredential 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;
    }
    /**
     * Protobuf type {@code spotify.login5.v3.credentials.AppleSignInCredential}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:spotify.login5.v3.credentials.AppleSignInCredential)
        com.spotify.login5v3.Credentials.AppleSignInCredentialOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_AppleSignInCredential_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_AppleSignInCredential_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.spotify.login5v3.Credentials.AppleSignInCredential.class, com.spotify.login5v3.Credentials.AppleSignInCredential.Builder.class);
      }

      // Construct using com.spotify.login5v3.Credentials.AppleSignInCredential.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        authCode_ = "";

        redirectUri_ = "";

        bundleId_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.spotify.login5v3.Credentials.internal_static_spotify_login5_v3_credentials_AppleSignInCredential_descriptor;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.AppleSignInCredential getDefaultInstanceForType() {
        return com.spotify.login5v3.Credentials.AppleSignInCredential.getDefaultInstance();
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.AppleSignInCredential build() {
        com.spotify.login5v3.Credentials.AppleSignInCredential result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.spotify.login5v3.Credentials.AppleSignInCredential buildPartial() {
        com.spotify.login5v3.Credentials.AppleSignInCredential result = new com.spotify.login5v3.Credentials.AppleSignInCredential(this);
        result.authCode_ = authCode_;
        result.redirectUri_ = redirectUri_;
        result.bundleId_ = bundleId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.spotify.login5v3.Credentials.AppleSignInCredential) {
          return mergeFrom((com.spotify.login5v3.Credentials.AppleSignInCredential)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.spotify.login5v3.Credentials.AppleSignInCredential other) {
        if (other == com.spotify.login5v3.Credentials.AppleSignInCredential.getDefaultInstance()) return this;
        if (!other.getAuthCode().isEmpty()) {
          authCode_ = other.authCode_;
          onChanged();
        }
        if (!other.getRedirectUri().isEmpty()) {
          redirectUri_ = other.redirectUri_;
          onChanged();
        }
        if (!other.getBundleId().isEmpty()) {
          bundleId_ = other.bundleId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.spotify.login5v3.Credentials.AppleSignInCredential parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.spotify.login5v3.Credentials.AppleSignInCredential) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object authCode_ = "";
      /**
       * <code>string auth_code = 1;</code>
       * @return The authCode.
       */
      public java.lang.String getAuthCode() {
        java.lang.Object ref = authCode_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          authCode_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string auth_code = 1;</code>
       * @return The bytes for authCode.
       */
      public com.google.protobuf.ByteString
          getAuthCodeBytes() {
        java.lang.Object ref = authCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          authCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string auth_code = 1;</code>
       * @param value The authCode to set.
       * @return This builder for chaining.
       */
      public Builder setAuthCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        authCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string auth_code = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAuthCode() {
        
        authCode_ = getDefaultInstance().getAuthCode();
        onChanged();
        return this;
      }
      /**
       * <code>string auth_code = 1;</code>
       * @param value The bytes for authCode to set.
       * @return This builder for chaining.
       */
      public Builder setAuthCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        authCode_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object redirectUri_ = "";
      /**
       * <code>string redirect_uri = 2;</code>
       * @return The redirectUri.
       */
      public java.lang.String getRedirectUri() {
        java.lang.Object ref = redirectUri_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          redirectUri_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string redirect_uri = 2;</code>
       * @return The bytes for redirectUri.
       */
      public com.google.protobuf.ByteString
          getRedirectUriBytes() {
        java.lang.Object ref = redirectUri_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          redirectUri_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string redirect_uri = 2;</code>
       * @param value The redirectUri to set.
       * @return This builder for chaining.
       */
      public Builder setRedirectUri(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        redirectUri_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string redirect_uri = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRedirectUri() {
        
        redirectUri_ = getDefaultInstance().getRedirectUri();
        onChanged();
        return this;
      }
      /**
       * <code>string redirect_uri = 2;</code>
       * @param value The bytes for redirectUri to set.
       * @return This builder for chaining.
       */
      public Builder setRedirectUriBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        redirectUri_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object bundleId_ = "";
      /**
       * <code>string bundle_id = 3;</code>
       * @return The bundleId.
       */
      public java.lang.String getBundleId() {
        java.lang.Object ref = bundleId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          bundleId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string bundle_id = 3;</code>
       * @return The bytes for bundleId.
       */
      public com.google.protobuf.ByteString
          getBundleIdBytes() {
        java.lang.Object ref = bundleId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bundleId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string bundle_id = 3;</code>
       * @param value The bundleId to set.
       * @return This builder for chaining.
       */
      public Builder setBundleId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        bundleId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string bundle_id = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearBundleId() {
        
        bundleId_ = getDefaultInstance().getBundleId();
        onChanged();
        return this;
      }
      /**
       * <code>string bundle_id = 3;</code>
       * @param value The bytes for bundleId to set.
       * @return This builder for chaining.
       */
      public Builder setBundleIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        bundleId_ = value;
        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:spotify.login5.v3.credentials.AppleSignInCredential)
    }

    // @@protoc_insertion_point(class_scope:spotify.login5.v3.credentials.AppleSignInCredential)
    private static final com.spotify.login5v3.Credentials.AppleSignInCredential DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.spotify.login5v3.Credentials.AppleSignInCredential();
    }

    public static com.spotify.login5v3.Credentials.AppleSignInCredential getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AppleSignInCredential>
        PARSER = new com.google.protobuf.AbstractParser<AppleSignInCredential>() {
      @java.lang.Override
      public AppleSignInCredential parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new AppleSignInCredential(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.spotify.login5v3.Credentials.AppleSignInCredential getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_spotify_login5_v3_credentials_StoredCredential_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_spotify_login5_v3_credentials_StoredCredential_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_spotify_login5_v3_credentials_Password_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_spotify_login5_v3_credentials_Password_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_spotify_login5_v3_credentials_FacebookAccessToken_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_spotify_login5_v3_credentials_FacebookAccessToken_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_spotify_login5_v3_credentials_OneTimeToken_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_spotify_login5_v3_credentials_OneTimeToken_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_spotify_login5_v3_credentials_ParentChildCredential_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_spotify_login5_v3_credentials_ParentChildCredential_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_spotify_login5_v3_credentials_AppleSignInCredential_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_spotify_login5_v3_credentials_AppleSignInCredential_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n/spotify/login5/v3/credentials/credenti" +
      "als.proto\022\035spotify.login5.v3.credentials" +
      "\"2\n\020StoredCredential\022\020\n\010username\030\001 \001(\t\022\014" +
      "\n\004data\030\002 \001(\014\"9\n\010Password\022\n\n\002id\030\001 \001(\t\022\020\n\010" +
      "password\030\002 \001(\t\022\017\n\007padding\030\003 \001(\014\";\n\023Faceb" +
      "ookAccessToken\022\016\n\006fb_uid\030\001 \001(\t\022\024\n\014access" +
      "_token\030\002 \001(\t\"\035\n\014OneTimeToken\022\r\n\005token\030\001 " +
      "\001(\t\"|\n\025ParentChildCredential\022\020\n\010child_id" +
      "\030\001 \001(\t\022Q\n\030parent_stored_credential\030\002 \001(\013" +
      "2/.spotify.login5.v3.credentials.StoredC" +
      "redential\"S\n\025AppleSignInCredential\022\021\n\tau" +
      "th_code\030\001 \001(\t\022\024\n\014redirect_uri\030\002 \001(\t\022\021\n\tb" +
      "undle_id\030\003 \001(\tB\026\n\024com.spotify.login5v3b\006" +
      "proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_spotify_login5_v3_credentials_StoredCredential_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_spotify_login5_v3_credentials_StoredCredential_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_spotify_login5_v3_credentials_StoredCredential_descriptor,
        new java.lang.String[] { "Username", "Data", });
    internal_static_spotify_login5_v3_credentials_Password_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_spotify_login5_v3_credentials_Password_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_spotify_login5_v3_credentials_Password_descriptor,
        new java.lang.String[] { "Id", "Password", "Padding", });
    internal_static_spotify_login5_v3_credentials_FacebookAccessToken_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_spotify_login5_v3_credentials_FacebookAccessToken_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_spotify_login5_v3_credentials_FacebookAccessToken_descriptor,
        new java.lang.String[] { "FbUid", "AccessToken", });
    internal_static_spotify_login5_v3_credentials_OneTimeToken_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_spotify_login5_v3_credentials_OneTimeToken_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_spotify_login5_v3_credentials_OneTimeToken_descriptor,
        new java.lang.String[] { "Token", });
    internal_static_spotify_login5_v3_credentials_ParentChildCredential_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_spotify_login5_v3_credentials_ParentChildCredential_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_spotify_login5_v3_credentials_ParentChildCredential_descriptor,
        new java.lang.String[] { "ChildId", "ParentStoredCredential", });
    internal_static_spotify_login5_v3_credentials_AppleSignInCredential_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_spotify_login5_v3_credentials_AppleSignInCredential_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_spotify_login5_v3_credentials_AppleSignInCredential_descriptor,
        new java.lang.String[] { "AuthCode", "RedirectUri", "BundleId", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
