/FileExtraction/Java_unseen/InsightIM_Tok-Android/ChatCore/src/main/java/debug/proto/im/tox/proto/Core.java
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Core.proto

package im.tox.proto;

public final class Core {
  private Core() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  public interface ConnectionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.Connection)
      com.google.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code im.tox.proto.Connection}
   */
  public  static final class Connection extends
      com.google.protobuf.GeneratedMessageLite<
          Connection, Connection.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.Connection)
      ConnectionOrBuilder {
    private Connection() {
    }
    /**
     * Protobuf enum {@code im.tox.proto.Connection.Type}
     */
    public enum Type
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <code>NONE = 0;</code>
       */
      NONE(0),
      /**
       * <code>TCP = 1;</code>
       */
      TCP(1),
      /**
       * <code>UDP = 2;</code>
       */
      UDP(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>NONE = 0;</code>
       */
      public static final int NONE_VALUE = 0;
      /**
       * <code>TCP = 1;</code>
       */
      public static final int TCP_VALUE = 1;
      /**
       * <code>UDP = 2;</code>
       */
      public static final int UDP_VALUE = 2;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Type valueOf(int value) {
        return forNumber(value);
      }

      public static Type forNumber(int value) {
        switch (value) {
          case 0: return NONE;
          case 1: return TCP;
          case 2: return UDP;
          default: return null;
        }
      }

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:im.tox.proto.Connection.Type)
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.Connection parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.Connection parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.Connection parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.Connection parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.Connection parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.Connection parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.Connection parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.Connection parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.Connection parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.Connection parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.Connection prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.Connection}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.Connection, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.Connection)
        im.tox.proto.Core.ConnectionOrBuilder {
      // Construct using im.tox.proto.Core.Connection.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      // @@protoc_insertion_point(builder_scope:im.tox.proto.Connection)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.Connection();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.Connection other = (im.tox.proto.Core.Connection) arg1;
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.Connection.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.Connection)
    private static final im.tox.proto.Core.Connection DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new Connection();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.Connection getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Connection> PARSER;

    public static com.google.protobuf.Parser<Connection> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface UserStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.UserStatus)
      com.google.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code im.tox.proto.UserStatus}
   */
  public  static final class UserStatus extends
      com.google.protobuf.GeneratedMessageLite<
          UserStatus, UserStatus.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.UserStatus)
      UserStatusOrBuilder {
    private UserStatus() {
    }
    /**
     * Protobuf enum {@code im.tox.proto.UserStatus.Type}
     */
    public enum Type
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <code>NONE = 0;</code>
       */
      NONE(0),
      /**
       * <code>AWAY = 1;</code>
       */
      AWAY(1),
      /**
       * <code>BUSY = 2;</code>
       */
      BUSY(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>NONE = 0;</code>
       */
      public static final int NONE_VALUE = 0;
      /**
       * <code>AWAY = 1;</code>
       */
      public static final int AWAY_VALUE = 1;
      /**
       * <code>BUSY = 2;</code>
       */
      public static final int BUSY_VALUE = 2;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Type valueOf(int value) {
        return forNumber(value);
      }

      public static Type forNumber(int value) {
        switch (value) {
          case 0: return NONE;
          case 1: return AWAY;
          case 2: return BUSY;
          default: return null;
        }
      }

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:im.tox.proto.UserStatus.Type)
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.UserStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.UserStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.UserStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.UserStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.UserStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.UserStatus parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.UserStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.UserStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.UserStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.UserStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.UserStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.UserStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.UserStatus, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.UserStatus)
        im.tox.proto.Core.UserStatusOrBuilder {
      // Construct using im.tox.proto.Core.UserStatus.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      // @@protoc_insertion_point(builder_scope:im.tox.proto.UserStatus)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.UserStatus();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.UserStatus other = (im.tox.proto.Core.UserStatus) arg1;
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.UserStatus.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.UserStatus)
    private static final im.tox.proto.Core.UserStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new UserStatus();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.UserStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<UserStatus> PARSER;

    public static com.google.protobuf.Parser<UserStatus> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface MessageTypeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.MessageType)
      com.google.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code im.tox.proto.MessageType}
   */
  public  static final class MessageType extends
      com.google.protobuf.GeneratedMessageLite<
          MessageType, MessageType.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.MessageType)
      MessageTypeOrBuilder {
    private MessageType() {
    }
    /**
     * Protobuf enum {@code im.tox.proto.MessageType.Type}
     */
    public enum Type
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <code>NORMAL = 0;</code>
       */
      NORMAL(0),
      /**
       * <code>ACTION = 1;</code>
       */
      ACTION(1),
      /**
       * <code>BOT = 2;</code>
       */
      BOT(2),
      /**
       * <code>FORWARD = 3;</code>
       */
      FORWARD(3),
      /**
       * <code>GROUP = 4;</code>
       */
      GROUP(4),
      /**
       * <code>OFFLINE = 6;</code>
       */
      OFFLINE(6),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>NORMAL = 0;</code>
       */
      public static final int NORMAL_VALUE = 0;
      /**
       * <code>ACTION = 1;</code>
       */
      public static final int ACTION_VALUE = 1;
      /**
       * <code>BOT = 2;</code>
       */
      public static final int BOT_VALUE = 2;
      /**
       * <code>FORWARD = 3;</code>
       */
      public static final int FORWARD_VALUE = 3;
      /**
       * <code>GROUP = 4;</code>
       */
      public static final int GROUP_VALUE = 4;
      /**
       * <code>OFFLINE = 6;</code>
       */
      public static final int OFFLINE_VALUE = 6;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Type valueOf(int value) {
        return forNumber(value);
      }

      public static Type forNumber(int value) {
        switch (value) {
          case 0: return NORMAL;
          case 1: return ACTION;
          case 2: return BOT;
          case 3: return FORWARD;
          case 4: return GROUP;
          case 6: return OFFLINE;
          default: return null;
        }
      }

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:im.tox.proto.MessageType.Type)
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.MessageType parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.MessageType parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.MessageType parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.MessageType parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.MessageType parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.MessageType parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.MessageType parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.MessageType parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.MessageType parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.MessageType parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.MessageType prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.MessageType}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.MessageType, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.MessageType)
        im.tox.proto.Core.MessageTypeOrBuilder {
      // Construct using im.tox.proto.Core.MessageType.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      // @@protoc_insertion_point(builder_scope:im.tox.proto.MessageType)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.MessageType();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.MessageType other = (im.tox.proto.Core.MessageType) arg1;
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.MessageType.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.MessageType)
    private static final im.tox.proto.Core.MessageType DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new MessageType();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.MessageType getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<MessageType> PARSER;

    public static com.google.protobuf.Parser<MessageType> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FileControlOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FileControl)
      com.google.protobuf.MessageLiteOrBuilder {
  }
  /**
   * Protobuf type {@code im.tox.proto.FileControl}
   */
  public  static final class FileControl extends
      com.google.protobuf.GeneratedMessageLite<
          FileControl, FileControl.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FileControl)
      FileControlOrBuilder {
    private FileControl() {
    }
    /**
     * Protobuf enum {@code im.tox.proto.FileControl.Type}
     */
    public enum Type
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <code>RESUME = 0;</code>
       */
      RESUME(0),
      /**
       * <code>PAUSE = 1;</code>
       */
      PAUSE(1),
      /**
       * <code>CANCEL = 2;</code>
       */
      CANCEL(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>RESUME = 0;</code>
       */
      public static final int RESUME_VALUE = 0;
      /**
       * <code>PAUSE = 1;</code>
       */
      public static final int PAUSE_VALUE = 1;
      /**
       * <code>CANCEL = 2;</code>
       */
      public static final int CANCEL_VALUE = 2;


      public final int getNumber() {
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Type valueOf(int value) {
        return forNumber(value);
      }

      public static Type forNumber(int value) {
        switch (value) {
          case 0: return RESUME;
          case 1: return PAUSE;
          case 2: return CANCEL;
          default: return null;
        }
      }

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:im.tox.proto.FileControl.Type)
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FileControl parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileControl parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileControl parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileControl parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileControl parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileControl parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileControl parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileControl parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileControl parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileControl parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FileControl prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FileControl}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FileControl, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FileControl)
        im.tox.proto.Core.FileControlOrBuilder {
      // Construct using im.tox.proto.Core.FileControl.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      // @@protoc_insertion_point(builder_scope:im.tox.proto.FileControl)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FileControl();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FileControl other = (im.tox.proto.Core.FileControl) arg1;
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FileControl.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FileControl)
    private static final im.tox.proto.Core.FileControl DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FileControl();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FileControl getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FileControl> PARSER;

    public static com.google.protobuf.Parser<FileControl> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface SelfConnectionStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.SelfConnectionStatus)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
     */
    int getConnectionStatusValue();
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
     */
    im.tox.proto.Core.Connection.Type getConnectionStatus();
  }
  /**
   * Protobuf type {@code im.tox.proto.SelfConnectionStatus}
   */
  public  static final class SelfConnectionStatus extends
      com.google.protobuf.GeneratedMessageLite<
          SelfConnectionStatus, SelfConnectionStatus.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.SelfConnectionStatus)
      SelfConnectionStatusOrBuilder {
    private SelfConnectionStatus() {
    }
    public static final int CONNECTION_STATUS_FIELD_NUMBER = 1;
    private int connectionStatus_;
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
     */
    public int getConnectionStatusValue() {
      return connectionStatus_;
    }
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
     */
    public im.tox.proto.Core.Connection.Type getConnectionStatus() {
      im.tox.proto.Core.Connection.Type result = im.tox.proto.Core.Connection.Type.forNumber(connectionStatus_);
      return result == null ? im.tox.proto.Core.Connection.Type.UNRECOGNIZED : result;
    }
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
     */
    private void setConnectionStatusValue(int value) {
        connectionStatus_ = value;
    }
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
     */
    private void setConnectionStatus(im.tox.proto.Core.Connection.Type value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      connectionStatus_ = value.getNumber();
    }
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
     */
    private void clearConnectionStatus() {
      
      connectionStatus_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (connectionStatus_ != im.tox.proto.Core.Connection.Type.NONE.getNumber()) {
        output.writeEnum(1, connectionStatus_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (connectionStatus_ != im.tox.proto.Core.Connection.Type.NONE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, connectionStatus_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.SelfConnectionStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.SelfConnectionStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.SelfConnectionStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.SelfConnectionStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.SelfConnectionStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.SelfConnectionStatus parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.SelfConnectionStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.SelfConnectionStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.SelfConnectionStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.SelfConnectionStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.SelfConnectionStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.SelfConnectionStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.SelfConnectionStatus, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.SelfConnectionStatus)
        im.tox.proto.Core.SelfConnectionStatusOrBuilder {
      // Construct using im.tox.proto.Core.SelfConnectionStatus.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
       */
      public int getConnectionStatusValue() {
        return instance.getConnectionStatusValue();
      }
      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
       */
      public Builder setConnectionStatusValue(int value) {
        copyOnWrite();
        instance.setConnectionStatusValue(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
       */
      public im.tox.proto.Core.Connection.Type getConnectionStatus() {
        return instance.getConnectionStatus();
      }
      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
       */
      public Builder setConnectionStatus(im.tox.proto.Core.Connection.Type value) {
        copyOnWrite();
        instance.setConnectionStatus(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 1;</code>
       */
      public Builder clearConnectionStatus() {
        copyOnWrite();
        instance.clearConnectionStatus();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.SelfConnectionStatus)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.SelfConnectionStatus();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.SelfConnectionStatus other = (im.tox.proto.Core.SelfConnectionStatus) arg1;
          connectionStatus_ = visitor.visitInt(connectionStatus_ != 0, connectionStatus_,    other.connectionStatus_ != 0, other.connectionStatus_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  int rawValue = input.readEnum();

                  connectionStatus_ = rawValue;
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.SelfConnectionStatus.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.SelfConnectionStatus)
    private static final im.tox.proto.Core.SelfConnectionStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new SelfConnectionStatus();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.SelfConnectionStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<SelfConnectionStatus> PARSER;

    public static com.google.protobuf.Parser<SelfConnectionStatus> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendNameOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendName)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional bytes name = 2;</code>
     */
    com.google.protobuf.ByteString getName();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendName}
   */
  public  static final class FriendName extends
      com.google.protobuf.GeneratedMessageLite<
          FriendName, FriendName.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendName)
      FriendNameOrBuilder {
    private FriendName() {
      name_ = com.google.protobuf.ByteString.EMPTY;
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString name_;
    /**
     * <code>optional bytes name = 2;</code>
     */
    public com.google.protobuf.ByteString getName() {
      return name_;
    }
    /**
     * <code>optional bytes name = 2;</code>
     */
    private void setName(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      name_ = value;
    }
    /**
     * <code>optional bytes name = 2;</code>
     */
    private void clearName() {
      
      name_ = getDefaultInstance().getName();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (!name_.isEmpty()) {
        output.writeBytes(2, name_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (!name_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, name_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendName parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendName parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendName parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendName parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendName parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendName parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendName parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendName parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendName parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendName parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendName prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendName}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendName, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendName)
        im.tox.proto.Core.FriendNameOrBuilder {
      // Construct using im.tox.proto.Core.FriendName.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional bytes name = 2;</code>
       */
      public com.google.protobuf.ByteString getName() {
        return instance.getName();
      }
      /**
       * <code>optional bytes name = 2;</code>
       */
      public Builder setName(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setName(value);
        return this;
      }
      /**
       * <code>optional bytes name = 2;</code>
       */
      public Builder clearName() {
        copyOnWrite();
        instance.clearName();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendName)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendName();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendName other = (im.tox.proto.Core.FriendName) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          name_ = visitor.visitByteString(name_ != com.google.protobuf.ByteString.EMPTY, name_,
              other.name_ != com.google.protobuf.ByteString.EMPTY, other.name_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 18: {

                  name_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendName.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendName)
    private static final im.tox.proto.Core.FriendName DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendName();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendName getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendName> PARSER;

    public static com.google.protobuf.Parser<FriendName> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendStatusMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendStatusMessage)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional bytes message = 2;</code>
     */
    com.google.protobuf.ByteString getMessage();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendStatusMessage}
   */
  public  static final class FriendStatusMessage extends
      com.google.protobuf.GeneratedMessageLite<
          FriendStatusMessage, FriendStatusMessage.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendStatusMessage)
      FriendStatusMessageOrBuilder {
    private FriendStatusMessage() {
      message_ = com.google.protobuf.ByteString.EMPTY;
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString message_;
    /**
     * <code>optional bytes message = 2;</code>
     */
    public com.google.protobuf.ByteString getMessage() {
      return message_;
    }
    /**
     * <code>optional bytes message = 2;</code>
     */
    private void setMessage(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      message_ = value;
    }
    /**
     * <code>optional bytes message = 2;</code>
     */
    private void clearMessage() {
      
      message_ = getDefaultInstance().getMessage();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (!message_.isEmpty()) {
        output.writeBytes(2, message_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (!message_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, message_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendStatusMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendStatusMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendStatusMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendStatusMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendStatusMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendStatusMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendStatusMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendStatusMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendStatusMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendStatusMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendStatusMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendStatusMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendStatusMessage, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendStatusMessage)
        im.tox.proto.Core.FriendStatusMessageOrBuilder {
      // Construct using im.tox.proto.Core.FriendStatusMessage.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional bytes message = 2;</code>
       */
      public com.google.protobuf.ByteString getMessage() {
        return instance.getMessage();
      }
      /**
       * <code>optional bytes message = 2;</code>
       */
      public Builder setMessage(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setMessage(value);
        return this;
      }
      /**
       * <code>optional bytes message = 2;</code>
       */
      public Builder clearMessage() {
        copyOnWrite();
        instance.clearMessage();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendStatusMessage)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendStatusMessage();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendStatusMessage other = (im.tox.proto.Core.FriendStatusMessage) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          message_ = visitor.visitByteString(message_ != com.google.protobuf.ByteString.EMPTY, message_,
              other.message_ != com.google.protobuf.ByteString.EMPTY, other.message_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 18: {

                  message_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendStatusMessage.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendStatusMessage)
    private static final im.tox.proto.Core.FriendStatusMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendStatusMessage();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendStatusMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendStatusMessage> PARSER;

    public static com.google.protobuf.Parser<FriendStatusMessage> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendStatus)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
     */
    int getStatusValue();
    /**
     * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
     */
    im.tox.proto.Core.UserStatus.Type getStatus();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendStatus}
   */
  public  static final class FriendStatus extends
      com.google.protobuf.GeneratedMessageLite<
          FriendStatus, FriendStatus.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendStatus)
      FriendStatusOrBuilder {
    private FriendStatus() {
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    private int status_;
    /**
     * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
     */
    public int getStatusValue() {
      return status_;
    }
    /**
     * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
     */
    public im.tox.proto.Core.UserStatus.Type getStatus() {
      im.tox.proto.Core.UserStatus.Type result = im.tox.proto.Core.UserStatus.Type.forNumber(status_);
      return result == null ? im.tox.proto.Core.UserStatus.Type.UNRECOGNIZED : result;
    }
    /**
     * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
     */
    private void setStatusValue(int value) {
        status_ = value;
    }
    /**
     * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
     */
    private void setStatus(im.tox.proto.Core.UserStatus.Type value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      status_ = value.getNumber();
    }
    /**
     * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
     */
    private void clearStatus() {
      
      status_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (status_ != im.tox.proto.Core.UserStatus.Type.NONE.getNumber()) {
        output.writeEnum(2, status_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (status_ != im.tox.proto.Core.UserStatus.Type.NONE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, status_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendStatus parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendStatus, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendStatus)
        im.tox.proto.Core.FriendStatusOrBuilder {
      // Construct using im.tox.proto.Core.FriendStatus.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
       */
      public int getStatusValue() {
        return instance.getStatusValue();
      }
      /**
       * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
       */
      public Builder setStatusValue(int value) {
        copyOnWrite();
        instance.setStatusValue(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
       */
      public im.tox.proto.Core.UserStatus.Type getStatus() {
        return instance.getStatus();
      }
      /**
       * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
       */
      public Builder setStatus(im.tox.proto.Core.UserStatus.Type value) {
        copyOnWrite();
        instance.setStatus(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.UserStatus.Type status = 2;</code>
       */
      public Builder clearStatus() {
        copyOnWrite();
        instance.clearStatus();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendStatus)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendStatus();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendStatus other = (im.tox.proto.Core.FriendStatus) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          status_ = visitor.visitInt(status_ != 0, status_,    other.status_ != 0, other.status_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 16: {
                  int rawValue = input.readEnum();

                  status_ = rawValue;
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendStatus.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendStatus)
    private static final im.tox.proto.Core.FriendStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendStatus();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendStatus> PARSER;

    public static com.google.protobuf.Parser<FriendStatus> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendConnectionStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendConnectionStatus)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
     */
    int getConnectionStatusValue();
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
     */
    im.tox.proto.Core.Connection.Type getConnectionStatus();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendConnectionStatus}
   */
  public  static final class FriendConnectionStatus extends
      com.google.protobuf.GeneratedMessageLite<
          FriendConnectionStatus, FriendConnectionStatus.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendConnectionStatus)
      FriendConnectionStatusOrBuilder {
    private FriendConnectionStatus() {
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int CONNECTION_STATUS_FIELD_NUMBER = 2;
    private int connectionStatus_;
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
     */
    public int getConnectionStatusValue() {
      return connectionStatus_;
    }
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
     */
    public im.tox.proto.Core.Connection.Type getConnectionStatus() {
      im.tox.proto.Core.Connection.Type result = im.tox.proto.Core.Connection.Type.forNumber(connectionStatus_);
      return result == null ? im.tox.proto.Core.Connection.Type.UNRECOGNIZED : result;
    }
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
     */
    private void setConnectionStatusValue(int value) {
        connectionStatus_ = value;
    }
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
     */
    private void setConnectionStatus(im.tox.proto.Core.Connection.Type value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      connectionStatus_ = value.getNumber();
    }
    /**
     * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
     */
    private void clearConnectionStatus() {
      
      connectionStatus_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (connectionStatus_ != im.tox.proto.Core.Connection.Type.NONE.getNumber()) {
        output.writeEnum(2, connectionStatus_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (connectionStatus_ != im.tox.proto.Core.Connection.Type.NONE.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, connectionStatus_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendConnectionStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendConnectionStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendConnectionStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendConnectionStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendConnectionStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendConnectionStatus parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendConnectionStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendConnectionStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendConnectionStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendConnectionStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendConnectionStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendConnectionStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendConnectionStatus, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendConnectionStatus)
        im.tox.proto.Core.FriendConnectionStatusOrBuilder {
      // Construct using im.tox.proto.Core.FriendConnectionStatus.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
       */
      public int getConnectionStatusValue() {
        return instance.getConnectionStatusValue();
      }
      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
       */
      public Builder setConnectionStatusValue(int value) {
        copyOnWrite();
        instance.setConnectionStatusValue(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
       */
      public im.tox.proto.Core.Connection.Type getConnectionStatus() {
        return instance.getConnectionStatus();
      }
      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
       */
      public Builder setConnectionStatus(im.tox.proto.Core.Connection.Type value) {
        copyOnWrite();
        instance.setConnectionStatus(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.Connection.Type connection_status = 2;</code>
       */
      public Builder clearConnectionStatus() {
        copyOnWrite();
        instance.clearConnectionStatus();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendConnectionStatus)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendConnectionStatus();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendConnectionStatus other = (im.tox.proto.Core.FriendConnectionStatus) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          connectionStatus_ = visitor.visitInt(connectionStatus_ != 0, connectionStatus_,    other.connectionStatus_ != 0, other.connectionStatus_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 16: {
                  int rawValue = input.readEnum();

                  connectionStatus_ = rawValue;
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendConnectionStatus.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendConnectionStatus)
    private static final im.tox.proto.Core.FriendConnectionStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendConnectionStatus();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendConnectionStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendConnectionStatus> PARSER;

    public static com.google.protobuf.Parser<FriendConnectionStatus> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendTypingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendTyping)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional bool is_typing = 2;</code>
     */
    boolean getIsTyping();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendTyping}
   */
  public  static final class FriendTyping extends
      com.google.protobuf.GeneratedMessageLite<
          FriendTyping, FriendTyping.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendTyping)
      FriendTypingOrBuilder {
    private FriendTyping() {
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int IS_TYPING_FIELD_NUMBER = 2;
    private boolean isTyping_;
    /**
     * <code>optional bool is_typing = 2;</code>
     */
    public boolean getIsTyping() {
      return isTyping_;
    }
    /**
     * <code>optional bool is_typing = 2;</code>
     */
    private void setIsTyping(boolean value) {
      
      isTyping_ = value;
    }
    /**
     * <code>optional bool is_typing = 2;</code>
     */
    private void clearIsTyping() {
      
      isTyping_ = false;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (isTyping_ != false) {
        output.writeBool(2, isTyping_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (isTyping_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, isTyping_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendTyping parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendTyping parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendTyping parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendTyping parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendTyping parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendTyping parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendTyping parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendTyping parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendTyping parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendTyping parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendTyping prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendTyping}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendTyping, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendTyping)
        im.tox.proto.Core.FriendTypingOrBuilder {
      // Construct using im.tox.proto.Core.FriendTyping.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional bool is_typing = 2;</code>
       */
      public boolean getIsTyping() {
        return instance.getIsTyping();
      }
      /**
       * <code>optional bool is_typing = 2;</code>
       */
      public Builder setIsTyping(boolean value) {
        copyOnWrite();
        instance.setIsTyping(value);
        return this;
      }
      /**
       * <code>optional bool is_typing = 2;</code>
       */
      public Builder clearIsTyping() {
        copyOnWrite();
        instance.clearIsTyping();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendTyping)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendTyping();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendTyping other = (im.tox.proto.Core.FriendTyping) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          isTyping_ = visitor.visitBoolean(isTyping_ != false, isTyping_,
              other.isTyping_ != false, other.isTyping_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 16: {

                  isTyping_ = input.readBool();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendTyping.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendTyping)
    private static final im.tox.proto.Core.FriendTyping DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendTyping();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendTyping getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendTyping> PARSER;

    public static com.google.protobuf.Parser<FriendTyping> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendReadReceiptOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendReadReceipt)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional uint32 message_id = 2;</code>
     */
    int getMessageId();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendReadReceipt}
   */
  public  static final class FriendReadReceipt extends
      com.google.protobuf.GeneratedMessageLite<
          FriendReadReceipt, FriendReadReceipt.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendReadReceipt)
      FriendReadReceiptOrBuilder {
    private FriendReadReceipt() {
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int MESSAGE_ID_FIELD_NUMBER = 2;
    private int messageId_;
    /**
     * <code>optional uint32 message_id = 2;</code>
     */
    public int getMessageId() {
      return messageId_;
    }
    /**
     * <code>optional uint32 message_id = 2;</code>
     */
    private void setMessageId(int value) {
      
      messageId_ = value;
    }
    /**
     * <code>optional uint32 message_id = 2;</code>
     */
    private void clearMessageId() {
      
      messageId_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (messageId_ != 0) {
        output.writeUInt32(2, messageId_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (messageId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, messageId_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendReadReceipt parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendReadReceipt parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendReadReceipt parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendReadReceipt parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendReadReceipt parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendReadReceipt parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendReadReceipt parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendReadReceipt parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendReadReceipt parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendReadReceipt parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendReadReceipt prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendReadReceipt}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendReadReceipt, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendReadReceipt)
        im.tox.proto.Core.FriendReadReceiptOrBuilder {
      // Construct using im.tox.proto.Core.FriendReadReceipt.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional uint32 message_id = 2;</code>
       */
      public int getMessageId() {
        return instance.getMessageId();
      }
      /**
       * <code>optional uint32 message_id = 2;</code>
       */
      public Builder setMessageId(int value) {
        copyOnWrite();
        instance.setMessageId(value);
        return this;
      }
      /**
       * <code>optional uint32 message_id = 2;</code>
       */
      public Builder clearMessageId() {
        copyOnWrite();
        instance.clearMessageId();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendReadReceipt)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendReadReceipt();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendReadReceipt other = (im.tox.proto.Core.FriendReadReceipt) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          messageId_ = visitor.visitInt(messageId_ != 0, messageId_,
              other.messageId_ != 0, other.messageId_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 16: {

                  messageId_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendReadReceipt.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendReadReceipt)
    private static final im.tox.proto.Core.FriendReadReceipt DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendReadReceipt();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendReadReceipt getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendReadReceipt> PARSER;

    public static com.google.protobuf.Parser<FriendReadReceipt> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional bytes public_key = 1;</code>
     */
    com.google.protobuf.ByteString getPublicKey();

    /**
     * <code>optional uint32 time_delta = 2;</code>
     */
    int getTimeDelta();

    /**
     * <code>optional bytes message = 3;</code>
     */
    com.google.protobuf.ByteString getMessage();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendRequest}
   */
  public  static final class FriendRequest extends
      com.google.protobuf.GeneratedMessageLite<
          FriendRequest, FriendRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendRequest)
      FriendRequestOrBuilder {
    private FriendRequest() {
      publicKey_ = com.google.protobuf.ByteString.EMPTY;
      message_ = com.google.protobuf.ByteString.EMPTY;
    }
    public static final int PUBLIC_KEY_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString publicKey_;
    /**
     * <code>optional bytes public_key = 1;</code>
     */
    public com.google.protobuf.ByteString getPublicKey() {
      return publicKey_;
    }
    /**
     * <code>optional bytes public_key = 1;</code>
     */
    private void setPublicKey(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      publicKey_ = value;
    }
    /**
     * <code>optional bytes public_key = 1;</code>
     */
    private void clearPublicKey() {
      
      publicKey_ = getDefaultInstance().getPublicKey();
    }

    public static final int TIME_DELTA_FIELD_NUMBER = 2;
    private int timeDelta_;
    /**
     * <code>optional uint32 time_delta = 2;</code>
     */
    public int getTimeDelta() {
      return timeDelta_;
    }
    /**
     * <code>optional uint32 time_delta = 2;</code>
     */
    private void setTimeDelta(int value) {
      
      timeDelta_ = value;
    }
    /**
     * <code>optional uint32 time_delta = 2;</code>
     */
    private void clearTimeDelta() {
      
      timeDelta_ = 0;
    }

    public static final int MESSAGE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString message_;
    /**
     * <code>optional bytes message = 3;</code>
     */
    public com.google.protobuf.ByteString getMessage() {
      return message_;
    }
    /**
     * <code>optional bytes message = 3;</code>
     */
    private void setMessage(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      message_ = value;
    }
    /**
     * <code>optional bytes message = 3;</code>
     */
    private void clearMessage() {
      
      message_ = getDefaultInstance().getMessage();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!publicKey_.isEmpty()) {
        output.writeBytes(1, publicKey_);
      }
      if (timeDelta_ != 0) {
        output.writeUInt32(2, timeDelta_);
      }
      if (!message_.isEmpty()) {
        output.writeBytes(3, message_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (!publicKey_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, publicKey_);
      }
      if (timeDelta_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, timeDelta_);
      }
      if (!message_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, message_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendRequest)
        im.tox.proto.Core.FriendRequestOrBuilder {
      // Construct using im.tox.proto.Core.FriendRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional bytes public_key = 1;</code>
       */
      public com.google.protobuf.ByteString getPublicKey() {
        return instance.getPublicKey();
      }
      /**
       * <code>optional bytes public_key = 1;</code>
       */
      public Builder setPublicKey(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setPublicKey(value);
        return this;
      }
      /**
       * <code>optional bytes public_key = 1;</code>
       */
      public Builder clearPublicKey() {
        copyOnWrite();
        instance.clearPublicKey();
        return this;
      }

      /**
       * <code>optional uint32 time_delta = 2;</code>
       */
      public int getTimeDelta() {
        return instance.getTimeDelta();
      }
      /**
       * <code>optional uint32 time_delta = 2;</code>
       */
      public Builder setTimeDelta(int value) {
        copyOnWrite();
        instance.setTimeDelta(value);
        return this;
      }
      /**
       * <code>optional uint32 time_delta = 2;</code>
       */
      public Builder clearTimeDelta() {
        copyOnWrite();
        instance.clearTimeDelta();
        return this;
      }

      /**
       * <code>optional bytes message = 3;</code>
       */
      public com.google.protobuf.ByteString getMessage() {
        return instance.getMessage();
      }
      /**
       * <code>optional bytes message = 3;</code>
       */
      public Builder setMessage(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setMessage(value);
        return this;
      }
      /**
       * <code>optional bytes message = 3;</code>
       */
      public Builder clearMessage() {
        copyOnWrite();
        instance.clearMessage();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendRequest)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendRequest();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendRequest other = (im.tox.proto.Core.FriendRequest) arg1;
          publicKey_ = visitor.visitByteString(publicKey_ != com.google.protobuf.ByteString.EMPTY, publicKey_,
              other.publicKey_ != com.google.protobuf.ByteString.EMPTY, other.publicKey_);
          timeDelta_ = visitor.visitInt(timeDelta_ != 0, timeDelta_,
              other.timeDelta_ != 0, other.timeDelta_);
          message_ = visitor.visitByteString(message_ != com.google.protobuf.ByteString.EMPTY, message_,
              other.message_ != com.google.protobuf.ByteString.EMPTY, other.message_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {

                  publicKey_ = input.readBytes();
                  break;
                }
                case 16: {

                  timeDelta_ = input.readUInt32();
                  break;
                }
                case 26: {

                  message_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendRequest.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendRequest)
    private static final im.tox.proto.Core.FriendRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendRequest();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendRequest> PARSER;

    public static com.google.protobuf.Parser<FriendRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendMessageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendMessage)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
     */
    int getTypeValue();
    /**
     * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
     */
    im.tox.proto.Core.MessageType.Type getType();

    /**
     * <code>optional uint32 time_delta = 3;</code>
     */
    int getTimeDelta();

    /**
     * <code>optional bytes message = 4;</code>
     */
    com.google.protobuf.ByteString getMessage();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendMessage}
   */
  public  static final class FriendMessage extends
      com.google.protobuf.GeneratedMessageLite<
          FriendMessage, FriendMessage.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendMessage)
      FriendMessageOrBuilder {
    private FriendMessage() {
      message_ = com.google.protobuf.ByteString.EMPTY;
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private int type_;
    /**
     * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
     */
    public int getTypeValue() {
      return type_;
    }
    /**
     * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
     */
    public im.tox.proto.Core.MessageType.Type getType() {
      im.tox.proto.Core.MessageType.Type result = im.tox.proto.Core.MessageType.Type.forNumber(type_);
      return result == null ? im.tox.proto.Core.MessageType.Type.UNRECOGNIZED : result;
    }
    /**
     * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
     */
    private void setTypeValue(int value) {
        type_ = value;
    }
    /**
     * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
     */
    private void setType(im.tox.proto.Core.MessageType.Type value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      type_ = value.getNumber();
    }
    /**
     * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
     */
    private void clearType() {
      
      type_ = 0;
    }

    public static final int TIME_DELTA_FIELD_NUMBER = 3;
    private int timeDelta_;
    /**
     * <code>optional uint32 time_delta = 3;</code>
     */
    public int getTimeDelta() {
      return timeDelta_;
    }
    /**
     * <code>optional uint32 time_delta = 3;</code>
     */
    private void setTimeDelta(int value) {
      
      timeDelta_ = value;
    }
    /**
     * <code>optional uint32 time_delta = 3;</code>
     */
    private void clearTimeDelta() {
      
      timeDelta_ = 0;
    }

    public static final int MESSAGE_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString message_;
    /**
     * <code>optional bytes message = 4;</code>
     */
    public com.google.protobuf.ByteString getMessage() {
      return message_;
    }
    /**
     * <code>optional bytes message = 4;</code>
     */
    private void setMessage(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      message_ = value;
    }
    /**
     * <code>optional bytes message = 4;</code>
     */
    private void clearMessage() {
      
      message_ = getDefaultInstance().getMessage();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (type_ != im.tox.proto.Core.MessageType.Type.NORMAL.getNumber()) {
        output.writeEnum(2, type_);
      }
      if (timeDelta_ != 0) {
        output.writeUInt32(3, timeDelta_);
      }
      if (!message_.isEmpty()) {
        output.writeBytes(4, message_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (type_ != im.tox.proto.Core.MessageType.Type.NORMAL.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, type_);
      }
      if (timeDelta_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, timeDelta_);
      }
      if (!message_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, message_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendMessage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendMessage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendMessage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendMessage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendMessage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendMessage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendMessage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendMessage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendMessage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendMessage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendMessage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendMessage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendMessage, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendMessage)
        im.tox.proto.Core.FriendMessageOrBuilder {
      // Construct using im.tox.proto.Core.FriendMessage.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
       */
      public int getTypeValue() {
        return instance.getTypeValue();
      }
      /**
       * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
       */
      public Builder setTypeValue(int value) {
        copyOnWrite();
        instance.setTypeValue(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
       */
      public im.tox.proto.Core.MessageType.Type getType() {
        return instance.getType();
      }
      /**
       * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
       */
      public Builder setType(im.tox.proto.Core.MessageType.Type value) {
        copyOnWrite();
        instance.setType(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.MessageType.Type type = 2;</code>
       */
      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }

      /**
       * <code>optional uint32 time_delta = 3;</code>
       */
      public int getTimeDelta() {
        return instance.getTimeDelta();
      }
      /**
       * <code>optional uint32 time_delta = 3;</code>
       */
      public Builder setTimeDelta(int value) {
        copyOnWrite();
        instance.setTimeDelta(value);
        return this;
      }
      /**
       * <code>optional uint32 time_delta = 3;</code>
       */
      public Builder clearTimeDelta() {
        copyOnWrite();
        instance.clearTimeDelta();
        return this;
      }

      /**
       * <code>optional bytes message = 4;</code>
       */
      public com.google.protobuf.ByteString getMessage() {
        return instance.getMessage();
      }
      /**
       * <code>optional bytes message = 4;</code>
       */
      public Builder setMessage(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setMessage(value);
        return this;
      }
      /**
       * <code>optional bytes message = 4;</code>
       */
      public Builder clearMessage() {
        copyOnWrite();
        instance.clearMessage();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendMessage)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendMessage();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendMessage other = (im.tox.proto.Core.FriendMessage) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          type_ = visitor.visitInt(type_ != 0, type_,    other.type_ != 0, other.type_);
          timeDelta_ = visitor.visitInt(timeDelta_ != 0, timeDelta_,
              other.timeDelta_ != 0, other.timeDelta_);
          message_ = visitor.visitByteString(message_ != com.google.protobuf.ByteString.EMPTY, message_,
              other.message_ != com.google.protobuf.ByteString.EMPTY, other.message_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 16: {
                  int rawValue = input.readEnum();

                  type_ = rawValue;
                  break;
                }
                case 24: {

                  timeDelta_ = input.readUInt32();
                  break;
                }
                case 34: {

                  message_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendMessage.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendMessage)
    private static final im.tox.proto.Core.FriendMessage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendMessage();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendMessage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendMessage> PARSER;

    public static com.google.protobuf.Parser<FriendMessage> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FileRecvControlOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FileRecvControl)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    int getFileNumber();

    /**
     * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
     */
    int getControlValue();
    /**
     * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
     */
    im.tox.proto.Core.FileControl.Type getControl();
  }
  /**
   * Protobuf type {@code im.tox.proto.FileRecvControl}
   */
  public  static final class FileRecvControl extends
      com.google.protobuf.GeneratedMessageLite<
          FileRecvControl, FileRecvControl.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FileRecvControl)
      FileRecvControlOrBuilder {
    private FileRecvControl() {
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int FILE_NUMBER_FIELD_NUMBER = 2;
    private int fileNumber_;
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    public int getFileNumber() {
      return fileNumber_;
    }
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    private void setFileNumber(int value) {
      
      fileNumber_ = value;
    }
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    private void clearFileNumber() {
      
      fileNumber_ = 0;
    }

    public static final int CONTROL_FIELD_NUMBER = 3;
    private int control_;
    /**
     * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
     */
    public int getControlValue() {
      return control_;
    }
    /**
     * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
     */
    public im.tox.proto.Core.FileControl.Type getControl() {
      im.tox.proto.Core.FileControl.Type result = im.tox.proto.Core.FileControl.Type.forNumber(control_);
      return result == null ? im.tox.proto.Core.FileControl.Type.UNRECOGNIZED : result;
    }
    /**
     * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
     */
    private void setControlValue(int value) {
        control_ = value;
    }
    /**
     * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
     */
    private void setControl(im.tox.proto.Core.FileControl.Type value) {
      if (value == null) {
        throw new NullPointerException();
      }
      
      control_ = value.getNumber();
    }
    /**
     * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
     */
    private void clearControl() {
      
      control_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (fileNumber_ != 0) {
        output.writeUInt32(2, fileNumber_);
      }
      if (control_ != im.tox.proto.Core.FileControl.Type.RESUME.getNumber()) {
        output.writeEnum(3, control_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (fileNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, fileNumber_);
      }
      if (control_ != im.tox.proto.Core.FileControl.Type.RESUME.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, control_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FileRecvControl parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileRecvControl parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecvControl parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileRecvControl parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecvControl parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileRecvControl parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecvControl parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileRecvControl parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecvControl parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileRecvControl parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FileRecvControl prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FileRecvControl}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FileRecvControl, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FileRecvControl)
        im.tox.proto.Core.FileRecvControlOrBuilder {
      // Construct using im.tox.proto.Core.FileRecvControl.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public int getFileNumber() {
        return instance.getFileNumber();
      }
      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public Builder setFileNumber(int value) {
        copyOnWrite();
        instance.setFileNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public Builder clearFileNumber() {
        copyOnWrite();
        instance.clearFileNumber();
        return this;
      }

      /**
       * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
       */
      public int getControlValue() {
        return instance.getControlValue();
      }
      /**
       * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
       */
      public Builder setControlValue(int value) {
        copyOnWrite();
        instance.setControlValue(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
       */
      public im.tox.proto.Core.FileControl.Type getControl() {
        return instance.getControl();
      }
      /**
       * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
       */
      public Builder setControl(im.tox.proto.Core.FileControl.Type value) {
        copyOnWrite();
        instance.setControl(value);
        return this;
      }
      /**
       * <code>optional .im.tox.proto.FileControl.Type control = 3;</code>
       */
      public Builder clearControl() {
        copyOnWrite();
        instance.clearControl();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FileRecvControl)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FileRecvControl();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FileRecvControl other = (im.tox.proto.Core.FileRecvControl) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          fileNumber_ = visitor.visitInt(fileNumber_ != 0, fileNumber_,
              other.fileNumber_ != 0, other.fileNumber_);
          control_ = visitor.visitInt(control_ != 0, control_,    other.control_ != 0, other.control_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 16: {

                  fileNumber_ = input.readUInt32();
                  break;
                }
                case 24: {
                  int rawValue = input.readEnum();

                  control_ = rawValue;
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FileRecvControl.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FileRecvControl)
    private static final im.tox.proto.Core.FileRecvControl DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FileRecvControl();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FileRecvControl getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FileRecvControl> PARSER;

    public static com.google.protobuf.Parser<FileRecvControl> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FileChunkRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FileChunkRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    int getFileNumber();

    /**
     * <code>optional uint64 position = 3;</code>
     */
    long getPosition();

    /**
     * <code>optional uint32 length = 4;</code>
     */
    int getLength();
  }
  /**
   * Protobuf type {@code im.tox.proto.FileChunkRequest}
   */
  public  static final class FileChunkRequest extends
      com.google.protobuf.GeneratedMessageLite<
          FileChunkRequest, FileChunkRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FileChunkRequest)
      FileChunkRequestOrBuilder {
    private FileChunkRequest() {
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int FILE_NUMBER_FIELD_NUMBER = 2;
    private int fileNumber_;
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    public int getFileNumber() {
      return fileNumber_;
    }
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    private void setFileNumber(int value) {
      
      fileNumber_ = value;
    }
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    private void clearFileNumber() {
      
      fileNumber_ = 0;
    }

    public static final int POSITION_FIELD_NUMBER = 3;
    private long position_;
    /**
     * <code>optional uint64 position = 3;</code>
     */
    public long getPosition() {
      return position_;
    }
    /**
     * <code>optional uint64 position = 3;</code>
     */
    private void setPosition(long value) {
      
      position_ = value;
    }
    /**
     * <code>optional uint64 position = 3;</code>
     */
    private void clearPosition() {
      
      position_ = 0L;
    }

    public static final int LENGTH_FIELD_NUMBER = 4;
    private int length_;
    /**
     * <code>optional uint32 length = 4;</code>
     */
    public int getLength() {
      return length_;
    }
    /**
     * <code>optional uint32 length = 4;</code>
     */
    private void setLength(int value) {
      
      length_ = value;
    }
    /**
     * <code>optional uint32 length = 4;</code>
     */
    private void clearLength() {
      
      length_ = 0;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (fileNumber_ != 0) {
        output.writeUInt32(2, fileNumber_);
      }
      if (position_ != 0L) {
        output.writeUInt64(3, position_);
      }
      if (length_ != 0) {
        output.writeUInt32(4, length_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (fileNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, fileNumber_);
      }
      if (position_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, position_);
      }
      if (length_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, length_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FileChunkRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileChunkRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileChunkRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileChunkRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileChunkRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileChunkRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileChunkRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileChunkRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileChunkRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileChunkRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FileChunkRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FileChunkRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FileChunkRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FileChunkRequest)
        im.tox.proto.Core.FileChunkRequestOrBuilder {
      // Construct using im.tox.proto.Core.FileChunkRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public int getFileNumber() {
        return instance.getFileNumber();
      }
      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public Builder setFileNumber(int value) {
        copyOnWrite();
        instance.setFileNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public Builder clearFileNumber() {
        copyOnWrite();
        instance.clearFileNumber();
        return this;
      }

      /**
       * <code>optional uint64 position = 3;</code>
       */
      public long getPosition() {
        return instance.getPosition();
      }
      /**
       * <code>optional uint64 position = 3;</code>
       */
      public Builder setPosition(long value) {
        copyOnWrite();
        instance.setPosition(value);
        return this;
      }
      /**
       * <code>optional uint64 position = 3;</code>
       */
      public Builder clearPosition() {
        copyOnWrite();
        instance.clearPosition();
        return this;
      }

      /**
       * <code>optional uint32 length = 4;</code>
       */
      public int getLength() {
        return instance.getLength();
      }
      /**
       * <code>optional uint32 length = 4;</code>
       */
      public Builder setLength(int value) {
        copyOnWrite();
        instance.setLength(value);
        return this;
      }
      /**
       * <code>optional uint32 length = 4;</code>
       */
      public Builder clearLength() {
        copyOnWrite();
        instance.clearLength();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FileChunkRequest)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FileChunkRequest();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FileChunkRequest other = (im.tox.proto.Core.FileChunkRequest) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          fileNumber_ = visitor.visitInt(fileNumber_ != 0, fileNumber_,
              other.fileNumber_ != 0, other.fileNumber_);
          position_ = visitor.visitLong(position_ != 0L, position_,
              other.position_ != 0L, other.position_);
          length_ = visitor.visitInt(length_ != 0, length_,
              other.length_ != 0, other.length_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 16: {

                  fileNumber_ = input.readUInt32();
                  break;
                }
                case 24: {

                  position_ = input.readUInt64();
                  break;
                }
                case 32: {

                  length_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FileChunkRequest.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FileChunkRequest)
    private static final im.tox.proto.Core.FileChunkRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FileChunkRequest();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FileChunkRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FileChunkRequest> PARSER;

    public static com.google.protobuf.Parser<FileChunkRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FileRecvOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FileRecv)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    int getFileNumber();

    /**
     * <code>optional uint32 kind = 3;</code>
     */
    int getKind();

    /**
     * <code>optional uint64 file_size = 4;</code>
     */
    long getFileSize();

    /**
     * <code>optional bytes filename = 5;</code>
     */
    com.google.protobuf.ByteString getFilename();
  }
  /**
   * Protobuf type {@code im.tox.proto.FileRecv}
   */
  public  static final class FileRecv extends
      com.google.protobuf.GeneratedMessageLite<
          FileRecv, FileRecv.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FileRecv)
      FileRecvOrBuilder {
    private FileRecv() {
      filename_ = com.google.protobuf.ByteString.EMPTY;
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int FILE_NUMBER_FIELD_NUMBER = 2;
    private int fileNumber_;
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    public int getFileNumber() {
      return fileNumber_;
    }
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    private void setFileNumber(int value) {
      
      fileNumber_ = value;
    }
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    private void clearFileNumber() {
      
      fileNumber_ = 0;
    }

    public static final int KIND_FIELD_NUMBER = 3;
    private int kind_;
    /**
     * <code>optional uint32 kind = 3;</code>
     */
    public int getKind() {
      return kind_;
    }
    /**
     * <code>optional uint32 kind = 3;</code>
     */
    private void setKind(int value) {
      
      kind_ = value;
    }
    /**
     * <code>optional uint32 kind = 3;</code>
     */
    private void clearKind() {
      
      kind_ = 0;
    }

    public static final int FILE_SIZE_FIELD_NUMBER = 4;
    private long fileSize_;
    /**
     * <code>optional uint64 file_size = 4;</code>
     */
    public long getFileSize() {
      return fileSize_;
    }
    /**
     * <code>optional uint64 file_size = 4;</code>
     */
    private void setFileSize(long value) {
      
      fileSize_ = value;
    }
    /**
     * <code>optional uint64 file_size = 4;</code>
     */
    private void clearFileSize() {
      
      fileSize_ = 0L;
    }

    public static final int FILENAME_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString filename_;
    /**
     * <code>optional bytes filename = 5;</code>
     */
    public com.google.protobuf.ByteString getFilename() {
      return filename_;
    }
    /**
     * <code>optional bytes filename = 5;</code>
     */
    private void setFilename(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      filename_ = value;
    }
    /**
     * <code>optional bytes filename = 5;</code>
     */
    private void clearFilename() {
      
      filename_ = getDefaultInstance().getFilename();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (fileNumber_ != 0) {
        output.writeUInt32(2, fileNumber_);
      }
      if (kind_ != 0) {
        output.writeUInt32(3, kind_);
      }
      if (fileSize_ != 0L) {
        output.writeUInt64(4, fileSize_);
      }
      if (!filename_.isEmpty()) {
        output.writeBytes(5, filename_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (fileNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, fileNumber_);
      }
      if (kind_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, kind_);
      }
      if (fileSize_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(4, fileSize_);
      }
      if (!filename_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, filename_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FileRecv parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileRecv parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecv parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileRecv parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecv parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileRecv parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecv parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileRecv parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecv parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileRecv parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FileRecv prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FileRecv}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FileRecv, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FileRecv)
        im.tox.proto.Core.FileRecvOrBuilder {
      // Construct using im.tox.proto.Core.FileRecv.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public int getFileNumber() {
        return instance.getFileNumber();
      }
      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public Builder setFileNumber(int value) {
        copyOnWrite();
        instance.setFileNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public Builder clearFileNumber() {
        copyOnWrite();
        instance.clearFileNumber();
        return this;
      }

      /**
       * <code>optional uint32 kind = 3;</code>
       */
      public int getKind() {
        return instance.getKind();
      }
      /**
       * <code>optional uint32 kind = 3;</code>
       */
      public Builder setKind(int value) {
        copyOnWrite();
        instance.setKind(value);
        return this;
      }
      /**
       * <code>optional uint32 kind = 3;</code>
       */
      public Builder clearKind() {
        copyOnWrite();
        instance.clearKind();
        return this;
      }

      /**
       * <code>optional uint64 file_size = 4;</code>
       */
      public long getFileSize() {
        return instance.getFileSize();
      }
      /**
       * <code>optional uint64 file_size = 4;</code>
       */
      public Builder setFileSize(long value) {
        copyOnWrite();
        instance.setFileSize(value);
        return this;
      }
      /**
       * <code>optional uint64 file_size = 4;</code>
       */
      public Builder clearFileSize() {
        copyOnWrite();
        instance.clearFileSize();
        return this;
      }

      /**
       * <code>optional bytes filename = 5;</code>
       */
      public com.google.protobuf.ByteString getFilename() {
        return instance.getFilename();
      }
      /**
       * <code>optional bytes filename = 5;</code>
       */
      public Builder setFilename(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setFilename(value);
        return this;
      }
      /**
       * <code>optional bytes filename = 5;</code>
       */
      public Builder clearFilename() {
        copyOnWrite();
        instance.clearFilename();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FileRecv)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FileRecv();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FileRecv other = (im.tox.proto.Core.FileRecv) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          fileNumber_ = visitor.visitInt(fileNumber_ != 0, fileNumber_,
              other.fileNumber_ != 0, other.fileNumber_);
          kind_ = visitor.visitInt(kind_ != 0, kind_,
              other.kind_ != 0, other.kind_);
          fileSize_ = visitor.visitLong(fileSize_ != 0L, fileSize_,
              other.fileSize_ != 0L, other.fileSize_);
          filename_ = visitor.visitByteString(filename_ != com.google.protobuf.ByteString.EMPTY, filename_,
              other.filename_ != com.google.protobuf.ByteString.EMPTY, other.filename_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 16: {

                  fileNumber_ = input.readUInt32();
                  break;
                }
                case 24: {

                  kind_ = input.readUInt32();
                  break;
                }
                case 32: {

                  fileSize_ = input.readUInt64();
                  break;
                }
                case 42: {

                  filename_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FileRecv.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FileRecv)
    private static final im.tox.proto.Core.FileRecv DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FileRecv();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FileRecv getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FileRecv> PARSER;

    public static com.google.protobuf.Parser<FileRecv> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FileRecvChunkOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FileRecvChunk)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    int getFileNumber();

    /**
     * <code>optional uint64 position = 3;</code>
     */
    long getPosition();

    /**
     * <code>optional bytes data = 4;</code>
     */
    com.google.protobuf.ByteString getData();
  }
  /**
   * Protobuf type {@code im.tox.proto.FileRecvChunk}
   */
  public  static final class FileRecvChunk extends
      com.google.protobuf.GeneratedMessageLite<
          FileRecvChunk, FileRecvChunk.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FileRecvChunk)
      FileRecvChunkOrBuilder {
    private FileRecvChunk() {
      data_ = com.google.protobuf.ByteString.EMPTY;
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int FILE_NUMBER_FIELD_NUMBER = 2;
    private int fileNumber_;
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    public int getFileNumber() {
      return fileNumber_;
    }
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    private void setFileNumber(int value) {
      
      fileNumber_ = value;
    }
    /**
     * <code>optional uint32 file_number = 2;</code>
     */
    private void clearFileNumber() {
      
      fileNumber_ = 0;
    }

    public static final int POSITION_FIELD_NUMBER = 3;
    private long position_;
    /**
     * <code>optional uint64 position = 3;</code>
     */
    public long getPosition() {
      return position_;
    }
    /**
     * <code>optional uint64 position = 3;</code>
     */
    private void setPosition(long value) {
      
      position_ = value;
    }
    /**
     * <code>optional uint64 position = 3;</code>
     */
    private void clearPosition() {
      
      position_ = 0L;
    }

    public static final int DATA_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString data_;
    /**
     * <code>optional bytes data = 4;</code>
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }
    /**
     * <code>optional bytes data = 4;</code>
     */
    private void setData(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      data_ = value;
    }
    /**
     * <code>optional bytes data = 4;</code>
     */
    private void clearData() {
      
      data_ = getDefaultInstance().getData();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (fileNumber_ != 0) {
        output.writeUInt32(2, fileNumber_);
      }
      if (position_ != 0L) {
        output.writeUInt64(3, position_);
      }
      if (!data_.isEmpty()) {
        output.writeBytes(4, data_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (fileNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, fileNumber_);
      }
      if (position_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, position_);
      }
      if (!data_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, data_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FileRecvChunk parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileRecvChunk parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecvChunk parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FileRecvChunk parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecvChunk parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileRecvChunk parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecvChunk parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileRecvChunk parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FileRecvChunk parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FileRecvChunk parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FileRecvChunk prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FileRecvChunk}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FileRecvChunk, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FileRecvChunk)
        im.tox.proto.Core.FileRecvChunkOrBuilder {
      // Construct using im.tox.proto.Core.FileRecvChunk.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public int getFileNumber() {
        return instance.getFileNumber();
      }
      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public Builder setFileNumber(int value) {
        copyOnWrite();
        instance.setFileNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 file_number = 2;</code>
       */
      public Builder clearFileNumber() {
        copyOnWrite();
        instance.clearFileNumber();
        return this;
      }

      /**
       * <code>optional uint64 position = 3;</code>
       */
      public long getPosition() {
        return instance.getPosition();
      }
      /**
       * <code>optional uint64 position = 3;</code>
       */
      public Builder setPosition(long value) {
        copyOnWrite();
        instance.setPosition(value);
        return this;
      }
      /**
       * <code>optional uint64 position = 3;</code>
       */
      public Builder clearPosition() {
        copyOnWrite();
        instance.clearPosition();
        return this;
      }

      /**
       * <code>optional bytes data = 4;</code>
       */
      public com.google.protobuf.ByteString getData() {
        return instance.getData();
      }
      /**
       * <code>optional bytes data = 4;</code>
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <code>optional bytes data = 4;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FileRecvChunk)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FileRecvChunk();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FileRecvChunk other = (im.tox.proto.Core.FileRecvChunk) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          fileNumber_ = visitor.visitInt(fileNumber_ != 0, fileNumber_,
              other.fileNumber_ != 0, other.fileNumber_);
          position_ = visitor.visitLong(position_ != 0L, position_,
              other.position_ != 0L, other.position_);
          data_ = visitor.visitByteString(data_ != com.google.protobuf.ByteString.EMPTY, data_,
              other.data_ != com.google.protobuf.ByteString.EMPTY, other.data_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 16: {

                  fileNumber_ = input.readUInt32();
                  break;
                }
                case 24: {

                  position_ = input.readUInt64();
                  break;
                }
                case 34: {

                  data_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FileRecvChunk.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FileRecvChunk)
    private static final im.tox.proto.Core.FileRecvChunk DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FileRecvChunk();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FileRecvChunk getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FileRecvChunk> PARSER;

    public static com.google.protobuf.Parser<FileRecvChunk> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendLossyPacketOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendLossyPacket)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional bytes data = 2;</code>
     */
    com.google.protobuf.ByteString getData();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendLossyPacket}
   */
  public  static final class FriendLossyPacket extends
      com.google.protobuf.GeneratedMessageLite<
          FriendLossyPacket, FriendLossyPacket.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendLossyPacket)
      FriendLossyPacketOrBuilder {
    private FriendLossyPacket() {
      data_ = com.google.protobuf.ByteString.EMPTY;
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString data_;
    /**
     * <code>optional bytes data = 2;</code>
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }
    /**
     * <code>optional bytes data = 2;</code>
     */
    private void setData(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      data_ = value;
    }
    /**
     * <code>optional bytes data = 2;</code>
     */
    private void clearData() {
      
      data_ = getDefaultInstance().getData();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (!data_.isEmpty()) {
        output.writeBytes(2, data_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (!data_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, data_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendLossyPacket parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendLossyPacket parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendLossyPacket parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendLossyPacket parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendLossyPacket parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendLossyPacket parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendLossyPacket parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendLossyPacket parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendLossyPacket parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendLossyPacket parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendLossyPacket prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendLossyPacket}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendLossyPacket, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendLossyPacket)
        im.tox.proto.Core.FriendLossyPacketOrBuilder {
      // Construct using im.tox.proto.Core.FriendLossyPacket.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional bytes data = 2;</code>
       */
      public com.google.protobuf.ByteString getData() {
        return instance.getData();
      }
      /**
       * <code>optional bytes data = 2;</code>
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <code>optional bytes data = 2;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendLossyPacket)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendLossyPacket();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendLossyPacket other = (im.tox.proto.Core.FriendLossyPacket) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          data_ = visitor.visitByteString(data_ != com.google.protobuf.ByteString.EMPTY, data_,
              other.data_ != com.google.protobuf.ByteString.EMPTY, other.data_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 18: {

                  data_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendLossyPacket.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendLossyPacket)
    private static final im.tox.proto.Core.FriendLossyPacket DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendLossyPacket();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendLossyPacket getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendLossyPacket> PARSER;

    public static com.google.protobuf.Parser<FriendLossyPacket> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendLosslessPacketOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendLosslessPacket)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional bytes data = 2;</code>
     */
    com.google.protobuf.ByteString getData();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendLosslessPacket}
   */
  public  static final class FriendLosslessPacket extends
      com.google.protobuf.GeneratedMessageLite<
          FriendLosslessPacket, FriendLosslessPacket.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendLosslessPacket)
      FriendLosslessPacketOrBuilder {
    private FriendLosslessPacket() {
      data_ = com.google.protobuf.ByteString.EMPTY;
    }
    public static final int FRIEND_NUMBER_FIELD_NUMBER = 1;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 1;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int DATA_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString data_;
    /**
     * <code>optional bytes data = 2;</code>
     */
    public com.google.protobuf.ByteString getData() {
      return data_;
    }
    /**
     * <code>optional bytes data = 2;</code>
     */
    private void setData(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      data_ = value;
    }
    /**
     * <code>optional bytes data = 2;</code>
     */
    private void clearData() {
      
      data_ = getDefaultInstance().getData();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (friendNumber_ != 0) {
        output.writeUInt32(1, friendNumber_);
      }
      if (!data_.isEmpty()) {
        output.writeBytes(2, data_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, friendNumber_);
      }
      if (!data_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, data_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendLosslessPacket parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendLosslessPacket parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendLosslessPacket parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendLosslessPacket parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendLosslessPacket parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendLosslessPacket parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendLosslessPacket parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendLosslessPacket parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendLosslessPacket parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendLosslessPacket parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendLosslessPacket prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendLosslessPacket}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendLosslessPacket, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendLosslessPacket)
        im.tox.proto.Core.FriendLosslessPacketOrBuilder {
      // Construct using im.tox.proto.Core.FriendLosslessPacket.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 1;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional bytes data = 2;</code>
       */
      public com.google.protobuf.ByteString getData() {
        return instance.getData();
      }
      /**
       * <code>optional bytes data = 2;</code>
       */
      public Builder setData(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <code>optional bytes data = 2;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendLosslessPacket)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendLosslessPacket();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendLosslessPacket other = (im.tox.proto.Core.FriendLosslessPacket) arg1;
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          data_ = visitor.visitByteString(data_ != com.google.protobuf.ByteString.EMPTY, data_,
              other.data_ != com.google.protobuf.ByteString.EMPTY, other.data_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 18: {

                  data_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendLosslessPacket.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendLosslessPacket)
    private static final im.tox.proto.Core.FriendLosslessPacket DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendLosslessPacket();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendLosslessPacket getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendLosslessPacket> PARSER;

    public static com.google.protobuf.Parser<FriendLosslessPacket> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface FriendMessageOfflineOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.FriendMessageOffline)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>optional uint32 cmd = 1;</code>
     */
    int getCmd();

    /**
     * <code>optional uint32 friend_number = 2;</code>
     */
    int getFriendNumber();

    /**
     * <code>optional bytes message = 3;</code>
     */
    com.google.protobuf.ByteString getMessage();
  }
  /**
   * Protobuf type {@code im.tox.proto.FriendMessageOffline}
   */
  public  static final class FriendMessageOffline extends
      com.google.protobuf.GeneratedMessageLite<
          FriendMessageOffline, FriendMessageOffline.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.FriendMessageOffline)
      FriendMessageOfflineOrBuilder {
    private FriendMessageOffline() {
      message_ = com.google.protobuf.ByteString.EMPTY;
    }
    public static final int CMD_FIELD_NUMBER = 1;
    private int cmd_;
    /**
     * <code>optional uint32 cmd = 1;</code>
     */
    public int getCmd() {
      return cmd_;
    }
    /**
     * <code>optional uint32 cmd = 1;</code>
     */
    private void setCmd(int value) {
      
      cmd_ = value;
    }
    /**
     * <code>optional uint32 cmd = 1;</code>
     */
    private void clearCmd() {
      
      cmd_ = 0;
    }

    public static final int FRIEND_NUMBER_FIELD_NUMBER = 2;
    private int friendNumber_;
    /**
     * <code>optional uint32 friend_number = 2;</code>
     */
    public int getFriendNumber() {
      return friendNumber_;
    }
    /**
     * <code>optional uint32 friend_number = 2;</code>
     */
    private void setFriendNumber(int value) {
      
      friendNumber_ = value;
    }
    /**
     * <code>optional uint32 friend_number = 2;</code>
     */
    private void clearFriendNumber() {
      
      friendNumber_ = 0;
    }

    public static final int MESSAGE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString message_;
    /**
     * <code>optional bytes message = 3;</code>
     */
    public com.google.protobuf.ByteString getMessage() {
      return message_;
    }
    /**
     * <code>optional bytes message = 3;</code>
     */
    private void setMessage(com.google.protobuf.ByteString value) {
      if (value == null) {
    throw new NullPointerException();
  }
  
      message_ = value;
    }
    /**
     * <code>optional bytes message = 3;</code>
     */
    private void clearMessage() {
      
      message_ = getDefaultInstance().getMessage();
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (cmd_ != 0) {
        output.writeUInt32(1, cmd_);
      }
      if (friendNumber_ != 0) {
        output.writeUInt32(2, friendNumber_);
      }
      if (!message_.isEmpty()) {
        output.writeBytes(3, message_);
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      if (cmd_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, cmd_);
      }
      if (friendNumber_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, friendNumber_);
      }
      if (!message_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, message_);
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.FriendMessageOffline parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendMessageOffline parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendMessageOffline parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.FriendMessageOffline parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendMessageOffline parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendMessageOffline parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendMessageOffline parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendMessageOffline parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.FriendMessageOffline parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.FriendMessageOffline parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.FriendMessageOffline prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.FriendMessageOffline}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.FriendMessageOffline, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.FriendMessageOffline)
        im.tox.proto.Core.FriendMessageOfflineOrBuilder {
      // Construct using im.tox.proto.Core.FriendMessageOffline.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>optional uint32 cmd = 1;</code>
       */
      public int getCmd() {
        return instance.getCmd();
      }
      /**
       * <code>optional uint32 cmd = 1;</code>
       */
      public Builder setCmd(int value) {
        copyOnWrite();
        instance.setCmd(value);
        return this;
      }
      /**
       * <code>optional uint32 cmd = 1;</code>
       */
      public Builder clearCmd() {
        copyOnWrite();
        instance.clearCmd();
        return this;
      }

      /**
       * <code>optional uint32 friend_number = 2;</code>
       */
      public int getFriendNumber() {
        return instance.getFriendNumber();
      }
      /**
       * <code>optional uint32 friend_number = 2;</code>
       */
      public Builder setFriendNumber(int value) {
        copyOnWrite();
        instance.setFriendNumber(value);
        return this;
      }
      /**
       * <code>optional uint32 friend_number = 2;</code>
       */
      public Builder clearFriendNumber() {
        copyOnWrite();
        instance.clearFriendNumber();
        return this;
      }

      /**
       * <code>optional bytes message = 3;</code>
       */
      public com.google.protobuf.ByteString getMessage() {
        return instance.getMessage();
      }
      /**
       * <code>optional bytes message = 3;</code>
       */
      public Builder setMessage(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setMessage(value);
        return this;
      }
      /**
       * <code>optional bytes message = 3;</code>
       */
      public Builder clearMessage() {
        copyOnWrite();
        instance.clearMessage();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.FriendMessageOffline)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.FriendMessageOffline();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.FriendMessageOffline other = (im.tox.proto.Core.FriendMessageOffline) arg1;
          cmd_ = visitor.visitInt(cmd_ != 0, cmd_,
              other.cmd_ != 0, other.cmd_);
          friendNumber_ = visitor.visitInt(friendNumber_ != 0, friendNumber_,
              other.friendNumber_ != 0, other.friendNumber_);
          message_ = visitor.visitByteString(message_ != com.google.protobuf.ByteString.EMPTY, message_,
              other.message_ != com.google.protobuf.ByteString.EMPTY, other.message_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {

                  cmd_ = input.readUInt32();
                  break;
                }
                case 16: {

                  friendNumber_ = input.readUInt32();
                  break;
                }
                case 26: {

                  message_ = input.readBytes();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.FriendMessageOffline.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.FriendMessageOffline)
    private static final im.tox.proto.Core.FriendMessageOffline DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new FriendMessageOffline();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.FriendMessageOffline getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<FriendMessageOffline> PARSER;

    public static com.google.protobuf.Parser<FriendMessageOffline> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface CoreEventsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:im.tox.proto.CoreEvents)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    java.util.List<im.tox.proto.Core.SelfConnectionStatus> 
        getSelfConnectionStatusList();
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    im.tox.proto.Core.SelfConnectionStatus getSelfConnectionStatus(int index);
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    int getSelfConnectionStatusCount();

    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    java.util.List<im.tox.proto.Core.FriendName> 
        getFriendNameList();
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    im.tox.proto.Core.FriendName getFriendName(int index);
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    int getFriendNameCount();

    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    java.util.List<im.tox.proto.Core.FriendStatusMessage> 
        getFriendStatusMessageList();
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    im.tox.proto.Core.FriendStatusMessage getFriendStatusMessage(int index);
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    int getFriendStatusMessageCount();

    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    java.util.List<im.tox.proto.Core.FriendStatus> 
        getFriendStatusList();
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    im.tox.proto.Core.FriendStatus getFriendStatus(int index);
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    int getFriendStatusCount();

    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    java.util.List<im.tox.proto.Core.FriendConnectionStatus> 
        getFriendConnectionStatusList();
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    im.tox.proto.Core.FriendConnectionStatus getFriendConnectionStatus(int index);
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    int getFriendConnectionStatusCount();

    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    java.util.List<im.tox.proto.Core.FriendTyping> 
        getFriendTypingList();
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    im.tox.proto.Core.FriendTyping getFriendTyping(int index);
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    int getFriendTypingCount();

    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    java.util.List<im.tox.proto.Core.FriendReadReceipt> 
        getFriendReadReceiptList();
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    im.tox.proto.Core.FriendReadReceipt getFriendReadReceipt(int index);
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    int getFriendReadReceiptCount();

    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    java.util.List<im.tox.proto.Core.FriendRequest> 
        getFriendRequestList();
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    im.tox.proto.Core.FriendRequest getFriendRequest(int index);
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    int getFriendRequestCount();

    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    java.util.List<im.tox.proto.Core.FriendMessage> 
        getFriendMessageList();
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    im.tox.proto.Core.FriendMessage getFriendMessage(int index);
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    int getFriendMessageCount();

    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    java.util.List<im.tox.proto.Core.FileRecvControl> 
        getFileRecvControlList();
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    im.tox.proto.Core.FileRecvControl getFileRecvControl(int index);
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    int getFileRecvControlCount();

    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    java.util.List<im.tox.proto.Core.FileChunkRequest> 
        getFileChunkRequestList();
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    im.tox.proto.Core.FileChunkRequest getFileChunkRequest(int index);
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    int getFileChunkRequestCount();

    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    java.util.List<im.tox.proto.Core.FileRecv> 
        getFileRecvList();
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    im.tox.proto.Core.FileRecv getFileRecv(int index);
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    int getFileRecvCount();

    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    java.util.List<im.tox.proto.Core.FileRecvChunk> 
        getFileRecvChunkList();
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    im.tox.proto.Core.FileRecvChunk getFileRecvChunk(int index);
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    int getFileRecvChunkCount();

    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    java.util.List<im.tox.proto.Core.FriendLossyPacket> 
        getFriendLossyPacketList();
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    im.tox.proto.Core.FriendLossyPacket getFriendLossyPacket(int index);
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    int getFriendLossyPacketCount();

    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    java.util.List<im.tox.proto.Core.FriendLosslessPacket> 
        getFriendLosslessPacketList();
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    im.tox.proto.Core.FriendLosslessPacket getFriendLosslessPacket(int index);
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    int getFriendLosslessPacketCount();

    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    java.util.List<im.tox.proto.Core.FriendMessageOffline> 
        getFriendMessageOfflineList();
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    im.tox.proto.Core.FriendMessageOffline getFriendMessageOffline(int index);
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    int getFriendMessageOfflineCount();
  }
  /**
   * Protobuf type {@code im.tox.proto.CoreEvents}
   */
  public  static final class CoreEvents extends
      com.google.protobuf.GeneratedMessageLite<
          CoreEvents, CoreEvents.Builder> implements
      // @@protoc_insertion_point(message_implements:im.tox.proto.CoreEvents)
      CoreEventsOrBuilder {
    private CoreEvents() {
      selfConnectionStatus_ = emptyProtobufList();
      friendName_ = emptyProtobufList();
      friendStatusMessage_ = emptyProtobufList();
      friendStatus_ = emptyProtobufList();
      friendConnectionStatus_ = emptyProtobufList();
      friendTyping_ = emptyProtobufList();
      friendReadReceipt_ = emptyProtobufList();
      friendRequest_ = emptyProtobufList();
      friendMessage_ = emptyProtobufList();
      fileRecvControl_ = emptyProtobufList();
      fileChunkRequest_ = emptyProtobufList();
      fileRecv_ = emptyProtobufList();
      fileRecvChunk_ = emptyProtobufList();
      friendLossyPacket_ = emptyProtobufList();
      friendLosslessPacket_ = emptyProtobufList();
      friendMessageOffline_ = emptyProtobufList();
    }
    public static final int SELF_CONNECTION_STATUS_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.SelfConnectionStatus> selfConnectionStatus_;
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    public java.util.List<im.tox.proto.Core.SelfConnectionStatus> getSelfConnectionStatusList() {
      return selfConnectionStatus_;
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.SelfConnectionStatusOrBuilder> 
        getSelfConnectionStatusOrBuilderList() {
      return selfConnectionStatus_;
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    public int getSelfConnectionStatusCount() {
      return selfConnectionStatus_.size();
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    public im.tox.proto.Core.SelfConnectionStatus getSelfConnectionStatus(int index) {
      return selfConnectionStatus_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    public im.tox.proto.Core.SelfConnectionStatusOrBuilder getSelfConnectionStatusOrBuilder(
        int index) {
      return selfConnectionStatus_.get(index);
    }
    private void ensureSelfConnectionStatusIsMutable() {
      if (!selfConnectionStatus_.isModifiable()) {
        selfConnectionStatus_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(selfConnectionStatus_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    private void setSelfConnectionStatus(
        int index, im.tox.proto.Core.SelfConnectionStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureSelfConnectionStatusIsMutable();
      selfConnectionStatus_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    private void setSelfConnectionStatus(
        int index, im.tox.proto.Core.SelfConnectionStatus.Builder builderForValue) {
      ensureSelfConnectionStatusIsMutable();
      selfConnectionStatus_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    private void addSelfConnectionStatus(im.tox.proto.Core.SelfConnectionStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureSelfConnectionStatusIsMutable();
      selfConnectionStatus_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    private void addSelfConnectionStatus(
        int index, im.tox.proto.Core.SelfConnectionStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureSelfConnectionStatusIsMutable();
      selfConnectionStatus_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    private void addSelfConnectionStatus(
        im.tox.proto.Core.SelfConnectionStatus.Builder builderForValue) {
      ensureSelfConnectionStatusIsMutable();
      selfConnectionStatus_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    private void addSelfConnectionStatus(
        int index, im.tox.proto.Core.SelfConnectionStatus.Builder builderForValue) {
      ensureSelfConnectionStatusIsMutable();
      selfConnectionStatus_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    private void addAllSelfConnectionStatus(
        java.lang.Iterable<? extends im.tox.proto.Core.SelfConnectionStatus> values) {
      ensureSelfConnectionStatusIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, selfConnectionStatus_);
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    private void clearSelfConnectionStatus() {
      selfConnectionStatus_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
     */
    private void removeSelfConnectionStatus(int index) {
      ensureSelfConnectionStatusIsMutable();
      selfConnectionStatus_.remove(index);
    }

    public static final int FRIEND_NAME_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendName> friendName_;
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendName> getFriendNameList() {
      return friendName_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendNameOrBuilder> 
        getFriendNameOrBuilderList() {
      return friendName_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    public int getFriendNameCount() {
      return friendName_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    public im.tox.proto.Core.FriendName getFriendName(int index) {
      return friendName_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    public im.tox.proto.Core.FriendNameOrBuilder getFriendNameOrBuilder(
        int index) {
      return friendName_.get(index);
    }
    private void ensureFriendNameIsMutable() {
      if (!friendName_.isModifiable()) {
        friendName_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendName_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    private void setFriendName(
        int index, im.tox.proto.Core.FriendName value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendNameIsMutable();
      friendName_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    private void setFriendName(
        int index, im.tox.proto.Core.FriendName.Builder builderForValue) {
      ensureFriendNameIsMutable();
      friendName_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    private void addFriendName(im.tox.proto.Core.FriendName value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendNameIsMutable();
      friendName_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    private void addFriendName(
        int index, im.tox.proto.Core.FriendName value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendNameIsMutable();
      friendName_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    private void addFriendName(
        im.tox.proto.Core.FriendName.Builder builderForValue) {
      ensureFriendNameIsMutable();
      friendName_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    private void addFriendName(
        int index, im.tox.proto.Core.FriendName.Builder builderForValue) {
      ensureFriendNameIsMutable();
      friendName_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    private void addAllFriendName(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendName> values) {
      ensureFriendNameIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendName_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    private void clearFriendName() {
      friendName_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
     */
    private void removeFriendName(int index) {
      ensureFriendNameIsMutable();
      friendName_.remove(index);
    }

    public static final int FRIEND_STATUS_MESSAGE_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendStatusMessage> friendStatusMessage_;
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendStatusMessage> getFriendStatusMessageList() {
      return friendStatusMessage_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendStatusMessageOrBuilder> 
        getFriendStatusMessageOrBuilderList() {
      return friendStatusMessage_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    public int getFriendStatusMessageCount() {
      return friendStatusMessage_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    public im.tox.proto.Core.FriendStatusMessage getFriendStatusMessage(int index) {
      return friendStatusMessage_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    public im.tox.proto.Core.FriendStatusMessageOrBuilder getFriendStatusMessageOrBuilder(
        int index) {
      return friendStatusMessage_.get(index);
    }
    private void ensureFriendStatusMessageIsMutable() {
      if (!friendStatusMessage_.isModifiable()) {
        friendStatusMessage_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendStatusMessage_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    private void setFriendStatusMessage(
        int index, im.tox.proto.Core.FriendStatusMessage value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendStatusMessageIsMutable();
      friendStatusMessage_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    private void setFriendStatusMessage(
        int index, im.tox.proto.Core.FriendStatusMessage.Builder builderForValue) {
      ensureFriendStatusMessageIsMutable();
      friendStatusMessage_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    private void addFriendStatusMessage(im.tox.proto.Core.FriendStatusMessage value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendStatusMessageIsMutable();
      friendStatusMessage_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    private void addFriendStatusMessage(
        int index, im.tox.proto.Core.FriendStatusMessage value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendStatusMessageIsMutable();
      friendStatusMessage_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    private void addFriendStatusMessage(
        im.tox.proto.Core.FriendStatusMessage.Builder builderForValue) {
      ensureFriendStatusMessageIsMutable();
      friendStatusMessage_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    private void addFriendStatusMessage(
        int index, im.tox.proto.Core.FriendStatusMessage.Builder builderForValue) {
      ensureFriendStatusMessageIsMutable();
      friendStatusMessage_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    private void addAllFriendStatusMessage(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendStatusMessage> values) {
      ensureFriendStatusMessageIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendStatusMessage_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    private void clearFriendStatusMessage() {
      friendStatusMessage_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
     */
    private void removeFriendStatusMessage(int index) {
      ensureFriendStatusMessageIsMutable();
      friendStatusMessage_.remove(index);
    }

    public static final int FRIEND_STATUS_FIELD_NUMBER = 4;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendStatus> friendStatus_;
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendStatus> getFriendStatusList() {
      return friendStatus_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendStatusOrBuilder> 
        getFriendStatusOrBuilderList() {
      return friendStatus_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    public int getFriendStatusCount() {
      return friendStatus_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    public im.tox.proto.Core.FriendStatus getFriendStatus(int index) {
      return friendStatus_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    public im.tox.proto.Core.FriendStatusOrBuilder getFriendStatusOrBuilder(
        int index) {
      return friendStatus_.get(index);
    }
    private void ensureFriendStatusIsMutable() {
      if (!friendStatus_.isModifiable()) {
        friendStatus_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendStatus_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    private void setFriendStatus(
        int index, im.tox.proto.Core.FriendStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendStatusIsMutable();
      friendStatus_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    private void setFriendStatus(
        int index, im.tox.proto.Core.FriendStatus.Builder builderForValue) {
      ensureFriendStatusIsMutable();
      friendStatus_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    private void addFriendStatus(im.tox.proto.Core.FriendStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendStatusIsMutable();
      friendStatus_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    private void addFriendStatus(
        int index, im.tox.proto.Core.FriendStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendStatusIsMutable();
      friendStatus_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    private void addFriendStatus(
        im.tox.proto.Core.FriendStatus.Builder builderForValue) {
      ensureFriendStatusIsMutable();
      friendStatus_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    private void addFriendStatus(
        int index, im.tox.proto.Core.FriendStatus.Builder builderForValue) {
      ensureFriendStatusIsMutable();
      friendStatus_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    private void addAllFriendStatus(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendStatus> values) {
      ensureFriendStatusIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendStatus_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    private void clearFriendStatus() {
      friendStatus_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
     */
    private void removeFriendStatus(int index) {
      ensureFriendStatusIsMutable();
      friendStatus_.remove(index);
    }

    public static final int FRIEND_CONNECTION_STATUS_FIELD_NUMBER = 5;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendConnectionStatus> friendConnectionStatus_;
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendConnectionStatus> getFriendConnectionStatusList() {
      return friendConnectionStatus_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendConnectionStatusOrBuilder> 
        getFriendConnectionStatusOrBuilderList() {
      return friendConnectionStatus_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    public int getFriendConnectionStatusCount() {
      return friendConnectionStatus_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    public im.tox.proto.Core.FriendConnectionStatus getFriendConnectionStatus(int index) {
      return friendConnectionStatus_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    public im.tox.proto.Core.FriendConnectionStatusOrBuilder getFriendConnectionStatusOrBuilder(
        int index) {
      return friendConnectionStatus_.get(index);
    }
    private void ensureFriendConnectionStatusIsMutable() {
      if (!friendConnectionStatus_.isModifiable()) {
        friendConnectionStatus_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendConnectionStatus_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    private void setFriendConnectionStatus(
        int index, im.tox.proto.Core.FriendConnectionStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendConnectionStatusIsMutable();
      friendConnectionStatus_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    private void setFriendConnectionStatus(
        int index, im.tox.proto.Core.FriendConnectionStatus.Builder builderForValue) {
      ensureFriendConnectionStatusIsMutable();
      friendConnectionStatus_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    private void addFriendConnectionStatus(im.tox.proto.Core.FriendConnectionStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendConnectionStatusIsMutable();
      friendConnectionStatus_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    private void addFriendConnectionStatus(
        int index, im.tox.proto.Core.FriendConnectionStatus value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendConnectionStatusIsMutable();
      friendConnectionStatus_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    private void addFriendConnectionStatus(
        im.tox.proto.Core.FriendConnectionStatus.Builder builderForValue) {
      ensureFriendConnectionStatusIsMutable();
      friendConnectionStatus_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    private void addFriendConnectionStatus(
        int index, im.tox.proto.Core.FriendConnectionStatus.Builder builderForValue) {
      ensureFriendConnectionStatusIsMutable();
      friendConnectionStatus_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    private void addAllFriendConnectionStatus(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendConnectionStatus> values) {
      ensureFriendConnectionStatusIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendConnectionStatus_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    private void clearFriendConnectionStatus() {
      friendConnectionStatus_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
     */
    private void removeFriendConnectionStatus(int index) {
      ensureFriendConnectionStatusIsMutable();
      friendConnectionStatus_.remove(index);
    }

    public static final int FRIEND_TYPING_FIELD_NUMBER = 6;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendTyping> friendTyping_;
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendTyping> getFriendTypingList() {
      return friendTyping_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendTypingOrBuilder> 
        getFriendTypingOrBuilderList() {
      return friendTyping_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    public int getFriendTypingCount() {
      return friendTyping_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    public im.tox.proto.Core.FriendTyping getFriendTyping(int index) {
      return friendTyping_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    public im.tox.proto.Core.FriendTypingOrBuilder getFriendTypingOrBuilder(
        int index) {
      return friendTyping_.get(index);
    }
    private void ensureFriendTypingIsMutable() {
      if (!friendTyping_.isModifiable()) {
        friendTyping_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendTyping_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    private void setFriendTyping(
        int index, im.tox.proto.Core.FriendTyping value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendTypingIsMutable();
      friendTyping_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    private void setFriendTyping(
        int index, im.tox.proto.Core.FriendTyping.Builder builderForValue) {
      ensureFriendTypingIsMutable();
      friendTyping_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    private void addFriendTyping(im.tox.proto.Core.FriendTyping value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendTypingIsMutable();
      friendTyping_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    private void addFriendTyping(
        int index, im.tox.proto.Core.FriendTyping value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendTypingIsMutable();
      friendTyping_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    private void addFriendTyping(
        im.tox.proto.Core.FriendTyping.Builder builderForValue) {
      ensureFriendTypingIsMutable();
      friendTyping_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    private void addFriendTyping(
        int index, im.tox.proto.Core.FriendTyping.Builder builderForValue) {
      ensureFriendTypingIsMutable();
      friendTyping_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    private void addAllFriendTyping(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendTyping> values) {
      ensureFriendTypingIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendTyping_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    private void clearFriendTyping() {
      friendTyping_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
     */
    private void removeFriendTyping(int index) {
      ensureFriendTypingIsMutable();
      friendTyping_.remove(index);
    }

    public static final int FRIEND_READ_RECEIPT_FIELD_NUMBER = 7;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendReadReceipt> friendReadReceipt_;
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendReadReceipt> getFriendReadReceiptList() {
      return friendReadReceipt_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendReadReceiptOrBuilder> 
        getFriendReadReceiptOrBuilderList() {
      return friendReadReceipt_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    public int getFriendReadReceiptCount() {
      return friendReadReceipt_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    public im.tox.proto.Core.FriendReadReceipt getFriendReadReceipt(int index) {
      return friendReadReceipt_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    public im.tox.proto.Core.FriendReadReceiptOrBuilder getFriendReadReceiptOrBuilder(
        int index) {
      return friendReadReceipt_.get(index);
    }
    private void ensureFriendReadReceiptIsMutable() {
      if (!friendReadReceipt_.isModifiable()) {
        friendReadReceipt_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendReadReceipt_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    private void setFriendReadReceipt(
        int index, im.tox.proto.Core.FriendReadReceipt value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendReadReceiptIsMutable();
      friendReadReceipt_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    private void setFriendReadReceipt(
        int index, im.tox.proto.Core.FriendReadReceipt.Builder builderForValue) {
      ensureFriendReadReceiptIsMutable();
      friendReadReceipt_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    private void addFriendReadReceipt(im.tox.proto.Core.FriendReadReceipt value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendReadReceiptIsMutable();
      friendReadReceipt_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    private void addFriendReadReceipt(
        int index, im.tox.proto.Core.FriendReadReceipt value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendReadReceiptIsMutable();
      friendReadReceipt_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    private void addFriendReadReceipt(
        im.tox.proto.Core.FriendReadReceipt.Builder builderForValue) {
      ensureFriendReadReceiptIsMutable();
      friendReadReceipt_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    private void addFriendReadReceipt(
        int index, im.tox.proto.Core.FriendReadReceipt.Builder builderForValue) {
      ensureFriendReadReceiptIsMutable();
      friendReadReceipt_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    private void addAllFriendReadReceipt(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendReadReceipt> values) {
      ensureFriendReadReceiptIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendReadReceipt_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    private void clearFriendReadReceipt() {
      friendReadReceipt_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
     */
    private void removeFriendReadReceipt(int index) {
      ensureFriendReadReceiptIsMutable();
      friendReadReceipt_.remove(index);
    }

    public static final int FRIEND_REQUEST_FIELD_NUMBER = 8;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendRequest> friendRequest_;
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendRequest> getFriendRequestList() {
      return friendRequest_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendRequestOrBuilder> 
        getFriendRequestOrBuilderList() {
      return friendRequest_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    public int getFriendRequestCount() {
      return friendRequest_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    public im.tox.proto.Core.FriendRequest getFriendRequest(int index) {
      return friendRequest_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    public im.tox.proto.Core.FriendRequestOrBuilder getFriendRequestOrBuilder(
        int index) {
      return friendRequest_.get(index);
    }
    private void ensureFriendRequestIsMutable() {
      if (!friendRequest_.isModifiable()) {
        friendRequest_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendRequest_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    private void setFriendRequest(
        int index, im.tox.proto.Core.FriendRequest value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendRequestIsMutable();
      friendRequest_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    private void setFriendRequest(
        int index, im.tox.proto.Core.FriendRequest.Builder builderForValue) {
      ensureFriendRequestIsMutable();
      friendRequest_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    private void addFriendRequest(im.tox.proto.Core.FriendRequest value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendRequestIsMutable();
      friendRequest_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    private void addFriendRequest(
        int index, im.tox.proto.Core.FriendRequest value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendRequestIsMutable();
      friendRequest_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    private void addFriendRequest(
        im.tox.proto.Core.FriendRequest.Builder builderForValue) {
      ensureFriendRequestIsMutable();
      friendRequest_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    private void addFriendRequest(
        int index, im.tox.proto.Core.FriendRequest.Builder builderForValue) {
      ensureFriendRequestIsMutable();
      friendRequest_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    private void addAllFriendRequest(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendRequest> values) {
      ensureFriendRequestIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendRequest_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    private void clearFriendRequest() {
      friendRequest_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
     */
    private void removeFriendRequest(int index) {
      ensureFriendRequestIsMutable();
      friendRequest_.remove(index);
    }

    public static final int FRIEND_MESSAGE_FIELD_NUMBER = 9;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendMessage> friendMessage_;
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendMessage> getFriendMessageList() {
      return friendMessage_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendMessageOrBuilder> 
        getFriendMessageOrBuilderList() {
      return friendMessage_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    public int getFriendMessageCount() {
      return friendMessage_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    public im.tox.proto.Core.FriendMessage getFriendMessage(int index) {
      return friendMessage_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    public im.tox.proto.Core.FriendMessageOrBuilder getFriendMessageOrBuilder(
        int index) {
      return friendMessage_.get(index);
    }
    private void ensureFriendMessageIsMutable() {
      if (!friendMessage_.isModifiable()) {
        friendMessage_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendMessage_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    private void setFriendMessage(
        int index, im.tox.proto.Core.FriendMessage value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendMessageIsMutable();
      friendMessage_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    private void setFriendMessage(
        int index, im.tox.proto.Core.FriendMessage.Builder builderForValue) {
      ensureFriendMessageIsMutable();
      friendMessage_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    private void addFriendMessage(im.tox.proto.Core.FriendMessage value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendMessageIsMutable();
      friendMessage_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    private void addFriendMessage(
        int index, im.tox.proto.Core.FriendMessage value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendMessageIsMutable();
      friendMessage_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    private void addFriendMessage(
        im.tox.proto.Core.FriendMessage.Builder builderForValue) {
      ensureFriendMessageIsMutable();
      friendMessage_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    private void addFriendMessage(
        int index, im.tox.proto.Core.FriendMessage.Builder builderForValue) {
      ensureFriendMessageIsMutable();
      friendMessage_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    private void addAllFriendMessage(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendMessage> values) {
      ensureFriendMessageIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendMessage_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    private void clearFriendMessage() {
      friendMessage_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
     */
    private void removeFriendMessage(int index) {
      ensureFriendMessageIsMutable();
      friendMessage_.remove(index);
    }

    public static final int FILE_RECV_CONTROL_FIELD_NUMBER = 10;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FileRecvControl> fileRecvControl_;
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    public java.util.List<im.tox.proto.Core.FileRecvControl> getFileRecvControlList() {
      return fileRecvControl_;
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FileRecvControlOrBuilder> 
        getFileRecvControlOrBuilderList() {
      return fileRecvControl_;
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    public int getFileRecvControlCount() {
      return fileRecvControl_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    public im.tox.proto.Core.FileRecvControl getFileRecvControl(int index) {
      return fileRecvControl_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    public im.tox.proto.Core.FileRecvControlOrBuilder getFileRecvControlOrBuilder(
        int index) {
      return fileRecvControl_.get(index);
    }
    private void ensureFileRecvControlIsMutable() {
      if (!fileRecvControl_.isModifiable()) {
        fileRecvControl_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(fileRecvControl_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    private void setFileRecvControl(
        int index, im.tox.proto.Core.FileRecvControl value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileRecvControlIsMutable();
      fileRecvControl_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    private void setFileRecvControl(
        int index, im.tox.proto.Core.FileRecvControl.Builder builderForValue) {
      ensureFileRecvControlIsMutable();
      fileRecvControl_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    private void addFileRecvControl(im.tox.proto.Core.FileRecvControl value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileRecvControlIsMutable();
      fileRecvControl_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    private void addFileRecvControl(
        int index, im.tox.proto.Core.FileRecvControl value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileRecvControlIsMutable();
      fileRecvControl_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    private void addFileRecvControl(
        im.tox.proto.Core.FileRecvControl.Builder builderForValue) {
      ensureFileRecvControlIsMutable();
      fileRecvControl_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    private void addFileRecvControl(
        int index, im.tox.proto.Core.FileRecvControl.Builder builderForValue) {
      ensureFileRecvControlIsMutable();
      fileRecvControl_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    private void addAllFileRecvControl(
        java.lang.Iterable<? extends im.tox.proto.Core.FileRecvControl> values) {
      ensureFileRecvControlIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, fileRecvControl_);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    private void clearFileRecvControl() {
      fileRecvControl_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
     */
    private void removeFileRecvControl(int index) {
      ensureFileRecvControlIsMutable();
      fileRecvControl_.remove(index);
    }

    public static final int FILE_CHUNK_REQUEST_FIELD_NUMBER = 11;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FileChunkRequest> fileChunkRequest_;
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    public java.util.List<im.tox.proto.Core.FileChunkRequest> getFileChunkRequestList() {
      return fileChunkRequest_;
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FileChunkRequestOrBuilder> 
        getFileChunkRequestOrBuilderList() {
      return fileChunkRequest_;
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    public int getFileChunkRequestCount() {
      return fileChunkRequest_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    public im.tox.proto.Core.FileChunkRequest getFileChunkRequest(int index) {
      return fileChunkRequest_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    public im.tox.proto.Core.FileChunkRequestOrBuilder getFileChunkRequestOrBuilder(
        int index) {
      return fileChunkRequest_.get(index);
    }
    private void ensureFileChunkRequestIsMutable() {
      if (!fileChunkRequest_.isModifiable()) {
        fileChunkRequest_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(fileChunkRequest_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    private void setFileChunkRequest(
        int index, im.tox.proto.Core.FileChunkRequest value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileChunkRequestIsMutable();
      fileChunkRequest_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    private void setFileChunkRequest(
        int index, im.tox.proto.Core.FileChunkRequest.Builder builderForValue) {
      ensureFileChunkRequestIsMutable();
      fileChunkRequest_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    private void addFileChunkRequest(im.tox.proto.Core.FileChunkRequest value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileChunkRequestIsMutable();
      fileChunkRequest_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    private void addFileChunkRequest(
        int index, im.tox.proto.Core.FileChunkRequest value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileChunkRequestIsMutable();
      fileChunkRequest_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    private void addFileChunkRequest(
        im.tox.proto.Core.FileChunkRequest.Builder builderForValue) {
      ensureFileChunkRequestIsMutable();
      fileChunkRequest_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    private void addFileChunkRequest(
        int index, im.tox.proto.Core.FileChunkRequest.Builder builderForValue) {
      ensureFileChunkRequestIsMutable();
      fileChunkRequest_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    private void addAllFileChunkRequest(
        java.lang.Iterable<? extends im.tox.proto.Core.FileChunkRequest> values) {
      ensureFileChunkRequestIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, fileChunkRequest_);
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    private void clearFileChunkRequest() {
      fileChunkRequest_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
     */
    private void removeFileChunkRequest(int index) {
      ensureFileChunkRequestIsMutable();
      fileChunkRequest_.remove(index);
    }

    public static final int FILE_RECV_FIELD_NUMBER = 12;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FileRecv> fileRecv_;
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    public java.util.List<im.tox.proto.Core.FileRecv> getFileRecvList() {
      return fileRecv_;
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FileRecvOrBuilder> 
        getFileRecvOrBuilderList() {
      return fileRecv_;
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    public int getFileRecvCount() {
      return fileRecv_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    public im.tox.proto.Core.FileRecv getFileRecv(int index) {
      return fileRecv_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    public im.tox.proto.Core.FileRecvOrBuilder getFileRecvOrBuilder(
        int index) {
      return fileRecv_.get(index);
    }
    private void ensureFileRecvIsMutable() {
      if (!fileRecv_.isModifiable()) {
        fileRecv_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(fileRecv_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    private void setFileRecv(
        int index, im.tox.proto.Core.FileRecv value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileRecvIsMutable();
      fileRecv_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    private void setFileRecv(
        int index, im.tox.proto.Core.FileRecv.Builder builderForValue) {
      ensureFileRecvIsMutable();
      fileRecv_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    private void addFileRecv(im.tox.proto.Core.FileRecv value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileRecvIsMutable();
      fileRecv_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    private void addFileRecv(
        int index, im.tox.proto.Core.FileRecv value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileRecvIsMutable();
      fileRecv_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    private void addFileRecv(
        im.tox.proto.Core.FileRecv.Builder builderForValue) {
      ensureFileRecvIsMutable();
      fileRecv_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    private void addFileRecv(
        int index, im.tox.proto.Core.FileRecv.Builder builderForValue) {
      ensureFileRecvIsMutable();
      fileRecv_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    private void addAllFileRecv(
        java.lang.Iterable<? extends im.tox.proto.Core.FileRecv> values) {
      ensureFileRecvIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, fileRecv_);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    private void clearFileRecv() {
      fileRecv_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
     */
    private void removeFileRecv(int index) {
      ensureFileRecvIsMutable();
      fileRecv_.remove(index);
    }

    public static final int FILE_RECV_CHUNK_FIELD_NUMBER = 13;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FileRecvChunk> fileRecvChunk_;
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    public java.util.List<im.tox.proto.Core.FileRecvChunk> getFileRecvChunkList() {
      return fileRecvChunk_;
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FileRecvChunkOrBuilder> 
        getFileRecvChunkOrBuilderList() {
      return fileRecvChunk_;
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    public int getFileRecvChunkCount() {
      return fileRecvChunk_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    public im.tox.proto.Core.FileRecvChunk getFileRecvChunk(int index) {
      return fileRecvChunk_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    public im.tox.proto.Core.FileRecvChunkOrBuilder getFileRecvChunkOrBuilder(
        int index) {
      return fileRecvChunk_.get(index);
    }
    private void ensureFileRecvChunkIsMutable() {
      if (!fileRecvChunk_.isModifiable()) {
        fileRecvChunk_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(fileRecvChunk_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    private void setFileRecvChunk(
        int index, im.tox.proto.Core.FileRecvChunk value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileRecvChunkIsMutable();
      fileRecvChunk_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    private void setFileRecvChunk(
        int index, im.tox.proto.Core.FileRecvChunk.Builder builderForValue) {
      ensureFileRecvChunkIsMutable();
      fileRecvChunk_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    private void addFileRecvChunk(im.tox.proto.Core.FileRecvChunk value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileRecvChunkIsMutable();
      fileRecvChunk_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    private void addFileRecvChunk(
        int index, im.tox.proto.Core.FileRecvChunk value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFileRecvChunkIsMutable();
      fileRecvChunk_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    private void addFileRecvChunk(
        im.tox.proto.Core.FileRecvChunk.Builder builderForValue) {
      ensureFileRecvChunkIsMutable();
      fileRecvChunk_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    private void addFileRecvChunk(
        int index, im.tox.proto.Core.FileRecvChunk.Builder builderForValue) {
      ensureFileRecvChunkIsMutable();
      fileRecvChunk_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    private void addAllFileRecvChunk(
        java.lang.Iterable<? extends im.tox.proto.Core.FileRecvChunk> values) {
      ensureFileRecvChunkIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, fileRecvChunk_);
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    private void clearFileRecvChunk() {
      fileRecvChunk_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
     */
    private void removeFileRecvChunk(int index) {
      ensureFileRecvChunkIsMutable();
      fileRecvChunk_.remove(index);
    }

    public static final int FRIEND_LOSSY_PACKET_FIELD_NUMBER = 14;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendLossyPacket> friendLossyPacket_;
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendLossyPacket> getFriendLossyPacketList() {
      return friendLossyPacket_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendLossyPacketOrBuilder> 
        getFriendLossyPacketOrBuilderList() {
      return friendLossyPacket_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    public int getFriendLossyPacketCount() {
      return friendLossyPacket_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    public im.tox.proto.Core.FriendLossyPacket getFriendLossyPacket(int index) {
      return friendLossyPacket_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    public im.tox.proto.Core.FriendLossyPacketOrBuilder getFriendLossyPacketOrBuilder(
        int index) {
      return friendLossyPacket_.get(index);
    }
    private void ensureFriendLossyPacketIsMutable() {
      if (!friendLossyPacket_.isModifiable()) {
        friendLossyPacket_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendLossyPacket_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    private void setFriendLossyPacket(
        int index, im.tox.proto.Core.FriendLossyPacket value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendLossyPacketIsMutable();
      friendLossyPacket_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    private void setFriendLossyPacket(
        int index, im.tox.proto.Core.FriendLossyPacket.Builder builderForValue) {
      ensureFriendLossyPacketIsMutable();
      friendLossyPacket_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    private void addFriendLossyPacket(im.tox.proto.Core.FriendLossyPacket value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendLossyPacketIsMutable();
      friendLossyPacket_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    private void addFriendLossyPacket(
        int index, im.tox.proto.Core.FriendLossyPacket value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendLossyPacketIsMutable();
      friendLossyPacket_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    private void addFriendLossyPacket(
        im.tox.proto.Core.FriendLossyPacket.Builder builderForValue) {
      ensureFriendLossyPacketIsMutable();
      friendLossyPacket_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    private void addFriendLossyPacket(
        int index, im.tox.proto.Core.FriendLossyPacket.Builder builderForValue) {
      ensureFriendLossyPacketIsMutable();
      friendLossyPacket_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    private void addAllFriendLossyPacket(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendLossyPacket> values) {
      ensureFriendLossyPacketIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendLossyPacket_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    private void clearFriendLossyPacket() {
      friendLossyPacket_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
     */
    private void removeFriendLossyPacket(int index) {
      ensureFriendLossyPacketIsMutable();
      friendLossyPacket_.remove(index);
    }

    public static final int FRIEND_LOSSLESS_PACKET_FIELD_NUMBER = 15;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendLosslessPacket> friendLosslessPacket_;
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendLosslessPacket> getFriendLosslessPacketList() {
      return friendLosslessPacket_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendLosslessPacketOrBuilder> 
        getFriendLosslessPacketOrBuilderList() {
      return friendLosslessPacket_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    public int getFriendLosslessPacketCount() {
      return friendLosslessPacket_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    public im.tox.proto.Core.FriendLosslessPacket getFriendLosslessPacket(int index) {
      return friendLosslessPacket_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    public im.tox.proto.Core.FriendLosslessPacketOrBuilder getFriendLosslessPacketOrBuilder(
        int index) {
      return friendLosslessPacket_.get(index);
    }
    private void ensureFriendLosslessPacketIsMutable() {
      if (!friendLosslessPacket_.isModifiable()) {
        friendLosslessPacket_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendLosslessPacket_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    private void setFriendLosslessPacket(
        int index, im.tox.proto.Core.FriendLosslessPacket value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendLosslessPacketIsMutable();
      friendLosslessPacket_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    private void setFriendLosslessPacket(
        int index, im.tox.proto.Core.FriendLosslessPacket.Builder builderForValue) {
      ensureFriendLosslessPacketIsMutable();
      friendLosslessPacket_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    private void addFriendLosslessPacket(im.tox.proto.Core.FriendLosslessPacket value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendLosslessPacketIsMutable();
      friendLosslessPacket_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    private void addFriendLosslessPacket(
        int index, im.tox.proto.Core.FriendLosslessPacket value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendLosslessPacketIsMutable();
      friendLosslessPacket_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    private void addFriendLosslessPacket(
        im.tox.proto.Core.FriendLosslessPacket.Builder builderForValue) {
      ensureFriendLosslessPacketIsMutable();
      friendLosslessPacket_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    private void addFriendLosslessPacket(
        int index, im.tox.proto.Core.FriendLosslessPacket.Builder builderForValue) {
      ensureFriendLosslessPacketIsMutable();
      friendLosslessPacket_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    private void addAllFriendLosslessPacket(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendLosslessPacket> values) {
      ensureFriendLosslessPacketIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendLosslessPacket_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    private void clearFriendLosslessPacket() {
      friendLosslessPacket_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
     */
    private void removeFriendLosslessPacket(int index) {
      ensureFriendLosslessPacketIsMutable();
      friendLosslessPacket_.remove(index);
    }

    public static final int FRIEND_MESSAGE_OFFLINE_FIELD_NUMBER = 16;
    private com.google.protobuf.Internal.ProtobufList<im.tox.proto.Core.FriendMessageOffline> friendMessageOffline_;
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    public java.util.List<im.tox.proto.Core.FriendMessageOffline> getFriendMessageOfflineList() {
      return friendMessageOffline_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    public java.util.List<? extends im.tox.proto.Core.FriendMessageOfflineOrBuilder> 
        getFriendMessageOfflineOrBuilderList() {
      return friendMessageOffline_;
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    public int getFriendMessageOfflineCount() {
      return friendMessageOffline_.size();
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    public im.tox.proto.Core.FriendMessageOffline getFriendMessageOffline(int index) {
      return friendMessageOffline_.get(index);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    public im.tox.proto.Core.FriendMessageOfflineOrBuilder getFriendMessageOfflineOrBuilder(
        int index) {
      return friendMessageOffline_.get(index);
    }
    private void ensureFriendMessageOfflineIsMutable() {
      if (!friendMessageOffline_.isModifiable()) {
        friendMessageOffline_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(friendMessageOffline_);
       }
    }

    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    private void setFriendMessageOffline(
        int index, im.tox.proto.Core.FriendMessageOffline value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendMessageOfflineIsMutable();
      friendMessageOffline_.set(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    private void setFriendMessageOffline(
        int index, im.tox.proto.Core.FriendMessageOffline.Builder builderForValue) {
      ensureFriendMessageOfflineIsMutable();
      friendMessageOffline_.set(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    private void addFriendMessageOffline(im.tox.proto.Core.FriendMessageOffline value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendMessageOfflineIsMutable();
      friendMessageOffline_.add(value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    private void addFriendMessageOffline(
        int index, im.tox.proto.Core.FriendMessageOffline value) {
      if (value == null) {
        throw new NullPointerException();
      }
      ensureFriendMessageOfflineIsMutable();
      friendMessageOffline_.add(index, value);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    private void addFriendMessageOffline(
        im.tox.proto.Core.FriendMessageOffline.Builder builderForValue) {
      ensureFriendMessageOfflineIsMutable();
      friendMessageOffline_.add(builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    private void addFriendMessageOffline(
        int index, im.tox.proto.Core.FriendMessageOffline.Builder builderForValue) {
      ensureFriendMessageOfflineIsMutable();
      friendMessageOffline_.add(index, builderForValue.build());
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    private void addAllFriendMessageOffline(
        java.lang.Iterable<? extends im.tox.proto.Core.FriendMessageOffline> values) {
      ensureFriendMessageOfflineIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, friendMessageOffline_);
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    private void clearFriendMessageOffline() {
      friendMessageOffline_ = emptyProtobufList();
    }
    /**
     * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
     */
    private void removeFriendMessageOffline(int index) {
      ensureFriendMessageOfflineIsMutable();
      friendMessageOffline_.remove(index);
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < selfConnectionStatus_.size(); i++) {
        output.writeMessage(1, selfConnectionStatus_.get(i));
      }
      for (int i = 0; i < friendName_.size(); i++) {
        output.writeMessage(2, friendName_.get(i));
      }
      for (int i = 0; i < friendStatusMessage_.size(); i++) {
        output.writeMessage(3, friendStatusMessage_.get(i));
      }
      for (int i = 0; i < friendStatus_.size(); i++) {
        output.writeMessage(4, friendStatus_.get(i));
      }
      for (int i = 0; i < friendConnectionStatus_.size(); i++) {
        output.writeMessage(5, friendConnectionStatus_.get(i));
      }
      for (int i = 0; i < friendTyping_.size(); i++) {
        output.writeMessage(6, friendTyping_.get(i));
      }
      for (int i = 0; i < friendReadReceipt_.size(); i++) {
        output.writeMessage(7, friendReadReceipt_.get(i));
      }
      for (int i = 0; i < friendRequest_.size(); i++) {
        output.writeMessage(8, friendRequest_.get(i));
      }
      for (int i = 0; i < friendMessage_.size(); i++) {
        output.writeMessage(9, friendMessage_.get(i));
      }
      for (int i = 0; i < fileRecvControl_.size(); i++) {
        output.writeMessage(10, fileRecvControl_.get(i));
      }
      for (int i = 0; i < fileChunkRequest_.size(); i++) {
        output.writeMessage(11, fileChunkRequest_.get(i));
      }
      for (int i = 0; i < fileRecv_.size(); i++) {
        output.writeMessage(12, fileRecv_.get(i));
      }
      for (int i = 0; i < fileRecvChunk_.size(); i++) {
        output.writeMessage(13, fileRecvChunk_.get(i));
      }
      for (int i = 0; i < friendLossyPacket_.size(); i++) {
        output.writeMessage(14, friendLossyPacket_.get(i));
      }
      for (int i = 0; i < friendLosslessPacket_.size(); i++) {
        output.writeMessage(15, friendLosslessPacket_.get(i));
      }
      for (int i = 0; i < friendMessageOffline_.size(); i++) {
        output.writeMessage(16, friendMessageOffline_.get(i));
      }
    }

    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < selfConnectionStatus_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, selfConnectionStatus_.get(i));
      }
      for (int i = 0; i < friendName_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, friendName_.get(i));
      }
      for (int i = 0; i < friendStatusMessage_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, friendStatusMessage_.get(i));
      }
      for (int i = 0; i < friendStatus_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, friendStatus_.get(i));
      }
      for (int i = 0; i < friendConnectionStatus_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, friendConnectionStatus_.get(i));
      }
      for (int i = 0; i < friendTyping_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, friendTyping_.get(i));
      }
      for (int i = 0; i < friendReadReceipt_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, friendReadReceipt_.get(i));
      }
      for (int i = 0; i < friendRequest_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, friendRequest_.get(i));
      }
      for (int i = 0; i < friendMessage_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, friendMessage_.get(i));
      }
      for (int i = 0; i < fileRecvControl_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, fileRecvControl_.get(i));
      }
      for (int i = 0; i < fileChunkRequest_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, fileChunkRequest_.get(i));
      }
      for (int i = 0; i < fileRecv_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, fileRecv_.get(i));
      }
      for (int i = 0; i < fileRecvChunk_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, fileRecvChunk_.get(i));
      }
      for (int i = 0; i < friendLossyPacket_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(14, friendLossyPacket_.get(i));
      }
      for (int i = 0; i < friendLosslessPacket_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, friendLosslessPacket_.get(i));
      }
      for (int i = 0; i < friendMessageOffline_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, friendMessageOffline_.get(i));
      }
      memoizedSerializedSize = size;
      return size;
    }

    public static im.tox.proto.Core.CoreEvents parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.CoreEvents parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.CoreEvents parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static im.tox.proto.Core.CoreEvents parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static im.tox.proto.Core.CoreEvents parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.CoreEvents parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.CoreEvents parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.CoreEvents parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static im.tox.proto.Core.CoreEvents parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static im.tox.proto.Core.CoreEvents parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(im.tox.proto.Core.CoreEvents prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    /**
     * Protobuf type {@code im.tox.proto.CoreEvents}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          im.tox.proto.Core.CoreEvents, Builder> implements
        // @@protoc_insertion_point(builder_implements:im.tox.proto.CoreEvents)
        im.tox.proto.Core.CoreEventsOrBuilder {
      // Construct using im.tox.proto.Core.CoreEvents.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public java.util.List<im.tox.proto.Core.SelfConnectionStatus> getSelfConnectionStatusList() {
        return java.util.Collections.unmodifiableList(
            instance.getSelfConnectionStatusList());
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public int getSelfConnectionStatusCount() {
        return instance.getSelfConnectionStatusCount();
      }/**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public im.tox.proto.Core.SelfConnectionStatus getSelfConnectionStatus(int index) {
        return instance.getSelfConnectionStatus(index);
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public Builder setSelfConnectionStatus(
          int index, im.tox.proto.Core.SelfConnectionStatus value) {
        copyOnWrite();
        instance.setSelfConnectionStatus(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public Builder setSelfConnectionStatus(
          int index, im.tox.proto.Core.SelfConnectionStatus.Builder builderForValue) {
        copyOnWrite();
        instance.setSelfConnectionStatus(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public Builder addSelfConnectionStatus(im.tox.proto.Core.SelfConnectionStatus value) {
        copyOnWrite();
        instance.addSelfConnectionStatus(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public Builder addSelfConnectionStatus(
          int index, im.tox.proto.Core.SelfConnectionStatus value) {
        copyOnWrite();
        instance.addSelfConnectionStatus(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public Builder addSelfConnectionStatus(
          im.tox.proto.Core.SelfConnectionStatus.Builder builderForValue) {
        copyOnWrite();
        instance.addSelfConnectionStatus(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public Builder addSelfConnectionStatus(
          int index, im.tox.proto.Core.SelfConnectionStatus.Builder builderForValue) {
        copyOnWrite();
        instance.addSelfConnectionStatus(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public Builder addAllSelfConnectionStatus(
          java.lang.Iterable<? extends im.tox.proto.Core.SelfConnectionStatus> values) {
        copyOnWrite();
        instance.addAllSelfConnectionStatus(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public Builder clearSelfConnectionStatus() {
        copyOnWrite();
        instance.clearSelfConnectionStatus();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.SelfConnectionStatus self_connection_status = 1;</code>
       */
      public Builder removeSelfConnectionStatus(int index) {
        copyOnWrite();
        instance.removeSelfConnectionStatus(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendName> getFriendNameList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendNameList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public int getFriendNameCount() {
        return instance.getFriendNameCount();
      }/**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public im.tox.proto.Core.FriendName getFriendName(int index) {
        return instance.getFriendName(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public Builder setFriendName(
          int index, im.tox.proto.Core.FriendName value) {
        copyOnWrite();
        instance.setFriendName(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public Builder setFriendName(
          int index, im.tox.proto.Core.FriendName.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendName(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public Builder addFriendName(im.tox.proto.Core.FriendName value) {
        copyOnWrite();
        instance.addFriendName(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public Builder addFriendName(
          int index, im.tox.proto.Core.FriendName value) {
        copyOnWrite();
        instance.addFriendName(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public Builder addFriendName(
          im.tox.proto.Core.FriendName.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendName(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public Builder addFriendName(
          int index, im.tox.proto.Core.FriendName.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendName(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public Builder addAllFriendName(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendName> values) {
        copyOnWrite();
        instance.addAllFriendName(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public Builder clearFriendName() {
        copyOnWrite();
        instance.clearFriendName();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendName friend_name = 2;</code>
       */
      public Builder removeFriendName(int index) {
        copyOnWrite();
        instance.removeFriendName(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendStatusMessage> getFriendStatusMessageList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendStatusMessageList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public int getFriendStatusMessageCount() {
        return instance.getFriendStatusMessageCount();
      }/**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public im.tox.proto.Core.FriendStatusMessage getFriendStatusMessage(int index) {
        return instance.getFriendStatusMessage(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public Builder setFriendStatusMessage(
          int index, im.tox.proto.Core.FriendStatusMessage value) {
        copyOnWrite();
        instance.setFriendStatusMessage(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public Builder setFriendStatusMessage(
          int index, im.tox.proto.Core.FriendStatusMessage.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendStatusMessage(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public Builder addFriendStatusMessage(im.tox.proto.Core.FriendStatusMessage value) {
        copyOnWrite();
        instance.addFriendStatusMessage(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public Builder addFriendStatusMessage(
          int index, im.tox.proto.Core.FriendStatusMessage value) {
        copyOnWrite();
        instance.addFriendStatusMessage(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public Builder addFriendStatusMessage(
          im.tox.proto.Core.FriendStatusMessage.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendStatusMessage(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public Builder addFriendStatusMessage(
          int index, im.tox.proto.Core.FriendStatusMessage.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendStatusMessage(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public Builder addAllFriendStatusMessage(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendStatusMessage> values) {
        copyOnWrite();
        instance.addAllFriendStatusMessage(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public Builder clearFriendStatusMessage() {
        copyOnWrite();
        instance.clearFriendStatusMessage();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatusMessage friend_status_message = 3;</code>
       */
      public Builder removeFriendStatusMessage(int index) {
        copyOnWrite();
        instance.removeFriendStatusMessage(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendStatus> getFriendStatusList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendStatusList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public int getFriendStatusCount() {
        return instance.getFriendStatusCount();
      }/**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public im.tox.proto.Core.FriendStatus getFriendStatus(int index) {
        return instance.getFriendStatus(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public Builder setFriendStatus(
          int index, im.tox.proto.Core.FriendStatus value) {
        copyOnWrite();
        instance.setFriendStatus(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public Builder setFriendStatus(
          int index, im.tox.proto.Core.FriendStatus.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendStatus(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public Builder addFriendStatus(im.tox.proto.Core.FriendStatus value) {
        copyOnWrite();
        instance.addFriendStatus(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public Builder addFriendStatus(
          int index, im.tox.proto.Core.FriendStatus value) {
        copyOnWrite();
        instance.addFriendStatus(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public Builder addFriendStatus(
          im.tox.proto.Core.FriendStatus.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendStatus(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public Builder addFriendStatus(
          int index, im.tox.proto.Core.FriendStatus.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendStatus(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public Builder addAllFriendStatus(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendStatus> values) {
        copyOnWrite();
        instance.addAllFriendStatus(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public Builder clearFriendStatus() {
        copyOnWrite();
        instance.clearFriendStatus();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendStatus friend_status = 4;</code>
       */
      public Builder removeFriendStatus(int index) {
        copyOnWrite();
        instance.removeFriendStatus(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendConnectionStatus> getFriendConnectionStatusList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendConnectionStatusList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public int getFriendConnectionStatusCount() {
        return instance.getFriendConnectionStatusCount();
      }/**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public im.tox.proto.Core.FriendConnectionStatus getFriendConnectionStatus(int index) {
        return instance.getFriendConnectionStatus(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public Builder setFriendConnectionStatus(
          int index, im.tox.proto.Core.FriendConnectionStatus value) {
        copyOnWrite();
        instance.setFriendConnectionStatus(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public Builder setFriendConnectionStatus(
          int index, im.tox.proto.Core.FriendConnectionStatus.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendConnectionStatus(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public Builder addFriendConnectionStatus(im.tox.proto.Core.FriendConnectionStatus value) {
        copyOnWrite();
        instance.addFriendConnectionStatus(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public Builder addFriendConnectionStatus(
          int index, im.tox.proto.Core.FriendConnectionStatus value) {
        copyOnWrite();
        instance.addFriendConnectionStatus(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public Builder addFriendConnectionStatus(
          im.tox.proto.Core.FriendConnectionStatus.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendConnectionStatus(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public Builder addFriendConnectionStatus(
          int index, im.tox.proto.Core.FriendConnectionStatus.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendConnectionStatus(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public Builder addAllFriendConnectionStatus(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendConnectionStatus> values) {
        copyOnWrite();
        instance.addAllFriendConnectionStatus(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public Builder clearFriendConnectionStatus() {
        copyOnWrite();
        instance.clearFriendConnectionStatus();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendConnectionStatus friend_connection_status = 5;</code>
       */
      public Builder removeFriendConnectionStatus(int index) {
        copyOnWrite();
        instance.removeFriendConnectionStatus(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendTyping> getFriendTypingList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendTypingList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public int getFriendTypingCount() {
        return instance.getFriendTypingCount();
      }/**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public im.tox.proto.Core.FriendTyping getFriendTyping(int index) {
        return instance.getFriendTyping(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public Builder setFriendTyping(
          int index, im.tox.proto.Core.FriendTyping value) {
        copyOnWrite();
        instance.setFriendTyping(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public Builder setFriendTyping(
          int index, im.tox.proto.Core.FriendTyping.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendTyping(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public Builder addFriendTyping(im.tox.proto.Core.FriendTyping value) {
        copyOnWrite();
        instance.addFriendTyping(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public Builder addFriendTyping(
          int index, im.tox.proto.Core.FriendTyping value) {
        copyOnWrite();
        instance.addFriendTyping(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public Builder addFriendTyping(
          im.tox.proto.Core.FriendTyping.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendTyping(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public Builder addFriendTyping(
          int index, im.tox.proto.Core.FriendTyping.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendTyping(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public Builder addAllFriendTyping(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendTyping> values) {
        copyOnWrite();
        instance.addAllFriendTyping(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public Builder clearFriendTyping() {
        copyOnWrite();
        instance.clearFriendTyping();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendTyping friend_typing = 6;</code>
       */
      public Builder removeFriendTyping(int index) {
        copyOnWrite();
        instance.removeFriendTyping(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendReadReceipt> getFriendReadReceiptList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendReadReceiptList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public int getFriendReadReceiptCount() {
        return instance.getFriendReadReceiptCount();
      }/**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public im.tox.proto.Core.FriendReadReceipt getFriendReadReceipt(int index) {
        return instance.getFriendReadReceipt(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public Builder setFriendReadReceipt(
          int index, im.tox.proto.Core.FriendReadReceipt value) {
        copyOnWrite();
        instance.setFriendReadReceipt(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public Builder setFriendReadReceipt(
          int index, im.tox.proto.Core.FriendReadReceipt.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendReadReceipt(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public Builder addFriendReadReceipt(im.tox.proto.Core.FriendReadReceipt value) {
        copyOnWrite();
        instance.addFriendReadReceipt(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public Builder addFriendReadReceipt(
          int index, im.tox.proto.Core.FriendReadReceipt value) {
        copyOnWrite();
        instance.addFriendReadReceipt(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public Builder addFriendReadReceipt(
          im.tox.proto.Core.FriendReadReceipt.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendReadReceipt(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public Builder addFriendReadReceipt(
          int index, im.tox.proto.Core.FriendReadReceipt.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendReadReceipt(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public Builder addAllFriendReadReceipt(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendReadReceipt> values) {
        copyOnWrite();
        instance.addAllFriendReadReceipt(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public Builder clearFriendReadReceipt() {
        copyOnWrite();
        instance.clearFriendReadReceipt();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendReadReceipt friend_read_receipt = 7;</code>
       */
      public Builder removeFriendReadReceipt(int index) {
        copyOnWrite();
        instance.removeFriendReadReceipt(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendRequest> getFriendRequestList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendRequestList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public int getFriendRequestCount() {
        return instance.getFriendRequestCount();
      }/**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public im.tox.proto.Core.FriendRequest getFriendRequest(int index) {
        return instance.getFriendRequest(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public Builder setFriendRequest(
          int index, im.tox.proto.Core.FriendRequest value) {
        copyOnWrite();
        instance.setFriendRequest(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public Builder setFriendRequest(
          int index, im.tox.proto.Core.FriendRequest.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendRequest(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public Builder addFriendRequest(im.tox.proto.Core.FriendRequest value) {
        copyOnWrite();
        instance.addFriendRequest(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public Builder addFriendRequest(
          int index, im.tox.proto.Core.FriendRequest value) {
        copyOnWrite();
        instance.addFriendRequest(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public Builder addFriendRequest(
          im.tox.proto.Core.FriendRequest.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendRequest(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public Builder addFriendRequest(
          int index, im.tox.proto.Core.FriendRequest.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendRequest(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public Builder addAllFriendRequest(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendRequest> values) {
        copyOnWrite();
        instance.addAllFriendRequest(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public Builder clearFriendRequest() {
        copyOnWrite();
        instance.clearFriendRequest();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendRequest friend_request = 8;</code>
       */
      public Builder removeFriendRequest(int index) {
        copyOnWrite();
        instance.removeFriendRequest(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendMessage> getFriendMessageList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendMessageList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public int getFriendMessageCount() {
        return instance.getFriendMessageCount();
      }/**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public im.tox.proto.Core.FriendMessage getFriendMessage(int index) {
        return instance.getFriendMessage(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public Builder setFriendMessage(
          int index, im.tox.proto.Core.FriendMessage value) {
        copyOnWrite();
        instance.setFriendMessage(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public Builder setFriendMessage(
          int index, im.tox.proto.Core.FriendMessage.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendMessage(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public Builder addFriendMessage(im.tox.proto.Core.FriendMessage value) {
        copyOnWrite();
        instance.addFriendMessage(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public Builder addFriendMessage(
          int index, im.tox.proto.Core.FriendMessage value) {
        copyOnWrite();
        instance.addFriendMessage(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public Builder addFriendMessage(
          im.tox.proto.Core.FriendMessage.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendMessage(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public Builder addFriendMessage(
          int index, im.tox.proto.Core.FriendMessage.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendMessage(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public Builder addAllFriendMessage(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendMessage> values) {
        copyOnWrite();
        instance.addAllFriendMessage(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public Builder clearFriendMessage() {
        copyOnWrite();
        instance.clearFriendMessage();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessage friend_message = 9;</code>
       */
      public Builder removeFriendMessage(int index) {
        copyOnWrite();
        instance.removeFriendMessage(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public java.util.List<im.tox.proto.Core.FileRecvControl> getFileRecvControlList() {
        return java.util.Collections.unmodifiableList(
            instance.getFileRecvControlList());
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public int getFileRecvControlCount() {
        return instance.getFileRecvControlCount();
      }/**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public im.tox.proto.Core.FileRecvControl getFileRecvControl(int index) {
        return instance.getFileRecvControl(index);
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public Builder setFileRecvControl(
          int index, im.tox.proto.Core.FileRecvControl value) {
        copyOnWrite();
        instance.setFileRecvControl(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public Builder setFileRecvControl(
          int index, im.tox.proto.Core.FileRecvControl.Builder builderForValue) {
        copyOnWrite();
        instance.setFileRecvControl(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public Builder addFileRecvControl(im.tox.proto.Core.FileRecvControl value) {
        copyOnWrite();
        instance.addFileRecvControl(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public Builder addFileRecvControl(
          int index, im.tox.proto.Core.FileRecvControl value) {
        copyOnWrite();
        instance.addFileRecvControl(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public Builder addFileRecvControl(
          im.tox.proto.Core.FileRecvControl.Builder builderForValue) {
        copyOnWrite();
        instance.addFileRecvControl(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public Builder addFileRecvControl(
          int index, im.tox.proto.Core.FileRecvControl.Builder builderForValue) {
        copyOnWrite();
        instance.addFileRecvControl(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public Builder addAllFileRecvControl(
          java.lang.Iterable<? extends im.tox.proto.Core.FileRecvControl> values) {
        copyOnWrite();
        instance.addAllFileRecvControl(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public Builder clearFileRecvControl() {
        copyOnWrite();
        instance.clearFileRecvControl();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvControl file_recv_control = 10;</code>
       */
      public Builder removeFileRecvControl(int index) {
        copyOnWrite();
        instance.removeFileRecvControl(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public java.util.List<im.tox.proto.Core.FileChunkRequest> getFileChunkRequestList() {
        return java.util.Collections.unmodifiableList(
            instance.getFileChunkRequestList());
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public int getFileChunkRequestCount() {
        return instance.getFileChunkRequestCount();
      }/**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public im.tox.proto.Core.FileChunkRequest getFileChunkRequest(int index) {
        return instance.getFileChunkRequest(index);
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public Builder setFileChunkRequest(
          int index, im.tox.proto.Core.FileChunkRequest value) {
        copyOnWrite();
        instance.setFileChunkRequest(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public Builder setFileChunkRequest(
          int index, im.tox.proto.Core.FileChunkRequest.Builder builderForValue) {
        copyOnWrite();
        instance.setFileChunkRequest(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public Builder addFileChunkRequest(im.tox.proto.Core.FileChunkRequest value) {
        copyOnWrite();
        instance.addFileChunkRequest(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public Builder addFileChunkRequest(
          int index, im.tox.proto.Core.FileChunkRequest value) {
        copyOnWrite();
        instance.addFileChunkRequest(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public Builder addFileChunkRequest(
          im.tox.proto.Core.FileChunkRequest.Builder builderForValue) {
        copyOnWrite();
        instance.addFileChunkRequest(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public Builder addFileChunkRequest(
          int index, im.tox.proto.Core.FileChunkRequest.Builder builderForValue) {
        copyOnWrite();
        instance.addFileChunkRequest(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public Builder addAllFileChunkRequest(
          java.lang.Iterable<? extends im.tox.proto.Core.FileChunkRequest> values) {
        copyOnWrite();
        instance.addAllFileChunkRequest(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public Builder clearFileChunkRequest() {
        copyOnWrite();
        instance.clearFileChunkRequest();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileChunkRequest file_chunk_request = 11;</code>
       */
      public Builder removeFileChunkRequest(int index) {
        copyOnWrite();
        instance.removeFileChunkRequest(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public java.util.List<im.tox.proto.Core.FileRecv> getFileRecvList() {
        return java.util.Collections.unmodifiableList(
            instance.getFileRecvList());
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public int getFileRecvCount() {
        return instance.getFileRecvCount();
      }/**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public im.tox.proto.Core.FileRecv getFileRecv(int index) {
        return instance.getFileRecv(index);
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public Builder setFileRecv(
          int index, im.tox.proto.Core.FileRecv value) {
        copyOnWrite();
        instance.setFileRecv(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public Builder setFileRecv(
          int index, im.tox.proto.Core.FileRecv.Builder builderForValue) {
        copyOnWrite();
        instance.setFileRecv(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public Builder addFileRecv(im.tox.proto.Core.FileRecv value) {
        copyOnWrite();
        instance.addFileRecv(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public Builder addFileRecv(
          int index, im.tox.proto.Core.FileRecv value) {
        copyOnWrite();
        instance.addFileRecv(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public Builder addFileRecv(
          im.tox.proto.Core.FileRecv.Builder builderForValue) {
        copyOnWrite();
        instance.addFileRecv(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public Builder addFileRecv(
          int index, im.tox.proto.Core.FileRecv.Builder builderForValue) {
        copyOnWrite();
        instance.addFileRecv(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public Builder addAllFileRecv(
          java.lang.Iterable<? extends im.tox.proto.Core.FileRecv> values) {
        copyOnWrite();
        instance.addAllFileRecv(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public Builder clearFileRecv() {
        copyOnWrite();
        instance.clearFileRecv();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecv file_recv = 12;</code>
       */
      public Builder removeFileRecv(int index) {
        copyOnWrite();
        instance.removeFileRecv(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public java.util.List<im.tox.proto.Core.FileRecvChunk> getFileRecvChunkList() {
        return java.util.Collections.unmodifiableList(
            instance.getFileRecvChunkList());
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public int getFileRecvChunkCount() {
        return instance.getFileRecvChunkCount();
      }/**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public im.tox.proto.Core.FileRecvChunk getFileRecvChunk(int index) {
        return instance.getFileRecvChunk(index);
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public Builder setFileRecvChunk(
          int index, im.tox.proto.Core.FileRecvChunk value) {
        copyOnWrite();
        instance.setFileRecvChunk(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public Builder setFileRecvChunk(
          int index, im.tox.proto.Core.FileRecvChunk.Builder builderForValue) {
        copyOnWrite();
        instance.setFileRecvChunk(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public Builder addFileRecvChunk(im.tox.proto.Core.FileRecvChunk value) {
        copyOnWrite();
        instance.addFileRecvChunk(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public Builder addFileRecvChunk(
          int index, im.tox.proto.Core.FileRecvChunk value) {
        copyOnWrite();
        instance.addFileRecvChunk(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public Builder addFileRecvChunk(
          im.tox.proto.Core.FileRecvChunk.Builder builderForValue) {
        copyOnWrite();
        instance.addFileRecvChunk(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public Builder addFileRecvChunk(
          int index, im.tox.proto.Core.FileRecvChunk.Builder builderForValue) {
        copyOnWrite();
        instance.addFileRecvChunk(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public Builder addAllFileRecvChunk(
          java.lang.Iterable<? extends im.tox.proto.Core.FileRecvChunk> values) {
        copyOnWrite();
        instance.addAllFileRecvChunk(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public Builder clearFileRecvChunk() {
        copyOnWrite();
        instance.clearFileRecvChunk();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FileRecvChunk file_recv_chunk = 13;</code>
       */
      public Builder removeFileRecvChunk(int index) {
        copyOnWrite();
        instance.removeFileRecvChunk(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendLossyPacket> getFriendLossyPacketList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendLossyPacketList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public int getFriendLossyPacketCount() {
        return instance.getFriendLossyPacketCount();
      }/**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public im.tox.proto.Core.FriendLossyPacket getFriendLossyPacket(int index) {
        return instance.getFriendLossyPacket(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public Builder setFriendLossyPacket(
          int index, im.tox.proto.Core.FriendLossyPacket value) {
        copyOnWrite();
        instance.setFriendLossyPacket(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public Builder setFriendLossyPacket(
          int index, im.tox.proto.Core.FriendLossyPacket.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendLossyPacket(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public Builder addFriendLossyPacket(im.tox.proto.Core.FriendLossyPacket value) {
        copyOnWrite();
        instance.addFriendLossyPacket(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public Builder addFriendLossyPacket(
          int index, im.tox.proto.Core.FriendLossyPacket value) {
        copyOnWrite();
        instance.addFriendLossyPacket(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public Builder addFriendLossyPacket(
          im.tox.proto.Core.FriendLossyPacket.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendLossyPacket(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public Builder addFriendLossyPacket(
          int index, im.tox.proto.Core.FriendLossyPacket.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendLossyPacket(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public Builder addAllFriendLossyPacket(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendLossyPacket> values) {
        copyOnWrite();
        instance.addAllFriendLossyPacket(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public Builder clearFriendLossyPacket() {
        copyOnWrite();
        instance.clearFriendLossyPacket();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLossyPacket friend_lossy_packet = 14;</code>
       */
      public Builder removeFriendLossyPacket(int index) {
        copyOnWrite();
        instance.removeFriendLossyPacket(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendLosslessPacket> getFriendLosslessPacketList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendLosslessPacketList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public int getFriendLosslessPacketCount() {
        return instance.getFriendLosslessPacketCount();
      }/**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public im.tox.proto.Core.FriendLosslessPacket getFriendLosslessPacket(int index) {
        return instance.getFriendLosslessPacket(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public Builder setFriendLosslessPacket(
          int index, im.tox.proto.Core.FriendLosslessPacket value) {
        copyOnWrite();
        instance.setFriendLosslessPacket(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public Builder setFriendLosslessPacket(
          int index, im.tox.proto.Core.FriendLosslessPacket.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendLosslessPacket(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public Builder addFriendLosslessPacket(im.tox.proto.Core.FriendLosslessPacket value) {
        copyOnWrite();
        instance.addFriendLosslessPacket(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public Builder addFriendLosslessPacket(
          int index, im.tox.proto.Core.FriendLosslessPacket value) {
        copyOnWrite();
        instance.addFriendLosslessPacket(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public Builder addFriendLosslessPacket(
          im.tox.proto.Core.FriendLosslessPacket.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendLosslessPacket(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public Builder addFriendLosslessPacket(
          int index, im.tox.proto.Core.FriendLosslessPacket.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendLosslessPacket(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public Builder addAllFriendLosslessPacket(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendLosslessPacket> values) {
        copyOnWrite();
        instance.addAllFriendLosslessPacket(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public Builder clearFriendLosslessPacket() {
        copyOnWrite();
        instance.clearFriendLosslessPacket();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendLosslessPacket friend_lossless_packet = 15;</code>
       */
      public Builder removeFriendLosslessPacket(int index) {
        copyOnWrite();
        instance.removeFriendLosslessPacket(index);
        return this;
      }

      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public java.util.List<im.tox.proto.Core.FriendMessageOffline> getFriendMessageOfflineList() {
        return java.util.Collections.unmodifiableList(
            instance.getFriendMessageOfflineList());
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public int getFriendMessageOfflineCount() {
        return instance.getFriendMessageOfflineCount();
      }/**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public im.tox.proto.Core.FriendMessageOffline getFriendMessageOffline(int index) {
        return instance.getFriendMessageOffline(index);
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public Builder setFriendMessageOffline(
          int index, im.tox.proto.Core.FriendMessageOffline value) {
        copyOnWrite();
        instance.setFriendMessageOffline(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public Builder setFriendMessageOffline(
          int index, im.tox.proto.Core.FriendMessageOffline.Builder builderForValue) {
        copyOnWrite();
        instance.setFriendMessageOffline(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public Builder addFriendMessageOffline(im.tox.proto.Core.FriendMessageOffline value) {
        copyOnWrite();
        instance.addFriendMessageOffline(value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public Builder addFriendMessageOffline(
          int index, im.tox.proto.Core.FriendMessageOffline value) {
        copyOnWrite();
        instance.addFriendMessageOffline(index, value);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public Builder addFriendMessageOffline(
          im.tox.proto.Core.FriendMessageOffline.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendMessageOffline(builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public Builder addFriendMessageOffline(
          int index, im.tox.proto.Core.FriendMessageOffline.Builder builderForValue) {
        copyOnWrite();
        instance.addFriendMessageOffline(index, builderForValue);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public Builder addAllFriendMessageOffline(
          java.lang.Iterable<? extends im.tox.proto.Core.FriendMessageOffline> values) {
        copyOnWrite();
        instance.addAllFriendMessageOffline(values);
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public Builder clearFriendMessageOffline() {
        copyOnWrite();
        instance.clearFriendMessageOffline();
        return this;
      }
      /**
       * <code>repeated .im.tox.proto.FriendMessageOffline friend_message_offline = 16;</code>
       */
      public Builder removeFriendMessageOffline(int index) {
        copyOnWrite();
        instance.removeFriendMessageOffline(index);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:im.tox.proto.CoreEvents)
    }
    protected final Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        Object arg0, Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new im.tox.proto.Core.CoreEvents();
        }
        case IS_INITIALIZED: {
          return DEFAULT_INSTANCE;
        }
        case MAKE_IMMUTABLE: {
          selfConnectionStatus_.makeImmutable();
          friendName_.makeImmutable();
          friendStatusMessage_.makeImmutable();
          friendStatus_.makeImmutable();
          friendConnectionStatus_.makeImmutable();
          friendTyping_.makeImmutable();
          friendReadReceipt_.makeImmutable();
          friendRequest_.makeImmutable();
          friendMessage_.makeImmutable();
          fileRecvControl_.makeImmutable();
          fileChunkRequest_.makeImmutable();
          fileRecv_.makeImmutable();
          fileRecvChunk_.makeImmutable();
          friendLossyPacket_.makeImmutable();
          friendLosslessPacket_.makeImmutable();
          friendMessageOffline_.makeImmutable();
          return null;
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case VISIT: {
          Visitor visitor = (Visitor) arg0;
          im.tox.proto.Core.CoreEvents other = (im.tox.proto.Core.CoreEvents) arg1;
          selfConnectionStatus_= visitor.visitList(selfConnectionStatus_, other.selfConnectionStatus_);
          friendName_= visitor.visitList(friendName_, other.friendName_);
          friendStatusMessage_= visitor.visitList(friendStatusMessage_, other.friendStatusMessage_);
          friendStatus_= visitor.visitList(friendStatus_, other.friendStatus_);
          friendConnectionStatus_= visitor.visitList(friendConnectionStatus_, other.friendConnectionStatus_);
          friendTyping_= visitor.visitList(friendTyping_, other.friendTyping_);
          friendReadReceipt_= visitor.visitList(friendReadReceipt_, other.friendReadReceipt_);
          friendRequest_= visitor.visitList(friendRequest_, other.friendRequest_);
          friendMessage_= visitor.visitList(friendMessage_, other.friendMessage_);
          fileRecvControl_= visitor.visitList(fileRecvControl_, other.fileRecvControl_);
          fileChunkRequest_= visitor.visitList(fileChunkRequest_, other.fileChunkRequest_);
          fileRecv_= visitor.visitList(fileRecv_, other.fileRecv_);
          fileRecvChunk_= visitor.visitList(fileRecvChunk_, other.fileRecvChunk_);
          friendLossyPacket_= visitor.visitList(friendLossyPacket_, other.friendLossyPacket_);
          friendLosslessPacket_= visitor.visitList(friendLosslessPacket_, other.friendLosslessPacket_);
          friendMessageOffline_= visitor.visitList(friendMessageOffline_, other.friendMessageOffline_);
          if (visitor == com.google.protobuf.GeneratedMessageLite.MergeFromVisitor
              .INSTANCE) {
          }
          return this;
        }
        case MERGE_FROM_STREAM: {
          com.google.protobuf.CodedInputStream input =
              (com.google.protobuf.CodedInputStream) arg0;
          com.google.protobuf.ExtensionRegistryLite extensionRegistry =
              (com.google.protobuf.ExtensionRegistryLite) arg1;
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!input.skipField(tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  if (!selfConnectionStatus_.isModifiable()) {
                    selfConnectionStatus_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(selfConnectionStatus_);
                  }
                  selfConnectionStatus_.add(
                      input.readMessage(im.tox.proto.Core.SelfConnectionStatus.parser(), extensionRegistry));
                  break;
                }
                case 18: {
                  if (!friendName_.isModifiable()) {
                    friendName_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendName_);
                  }
                  friendName_.add(
                      input.readMessage(im.tox.proto.Core.FriendName.parser(), extensionRegistry));
                  break;
                }
                case 26: {
                  if (!friendStatusMessage_.isModifiable()) {
                    friendStatusMessage_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendStatusMessage_);
                  }
                  friendStatusMessage_.add(
                      input.readMessage(im.tox.proto.Core.FriendStatusMessage.parser(), extensionRegistry));
                  break;
                }
                case 34: {
                  if (!friendStatus_.isModifiable()) {
                    friendStatus_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendStatus_);
                  }
                  friendStatus_.add(
                      input.readMessage(im.tox.proto.Core.FriendStatus.parser(), extensionRegistry));
                  break;
                }
                case 42: {
                  if (!friendConnectionStatus_.isModifiable()) {
                    friendConnectionStatus_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendConnectionStatus_);
                  }
                  friendConnectionStatus_.add(
                      input.readMessage(im.tox.proto.Core.FriendConnectionStatus.parser(), extensionRegistry));
                  break;
                }
                case 50: {
                  if (!friendTyping_.isModifiable()) {
                    friendTyping_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendTyping_);
                  }
                  friendTyping_.add(
                      input.readMessage(im.tox.proto.Core.FriendTyping.parser(), extensionRegistry));
                  break;
                }
                case 58: {
                  if (!friendReadReceipt_.isModifiable()) {
                    friendReadReceipt_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendReadReceipt_);
                  }
                  friendReadReceipt_.add(
                      input.readMessage(im.tox.proto.Core.FriendReadReceipt.parser(), extensionRegistry));
                  break;
                }
                case 66: {
                  if (!friendRequest_.isModifiable()) {
                    friendRequest_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendRequest_);
                  }
                  friendRequest_.add(
                      input.readMessage(im.tox.proto.Core.FriendRequest.parser(), extensionRegistry));
                  break;
                }
                case 74: {
                  if (!friendMessage_.isModifiable()) {
                    friendMessage_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendMessage_);
                  }
                  friendMessage_.add(
                      input.readMessage(im.tox.proto.Core.FriendMessage.parser(), extensionRegistry));
                  break;
                }
                case 82: {
                  if (!fileRecvControl_.isModifiable()) {
                    fileRecvControl_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(fileRecvControl_);
                  }
                  fileRecvControl_.add(
                      input.readMessage(im.tox.proto.Core.FileRecvControl.parser(), extensionRegistry));
                  break;
                }
                case 90: {
                  if (!fileChunkRequest_.isModifiable()) {
                    fileChunkRequest_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(fileChunkRequest_);
                  }
                  fileChunkRequest_.add(
                      input.readMessage(im.tox.proto.Core.FileChunkRequest.parser(), extensionRegistry));
                  break;
                }
                case 98: {
                  if (!fileRecv_.isModifiable()) {
                    fileRecv_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(fileRecv_);
                  }
                  fileRecv_.add(
                      input.readMessage(im.tox.proto.Core.FileRecv.parser(), extensionRegistry));
                  break;
                }
                case 106: {
                  if (!fileRecvChunk_.isModifiable()) {
                    fileRecvChunk_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(fileRecvChunk_);
                  }
                  fileRecvChunk_.add(
                      input.readMessage(im.tox.proto.Core.FileRecvChunk.parser(), extensionRegistry));
                  break;
                }
                case 114: {
                  if (!friendLossyPacket_.isModifiable()) {
                    friendLossyPacket_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendLossyPacket_);
                  }
                  friendLossyPacket_.add(
                      input.readMessage(im.tox.proto.Core.FriendLossyPacket.parser(), extensionRegistry));
                  break;
                }
                case 122: {
                  if (!friendLosslessPacket_.isModifiable()) {
                    friendLosslessPacket_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendLosslessPacket_);
                  }
                  friendLosslessPacket_.add(
                      input.readMessage(im.tox.proto.Core.FriendLosslessPacket.parser(), extensionRegistry));
                  break;
                }
                case 130: {
                  if (!friendMessageOffline_.isModifiable()) {
                    friendMessageOffline_ =
                        com.google.protobuf.GeneratedMessageLite.mutableCopy(friendMessageOffline_);
                  }
                  friendMessageOffline_.add(
                      input.readMessage(im.tox.proto.Core.FriendMessageOffline.parser(), extensionRegistry));
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw new RuntimeException(e.setUnfinishedMessage(this));
          } catch (java.io.IOException e) {
            throw new RuntimeException(
                new com.google.protobuf.InvalidProtocolBufferException(
                    e.getMessage()).setUnfinishedMessage(this));
          } finally {
          }
        }
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          if (PARSER == null) {    synchronized (im.tox.proto.Core.CoreEvents.class) {
              if (PARSER == null) {
                PARSER = new DefaultInstanceBasedParser(DEFAULT_INSTANCE);
              }
            }
          }
          return PARSER;
        }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:im.tox.proto.CoreEvents)
    private static final im.tox.proto.Core.CoreEvents DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new CoreEvents();
      DEFAULT_INSTANCE.makeImmutable();
    }

    public static im.tox.proto.Core.CoreEvents getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<CoreEvents> PARSER;

    public static com.google.protobuf.Parser<CoreEvents> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}
