// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: visionmodeldata.proto

package com.fdkanfang.common.proto;

public final class Visionmodeldata {
  private Visionmodeldata() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public interface Affine3fOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.example.tutorial.Affine3f)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
     */
    boolean hasRotation();
    /**
     * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
     */
    Visionmodeldata.Quaternionf getRotation();
    /**
     * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
     */
    Visionmodeldata.QuaternionfOrBuilder getRotationOrBuilder();

    /**
     * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
     */
    boolean hasTranslation();
    /**
     * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
     */
    Visionmodeldata.Vector3f getTranslation();
    /**
     * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
     */
    Visionmodeldata.Vector3fOrBuilder getTranslationOrBuilder();
  }
  /**
   * Protobuf type {@code com.example.tutorial.Affine3f}
   */
  public static final class Affine3f extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.example.tutorial.Affine3f)
      Affine3fOrBuilder {
    // Use Affine3f.newBuilder() to construct.
    private Affine3f(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Affine3f(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Affine3f defaultInstance;
    public static Affine3f getDefaultInstance() {
      return defaultInstance;
    }

    public Affine3f getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Affine3f(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              Visionmodeldata.Quaternionf.Builder subBuilder = null;
              if (((bitField0_ & 0x00000001) == 0x00000001)) {
                subBuilder = rotation_.toBuilder();
              }
              rotation_ = input.readMessage(Visionmodeldata.Quaternionf.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rotation_);
                rotation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000001;
              break;
            }
            case 18: {
              Visionmodeldata.Vector3f.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = translation_.toBuilder();
              }
              translation_ = input.readMessage(Visionmodeldata.Vector3f.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(translation_);
                translation_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Visionmodeldata.internal_static_com_example_tutorial_Affine3f_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Visionmodeldata.internal_static_com_example_tutorial_Affine3f_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Visionmodeldata.Affine3f.class, Visionmodeldata.Affine3f.Builder.class);
    }

    public static com.google.protobuf.Parser<Affine3f> PARSER =
        new com.google.protobuf.AbstractParser<Affine3f>() {
      public Affine3f parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Affine3f(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int ROTATION_FIELD_NUMBER = 1;
    private Visionmodeldata.Quaternionf rotation_;
    /**
     * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
     */
    public boolean hasRotation() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
     */
    public Visionmodeldata.Quaternionf getRotation() {
      return rotation_;
    }
    /**
     * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
     */
    public Visionmodeldata.QuaternionfOrBuilder getRotationOrBuilder() {
      return rotation_;
    }

    public static final int TRANSLATION_FIELD_NUMBER = 2;
    private Visionmodeldata.Vector3f translation_;
    /**
     * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
     */
    public boolean hasTranslation() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
     */
    public Visionmodeldata.Vector3f getTranslation() {
      return translation_;
    }
    /**
     * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
     */
    public Visionmodeldata.Vector3fOrBuilder getTranslationOrBuilder() {
      return translation_;
    }

    private void initFields() {
      rotation_ = Visionmodeldata.Quaternionf.getDefaultInstance();
      translation_ = Visionmodeldata.Vector3f.getDefaultInstance();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeMessage(1, rotation_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, translation_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, rotation_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, translation_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static Visionmodeldata.Affine3f parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.Affine3f parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.Affine3f parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.Affine3f parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.Affine3f parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.Affine3f parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.Affine3f parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static Visionmodeldata.Affine3f parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.Affine3f parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.Affine3f parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(Visionmodeldata.Affine3f prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.example.tutorial.Affine3f}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.example.tutorial.Affine3f)
        Visionmodeldata.Affine3fOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Visionmodeldata.internal_static_com_example_tutorial_Affine3f_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Visionmodeldata.internal_static_com_example_tutorial_Affine3f_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Visionmodeldata.Affine3f.class, Visionmodeldata.Affine3f.Builder.class);
      }

      // Construct using com.example.tutorial.Visionmodeldata.Affine3f.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getRotationFieldBuilder();
          getTranslationFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (rotationBuilder_ == null) {
          rotation_ = Visionmodeldata.Quaternionf.getDefaultInstance();
        } else {
          rotationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (translationBuilder_ == null) {
          translation_ = Visionmodeldata.Vector3f.getDefaultInstance();
        } else {
          translationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Visionmodeldata.internal_static_com_example_tutorial_Affine3f_descriptor;
      }

      public Visionmodeldata.Affine3f getDefaultInstanceForType() {
        return Visionmodeldata.Affine3f.getDefaultInstance();
      }

      public Visionmodeldata.Affine3f build() {
        Visionmodeldata.Affine3f result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public Visionmodeldata.Affine3f buildPartial() {
        Visionmodeldata.Affine3f result = new Visionmodeldata.Affine3f(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        if (rotationBuilder_ == null) {
          result.rotation_ = rotation_;
        } else {
          result.rotation_ = rotationBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (translationBuilder_ == null) {
          result.translation_ = translation_;
        } else {
          result.translation_ = translationBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Visionmodeldata.Affine3f) {
          return mergeFrom((Visionmodeldata.Affine3f)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Visionmodeldata.Affine3f other) {
        if (other == Visionmodeldata.Affine3f.getDefaultInstance()) return this;
        if (other.hasRotation()) {
          mergeRotation(other.getRotation());
        }
        if (other.hasTranslation()) {
          mergeTranslation(other.getTranslation());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Visionmodeldata.Affine3f parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (Visionmodeldata.Affine3f) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private Visionmodeldata.Quaternionf rotation_ = Visionmodeldata.Quaternionf.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          Quaternionf, Quaternionf.Builder, QuaternionfOrBuilder> rotationBuilder_;
      /**
       * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
       */
      public boolean hasRotation() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
       */
      public Visionmodeldata.Quaternionf getRotation() {
        if (rotationBuilder_ == null) {
          return rotation_;
        } else {
          return rotationBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
       */
      public Builder setRotation(Visionmodeldata.Quaternionf value) {
        if (rotationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rotation_ = value;
          onChanged();
        } else {
          rotationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
       */
      public Builder setRotation(
          Visionmodeldata.Quaternionf.Builder builderForValue) {
        if (rotationBuilder_ == null) {
          rotation_ = builderForValue.build();
          onChanged();
        } else {
          rotationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
       */
      public Builder mergeRotation(Visionmodeldata.Quaternionf value) {
        if (rotationBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001) &&
              rotation_ != Visionmodeldata.Quaternionf.getDefaultInstance()) {
            rotation_ =
              Visionmodeldata.Quaternionf.newBuilder(rotation_).mergeFrom(value).buildPartial();
          } else {
            rotation_ = value;
          }
          onChanged();
        } else {
          rotationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
       */
      public Builder clearRotation() {
        if (rotationBuilder_ == null) {
          rotation_ = Visionmodeldata.Quaternionf.getDefaultInstance();
          onChanged();
        } else {
          rotationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
       */
      public Visionmodeldata.Quaternionf.Builder getRotationBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getRotationFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
       */
      public Visionmodeldata.QuaternionfOrBuilder getRotationOrBuilder() {
        if (rotationBuilder_ != null) {
          return rotationBuilder_.getMessageOrBuilder();
        } else {
          return rotation_;
        }
      }
      /**
       * <code>optional .com.example.tutorial.Quaternionf rotation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          Quaternionf, Quaternionf.Builder, QuaternionfOrBuilder>
          getRotationFieldBuilder() {
        if (rotationBuilder_ == null) {
          rotationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              Quaternionf, Quaternionf.Builder, QuaternionfOrBuilder>(
                  getRotation(),
                  getParentForChildren(),
                  isClean());
          rotation_ = null;
        }
        return rotationBuilder_;
      }

      private Visionmodeldata.Vector3f translation_ = Visionmodeldata.Vector3f.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          Vector3f, Vector3f.Builder, Vector3fOrBuilder> translationBuilder_;
      /**
       * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
       */
      public boolean hasTranslation() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
       */
      public Visionmodeldata.Vector3f getTranslation() {
        if (translationBuilder_ == null) {
          return translation_;
        } else {
          return translationBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
       */
      public Builder setTranslation(Visionmodeldata.Vector3f value) {
        if (translationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          translation_ = value;
          onChanged();
        } else {
          translationBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
       */
      public Builder setTranslation(
          Visionmodeldata.Vector3f.Builder builderForValue) {
        if (translationBuilder_ == null) {
          translation_ = builderForValue.build();
          onChanged();
        } else {
          translationBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
       */
      public Builder mergeTranslation(Visionmodeldata.Vector3f value) {
        if (translationBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              translation_ != Visionmodeldata.Vector3f.getDefaultInstance()) {
            translation_ =
              Visionmodeldata.Vector3f.newBuilder(translation_).mergeFrom(value).buildPartial();
          } else {
            translation_ = value;
          }
          onChanged();
        } else {
          translationBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
       */
      public Builder clearTranslation() {
        if (translationBuilder_ == null) {
          translation_ = Visionmodeldata.Vector3f.getDefaultInstance();
          onChanged();
        } else {
          translationBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
       */
      public Visionmodeldata.Vector3f.Builder getTranslationBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getTranslationFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
       */
      public Visionmodeldata.Vector3fOrBuilder getTranslationOrBuilder() {
        if (translationBuilder_ != null) {
          return translationBuilder_.getMessageOrBuilder();
        } else {
          return translation_;
        }
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f translation = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilder<
          Vector3f, Vector3f.Builder, Vector3fOrBuilder>
          getTranslationFieldBuilder() {
        if (translationBuilder_ == null) {
          translationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              Vector3f, Vector3f.Builder, Vector3fOrBuilder>(
                  getTranslation(),
                  getParentForChildren(),
                  isClean());
          translation_ = null;
        }
        return translationBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:com.example.tutorial.Affine3f)
    }

    static {
      defaultInstance = new Affine3f(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:com.example.tutorial.Affine3f)
  }

  public interface QuaternionfOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.example.tutorial.Quaternionf)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional float w = 1;</code>
     */
    boolean hasW();
    /**
     * <code>optional float w = 1;</code>
     */
    float getW();

    /**
     * <code>optional float x = 2;</code>
     */
    boolean hasX();
    /**
     * <code>optional float x = 2;</code>
     */
    float getX();

    /**
     * <code>optional float y = 3;</code>
     */
    boolean hasY();
    /**
     * <code>optional float y = 3;</code>
     */
    float getY();

    /**
     * <code>optional float z = 4;</code>
     */
    boolean hasZ();
    /**
     * <code>optional float z = 4;</code>
     */
    float getZ();
  }
  /**
   * Protobuf type {@code com.example.tutorial.Quaternionf}
   */
  public static final class Quaternionf extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.example.tutorial.Quaternionf)
      QuaternionfOrBuilder {
    // Use Quaternionf.newBuilder() to construct.
    private Quaternionf(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Quaternionf(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Quaternionf defaultInstance;
    public static Quaternionf getDefaultInstance() {
      return defaultInstance;
    }

    public Quaternionf getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Quaternionf(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 13: {
              bitField0_ |= 0x00000001;
              w_ = input.readFloat();
              break;
            }
            case 21: {
              bitField0_ |= 0x00000002;
              x_ = input.readFloat();
              break;
            }
            case 29: {
              bitField0_ |= 0x00000004;
              y_ = input.readFloat();
              break;
            }
            case 37: {
              bitField0_ |= 0x00000008;
              z_ = input.readFloat();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Visionmodeldata.internal_static_com_example_tutorial_Quaternionf_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Visionmodeldata.internal_static_com_example_tutorial_Quaternionf_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Visionmodeldata.Quaternionf.class, Visionmodeldata.Quaternionf.Builder.class);
    }

    public static com.google.protobuf.Parser<Quaternionf> PARSER =
        new com.google.protobuf.AbstractParser<Quaternionf>() {
      public Quaternionf parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Quaternionf(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int W_FIELD_NUMBER = 1;
    private float w_;
    /**
     * <code>optional float w = 1;</code>
     */
    public boolean hasW() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional float w = 1;</code>
     */
    public float getW() {
      return w_;
    }

    public static final int X_FIELD_NUMBER = 2;
    private float x_;
    /**
     * <code>optional float x = 2;</code>
     */
    public boolean hasX() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional float x = 2;</code>
     */
    public float getX() {
      return x_;
    }

    public static final int Y_FIELD_NUMBER = 3;
    private float y_;
    /**
     * <code>optional float y = 3;</code>
     */
    public boolean hasY() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional float y = 3;</code>
     */
    public float getY() {
      return y_;
    }

    public static final int Z_FIELD_NUMBER = 4;
    private float z_;
    /**
     * <code>optional float z = 4;</code>
     */
    public boolean hasZ() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional float z = 4;</code>
     */
    public float getZ() {
      return z_;
    }

    private void initFields() {
      w_ = 0F;
      x_ = 0F;
      y_ = 0F;
      z_ = 0F;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeFloat(1, w_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeFloat(2, x_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeFloat(3, y_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeFloat(4, z_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, w_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(2, x_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(3, y_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(4, z_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static Visionmodeldata.Quaternionf parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.Quaternionf parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.Quaternionf parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.Quaternionf parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.Quaternionf parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.Quaternionf parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.Quaternionf parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static Visionmodeldata.Quaternionf parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.Quaternionf parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.Quaternionf parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(Visionmodeldata.Quaternionf prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.example.tutorial.Quaternionf}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.example.tutorial.Quaternionf)
        Visionmodeldata.QuaternionfOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Visionmodeldata.internal_static_com_example_tutorial_Quaternionf_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Visionmodeldata.internal_static_com_example_tutorial_Quaternionf_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Visionmodeldata.Quaternionf.class, Visionmodeldata.Quaternionf.Builder.class);
      }

      // Construct using com.example.tutorial.Visionmodeldata.Quaternionf.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        w_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000001);
        x_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000002);
        y_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000004);
        z_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000008);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Visionmodeldata.internal_static_com_example_tutorial_Quaternionf_descriptor;
      }

      public Visionmodeldata.Quaternionf getDefaultInstanceForType() {
        return Visionmodeldata.Quaternionf.getDefaultInstance();
      }

      public Visionmodeldata.Quaternionf build() {
        Visionmodeldata.Quaternionf result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public Visionmodeldata.Quaternionf buildPartial() {
        Visionmodeldata.Quaternionf result = new Visionmodeldata.Quaternionf(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.w_ = w_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.x_ = x_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.y_ = y_;
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.z_ = z_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Visionmodeldata.Quaternionf) {
          return mergeFrom((Visionmodeldata.Quaternionf)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Visionmodeldata.Quaternionf other) {
        if (other == Visionmodeldata.Quaternionf.getDefaultInstance()) return this;
        if (other.hasW()) {
          setW(other.getW());
        }
        if (other.hasX()) {
          setX(other.getX());
        }
        if (other.hasY()) {
          setY(other.getY());
        }
        if (other.hasZ()) {
          setZ(other.getZ());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Visionmodeldata.Quaternionf parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (Visionmodeldata.Quaternionf) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private float w_ ;
      /**
       * <code>optional float w = 1;</code>
       */
      public boolean hasW() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional float w = 1;</code>
       */
      public float getW() {
        return w_;
      }
      /**
       * <code>optional float w = 1;</code>
       */
      public Builder setW(float value) {
        bitField0_ |= 0x00000001;
        w_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float w = 1;</code>
       */
      public Builder clearW() {
        bitField0_ = (bitField0_ & ~0x00000001);
        w_ = 0F;
        onChanged();
        return this;
      }

      private float x_ ;
      /**
       * <code>optional float x = 2;</code>
       */
      public boolean hasX() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional float x = 2;</code>
       */
      public float getX() {
        return x_;
      }
      /**
       * <code>optional float x = 2;</code>
       */
      public Builder setX(float value) {
        bitField0_ |= 0x00000002;
        x_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float x = 2;</code>
       */
      public Builder clearX() {
        bitField0_ = (bitField0_ & ~0x00000002);
        x_ = 0F;
        onChanged();
        return this;
      }

      private float y_ ;
      /**
       * <code>optional float y = 3;</code>
       */
      public boolean hasY() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional float y = 3;</code>
       */
      public float getY() {
        return y_;
      }
      /**
       * <code>optional float y = 3;</code>
       */
      public Builder setY(float value) {
        bitField0_ |= 0x00000004;
        y_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float y = 3;</code>
       */
      public Builder clearY() {
        bitField0_ = (bitField0_ & ~0x00000004);
        y_ = 0F;
        onChanged();
        return this;
      }

      private float z_ ;
      /**
       * <code>optional float z = 4;</code>
       */
      public boolean hasZ() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional float z = 4;</code>
       */
      public float getZ() {
        return z_;
      }
      /**
       * <code>optional float z = 4;</code>
       */
      public Builder setZ(float value) {
        bitField0_ |= 0x00000008;
        z_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float z = 4;</code>
       */
      public Builder clearZ() {
        bitField0_ = (bitField0_ & ~0x00000008);
        z_ = 0F;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.example.tutorial.Quaternionf)
    }

    static {
      defaultInstance = new Quaternionf(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:com.example.tutorial.Quaternionf)
  }

  public interface Vector3fOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.example.tutorial.Vector3f)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional float x = 1;</code>
     */
    boolean hasX();
    /**
     * <code>optional float x = 1;</code>
     */
    float getX();

    /**
     * <code>optional float y = 2;</code>
     */
    boolean hasY();
    /**
     * <code>optional float y = 2;</code>
     */
    float getY();

    /**
     * <code>optional float z = 3;</code>
     */
    boolean hasZ();
    /**
     * <code>optional float z = 3;</code>
     */
    float getZ();
  }
  /**
   * Protobuf type {@code com.example.tutorial.Vector3f}
   */
  public static final class Vector3f extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.example.tutorial.Vector3f)
      Vector3fOrBuilder {
    // Use Vector3f.newBuilder() to construct.
    private Vector3f(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private Vector3f(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final Vector3f defaultInstance;
    public static Vector3f getDefaultInstance() {
      return defaultInstance;
    }

    public Vector3f getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private Vector3f(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 13: {
              bitField0_ |= 0x00000001;
              x_ = input.readFloat();
              break;
            }
            case 21: {
              bitField0_ |= 0x00000002;
              y_ = input.readFloat();
              break;
            }
            case 29: {
              bitField0_ |= 0x00000004;
              z_ = input.readFloat();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Visionmodeldata.internal_static_com_example_tutorial_Vector3f_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Visionmodeldata.internal_static_com_example_tutorial_Vector3f_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Visionmodeldata.Vector3f.class, Visionmodeldata.Vector3f.Builder.class);
    }

    public static com.google.protobuf.Parser<Vector3f> PARSER =
        new com.google.protobuf.AbstractParser<Vector3f>() {
      public Vector3f parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Vector3f(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int X_FIELD_NUMBER = 1;
    private float x_;
    /**
     * <code>optional float x = 1;</code>
     */
    public boolean hasX() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional float x = 1;</code>
     */
    public float getX() {
      return x_;
    }

    public static final int Y_FIELD_NUMBER = 2;
    private float y_;
    /**
     * <code>optional float y = 2;</code>
     */
    public boolean hasY() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional float y = 2;</code>
     */
    public float getY() {
      return y_;
    }

    public static final int Z_FIELD_NUMBER = 3;
    private float z_;
    /**
     * <code>optional float z = 3;</code>
     */
    public boolean hasZ() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional float z = 3;</code>
     */
    public float getZ() {
      return z_;
    }

    private void initFields() {
      x_ = 0F;
      y_ = 0F;
      z_ = 0F;
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeFloat(1, x_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeFloat(2, y_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeFloat(3, z_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, x_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(2, y_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(3, z_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static Visionmodeldata.Vector3f parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.Vector3f parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.Vector3f parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.Vector3f parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.Vector3f parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.Vector3f parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.Vector3f parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static Visionmodeldata.Vector3f parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.Vector3f parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.Vector3f parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(Visionmodeldata.Vector3f prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.example.tutorial.Vector3f}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.example.tutorial.Vector3f)
        Visionmodeldata.Vector3fOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Visionmodeldata.internal_static_com_example_tutorial_Vector3f_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Visionmodeldata.internal_static_com_example_tutorial_Vector3f_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Visionmodeldata.Vector3f.class, Visionmodeldata.Vector3f.Builder.class);
      }

      // Construct using com.example.tutorial.Visionmodeldata.Vector3f.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        x_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000001);
        y_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000002);
        z_ = 0F;
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Visionmodeldata.internal_static_com_example_tutorial_Vector3f_descriptor;
      }

      public Visionmodeldata.Vector3f getDefaultInstanceForType() {
        return Visionmodeldata.Vector3f.getDefaultInstance();
      }

      public Visionmodeldata.Vector3f build() {
        Visionmodeldata.Vector3f result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public Visionmodeldata.Vector3f buildPartial() {
        Visionmodeldata.Vector3f result = new Visionmodeldata.Vector3f(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.x_ = x_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        result.y_ = y_;
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        result.z_ = z_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Visionmodeldata.Vector3f) {
          return mergeFrom((Visionmodeldata.Vector3f)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Visionmodeldata.Vector3f other) {
        if (other == Visionmodeldata.Vector3f.getDefaultInstance()) return this;
        if (other.hasX()) {
          setX(other.getX());
        }
        if (other.hasY()) {
          setY(other.getY());
        }
        if (other.hasZ()) {
          setZ(other.getZ());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Visionmodeldata.Vector3f parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (Visionmodeldata.Vector3f) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private float x_ ;
      /**
       * <code>optional float x = 1;</code>
       */
      public boolean hasX() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional float x = 1;</code>
       */
      public float getX() {
        return x_;
      }
      /**
       * <code>optional float x = 1;</code>
       */
      public Builder setX(float value) {
        bitField0_ |= 0x00000001;
        x_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float x = 1;</code>
       */
      public Builder clearX() {
        bitField0_ = (bitField0_ & ~0x00000001);
        x_ = 0F;
        onChanged();
        return this;
      }

      private float y_ ;
      /**
       * <code>optional float y = 2;</code>
       */
      public boolean hasY() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional float y = 2;</code>
       */
      public float getY() {
        return y_;
      }
      /**
       * <code>optional float y = 2;</code>
       */
      public Builder setY(float value) {
        bitField0_ |= 0x00000002;
        y_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float y = 2;</code>
       */
      public Builder clearY() {
        bitField0_ = (bitField0_ & ~0x00000002);
        y_ = 0F;
        onChanged();
        return this;
      }

      private float z_ ;
      /**
       * <code>optional float z = 3;</code>
       */
      public boolean hasZ() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional float z = 3;</code>
       */
      public float getZ() {
        return z_;
      }
      /**
       * <code>optional float z = 3;</code>
       */
      public Builder setZ(float value) {
        bitField0_ |= 0x00000004;
        z_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional float z = 3;</code>
       */
      public Builder clearZ() {
        bitField0_ = (bitField0_ & ~0x00000004);
        z_ = 0F;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.example.tutorial.Vector3f)
    }

    static {
      defaultInstance = new Vector3f(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:com.example.tutorial.Vector3f)
  }

  public interface SweepLocationOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.example.tutorial.SweepLocation)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>optional bytes uuid = 1;</code>
     *
     * <pre>
     * uuid
     * </pre>
     */
    boolean hasUuid();
    /**
     * <code>optional bytes uuid = 1;</code>
     *
     * <pre>
     * uuid
     * </pre>
     */
    com.google.protobuf.ByteString getUuid();

    /**
     * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
     *
     * <pre>
     * camera pose (x, y,z) in meter and a quaternion
     * </pre>
     */
    boolean hasPose();
    /**
     * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
     *
     * <pre>
     * camera pose (x, y,z) in meter and a quaternion
     * </pre>
     */
    Visionmodeldata.Affine3f getPose();
    /**
     * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
     *
     * <pre>
     * camera pose (x, y,z) in meter and a quaternion
     * </pre>
     */
    Visionmodeldata.Affine3fOrBuilder getPoseOrBuilder();

    /**
     * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
     *
     * <pre>
     * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
     * </pre>
     */
    boolean hasPuck();
    /**
     * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
     *
     * <pre>
     * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
     * </pre>
     */
    Visionmodeldata.Vector3f getPuck();
    /**
     * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
     *
     * <pre>
     * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
     * </pre>
     */
    Visionmodeldata.Vector3fOrBuilder getPuckOrBuilder();

    /**
     * <code>optional int32 group = 4;</code>
     *
     * <pre>
     * floor index
     * </pre>
     */
    boolean hasGroup();
    /**
     * <code>optional int32 group = 4;</code>
     *
     * <pre>
     * floor index
     * </pre>
     */
    int getGroup();

    /**
     * <code>optional int32 subgroup = 5;</code>
     *
     * <pre>
     * room index
     * </pre>
     */
    boolean hasSubgroup();
    /**
     * <code>optional int32 subgroup = 5;</code>
     *
     * <pre>
     * room index
     * </pre>
     */
    int getSubgroup();

    /**
     * <code>repeated int32 visibles = 6;</code>
     *
     * <pre>
     * list of indices to all pucks visible from this puck
     * </pre>
     */
    java.util.List<Integer> getVisiblesList();
    /**
     * <code>repeated int32 visibles = 6;</code>
     *
     * <pre>
     * list of indices to all pucks visible from this puck
     * </pre>
     */
    int getVisiblesCount();
    /**
     * <code>repeated int32 visibles = 6;</code>
     *
     * <pre>
     * list of indices to all pucks visible from this puck
     * </pre>
     */
    int getVisibles(int index);

    /**
     * <code>repeated int32 visibles2 = 7;</code>
     */
    java.util.List<Integer> getVisibles2List();
    /**
     * <code>repeated int32 visibles2 = 7;</code>
     */
    int getVisibles2Count();
    /**
     * <code>repeated int32 visibles2 = 7;</code>
     */
    int getVisibles2(int index);

    /**
     * <code>repeated int32 visibles3 = 8;</code>
     */
    java.util.List<Integer> getVisibles3List();
    /**
     * <code>repeated int32 visibles3 = 8;</code>
     */
    int getVisibles3Count();
    /**
     * <code>repeated int32 visibles3 = 8;</code>
     */
    int getVisibles3(int index);
  }
  /**
   * Protobuf type {@code com.example.tutorial.SweepLocation}
   *
   * <pre>
   * One sweep / pano
   * </pre>
   */
  public static final class SweepLocation extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.example.tutorial.SweepLocation)
      SweepLocationOrBuilder {
    // Use SweepLocation.newBuilder() to construct.
    private SweepLocation(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private SweepLocation(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final SweepLocation defaultInstance;
    public static SweepLocation getDefaultInstance() {
      return defaultInstance;
    }

    public SweepLocation getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private SweepLocation(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              bitField0_ |= 0x00000001;
              uuid_ = input.readBytes();
              break;
            }
            case 18: {
              Visionmodeldata.Affine3f.Builder subBuilder = null;
              if (((bitField0_ & 0x00000002) == 0x00000002)) {
                subBuilder = pose_.toBuilder();
              }
              pose_ = input.readMessage(Visionmodeldata.Affine3f.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(pose_);
                pose_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000002;
              break;
            }
            case 26: {
              Visionmodeldata.Vector3f.Builder subBuilder = null;
              if (((bitField0_ & 0x00000004) == 0x00000004)) {
                subBuilder = puck_.toBuilder();
              }
              puck_ = input.readMessage(Visionmodeldata.Vector3f.PARSER, extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(puck_);
                puck_ = subBuilder.buildPartial();
              }
              bitField0_ |= 0x00000004;
              break;
            }
            case 32: {
              bitField0_ |= 0x00000008;
              group_ = input.readInt32();
              break;
            }
            case 40: {
              bitField0_ |= 0x00000010;
              subgroup_ = input.readInt32();
              break;
            }
            case 48: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                visibles_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              visibles_.add(input.readInt32());
              break;
            }
            case 50: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                visibles_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000020;
              }
              while (input.getBytesUntilLimit() > 0) {
                visibles_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 56: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                visibles2_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000040;
              }
              visibles2_.add(input.readInt32());
              break;
            }
            case 58: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                visibles2_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000040;
              }
              while (input.getBytesUntilLimit() > 0) {
                visibles2_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 64: {
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
                visibles3_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000080;
              }
              visibles3_.add(input.readInt32());
              break;
            }
            case 66: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000080) == 0x00000080) && input.getBytesUntilLimit() > 0) {
                visibles3_ = new java.util.ArrayList<Integer>();
                mutable_bitField0_ |= 0x00000080;
              }
              while (input.getBytesUntilLimit() > 0) {
                visibles3_.add(input.readInt32());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          visibles_ = java.util.Collections.unmodifiableList(visibles_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          visibles2_ = java.util.Collections.unmodifiableList(visibles2_);
        }
        if (((mutable_bitField0_ & 0x00000080) == 0x00000080)) {
          visibles3_ = java.util.Collections.unmodifiableList(visibles3_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Visionmodeldata.internal_static_com_example_tutorial_SweepLocation_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Visionmodeldata.internal_static_com_example_tutorial_SweepLocation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Visionmodeldata.SweepLocation.class, Visionmodeldata.SweepLocation.Builder.class);
    }

    public static com.google.protobuf.Parser<SweepLocation> PARSER =
        new com.google.protobuf.AbstractParser<SweepLocation>() {
      public SweepLocation parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SweepLocation(input, extensionRegistry);
      }
    };

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

    private int bitField0_;
    public static final int UUID_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString uuid_;
    /**
     * <code>optional bytes uuid = 1;</code>
     *
     * <pre>
     * uuid
     * </pre>
     */
    public boolean hasUuid() {
      return ((bitField0_ & 0x00000001) == 0x00000001);
    }
    /**
     * <code>optional bytes uuid = 1;</code>
     *
     * <pre>
     * uuid
     * </pre>
     */
    public com.google.protobuf.ByteString getUuid() {
      return uuid_;
    }

    public static final int POSE_FIELD_NUMBER = 2;
    private Visionmodeldata.Affine3f pose_;
    /**
     * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
     *
     * <pre>
     * camera pose (x, y,z) in meter and a quaternion
     * </pre>
     */
    public boolean hasPose() {
      return ((bitField0_ & 0x00000002) == 0x00000002);
    }
    /**
     * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
     *
     * <pre>
     * camera pose (x, y,z) in meter and a quaternion
     * </pre>
     */
    public Visionmodeldata.Affine3f getPose() {
      return pose_;
    }
    /**
     * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
     *
     * <pre>
     * camera pose (x, y,z) in meter and a quaternion
     * </pre>
     */
    public Visionmodeldata.Affine3fOrBuilder getPoseOrBuilder() {
      return pose_;
    }

    public static final int PUCK_FIELD_NUMBER = 3;
    private Visionmodeldata.Vector3f puck_;
    /**
     * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
     *
     * <pre>
     * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
     * </pre>
     */
    public boolean hasPuck() {
      return ((bitField0_ & 0x00000004) == 0x00000004);
    }
    /**
     * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
     *
     * <pre>
     * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
     * </pre>
     */
    public Visionmodeldata.Vector3f getPuck() {
      return puck_;
    }
    /**
     * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
     *
     * <pre>
     * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
     * </pre>
     */
    public Visionmodeldata.Vector3fOrBuilder getPuckOrBuilder() {
      return puck_;
    }

    public static final int GROUP_FIELD_NUMBER = 4;
    private int group_;
    /**
     * <code>optional int32 group = 4;</code>
     *
     * <pre>
     * floor index
     * </pre>
     */
    public boolean hasGroup() {
      return ((bitField0_ & 0x00000008) == 0x00000008);
    }
    /**
     * <code>optional int32 group = 4;</code>
     *
     * <pre>
     * floor index
     * </pre>
     */
    public int getGroup() {
      return group_;
    }

    public static final int SUBGROUP_FIELD_NUMBER = 5;
    private int subgroup_;
    /**
     * <code>optional int32 subgroup = 5;</code>
     *
     * <pre>
     * room index
     * </pre>
     */
    public boolean hasSubgroup() {
      return ((bitField0_ & 0x00000010) == 0x00000010);
    }
    /**
     * <code>optional int32 subgroup = 5;</code>
     *
     * <pre>
     * room index
     * </pre>
     */
    public int getSubgroup() {
      return subgroup_;
    }

    public static final int VISIBLES_FIELD_NUMBER = 6;
    private java.util.List<Integer> visibles_;
    /**
     * <code>repeated int32 visibles = 6;</code>
     *
     * <pre>
     * list of indices to all pucks visible from this puck
     * </pre>
     */
    public java.util.List<Integer>
        getVisiblesList() {
      return visibles_;
    }
    /**
     * <code>repeated int32 visibles = 6;</code>
     *
     * <pre>
     * list of indices to all pucks visible from this puck
     * </pre>
     */
    public int getVisiblesCount() {
      return visibles_.size();
    }
    /**
     * <code>repeated int32 visibles = 6;</code>
     *
     * <pre>
     * list of indices to all pucks visible from this puck
     * </pre>
     */
    public int getVisibles(int index) {
      return visibles_.get(index);
    }

    public static final int VISIBLES2_FIELD_NUMBER = 7;
    private java.util.List<Integer> visibles2_;
    /**
     * <code>repeated int32 visibles2 = 7;</code>
     */
    public java.util.List<Integer>
        getVisibles2List() {
      return visibles2_;
    }
    /**
     * <code>repeated int32 visibles2 = 7;</code>
     */
    public int getVisibles2Count() {
      return visibles2_.size();
    }
    /**
     * <code>repeated int32 visibles2 = 7;</code>
     */
    public int getVisibles2(int index) {
      return visibles2_.get(index);
    }

    public static final int VISIBLES3_FIELD_NUMBER = 8;
    private java.util.List<Integer> visibles3_;
    /**
     * <code>repeated int32 visibles3 = 8;</code>
     */
    public java.util.List<Integer>
        getVisibles3List() {
      return visibles3_;
    }
    /**
     * <code>repeated int32 visibles3 = 8;</code>
     */
    public int getVisibles3Count() {
      return visibles3_.size();
    }
    /**
     * <code>repeated int32 visibles3 = 8;</code>
     */
    public int getVisibles3(int index) {
      return visibles3_.get(index);
    }

    private void initFields() {
      uuid_ = com.google.protobuf.ByteString.EMPTY;
      pose_ = Visionmodeldata.Affine3f.getDefaultInstance();
      puck_ = Visionmodeldata.Vector3f.getDefaultInstance();
      group_ = 0;
      subgroup_ = 0;
      visibles_ = java.util.Collections.emptyList();
      visibles2_ = java.util.Collections.emptyList();
      visibles3_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeBytes(1, uuid_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeMessage(2, pose_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeMessage(3, puck_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, group_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeInt32(5, subgroup_);
      }
      for (int i = 0; i < visibles_.size(); i++) {
        output.writeInt32(6, visibles_.get(i));
      }
      for (int i = 0; i < visibles2_.size(); i++) {
        output.writeInt32(7, visibles2_.get(i));
      }
      for (int i = 0; i < visibles3_.size(); i++) {
        output.writeInt32(8, visibles3_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(1, uuid_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, pose_);
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, puck_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, group_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, subgroup_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < visibles_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(visibles_.get(i));
        }
        size += dataSize;
        size += 1 * getVisiblesList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < visibles2_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(visibles2_.get(i));
        }
        size += dataSize;
        size += 1 * getVisibles2List().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < visibles3_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(visibles3_.get(i));
        }
        size += dataSize;
        size += 1 * getVisibles3List().size();
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static Visionmodeldata.SweepLocation parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.SweepLocation parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.SweepLocation parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.SweepLocation parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.SweepLocation parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.SweepLocation parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.SweepLocation parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static Visionmodeldata.SweepLocation parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.SweepLocation parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.SweepLocation parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(Visionmodeldata.SweepLocation prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.example.tutorial.SweepLocation}
     *
     * <pre>
     * One sweep / pano
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.example.tutorial.SweepLocation)
        Visionmodeldata.SweepLocationOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Visionmodeldata.internal_static_com_example_tutorial_SweepLocation_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Visionmodeldata.internal_static_com_example_tutorial_SweepLocation_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Visionmodeldata.SweepLocation.class, Visionmodeldata.SweepLocation.Builder.class);
      }

      // Construct using com.example.tutorial.Visionmodeldata.SweepLocation.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getPoseFieldBuilder();
          getPuckFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        uuid_ = com.google.protobuf.ByteString.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        if (poseBuilder_ == null) {
          pose_ = Visionmodeldata.Affine3f.getDefaultInstance();
        } else {
          poseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (puckBuilder_ == null) {
          puck_ = Visionmodeldata.Vector3f.getDefaultInstance();
        } else {
          puckBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        group_ = 0;
        bitField0_ = (bitField0_ & ~0x00000008);
        subgroup_ = 0;
        bitField0_ = (bitField0_ & ~0x00000010);
        visibles_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        visibles2_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        visibles3_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Visionmodeldata.internal_static_com_example_tutorial_SweepLocation_descriptor;
      }

      public Visionmodeldata.SweepLocation getDefaultInstanceForType() {
        return Visionmodeldata.SweepLocation.getDefaultInstance();
      }

      public Visionmodeldata.SweepLocation build() {
        Visionmodeldata.SweepLocation result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public Visionmodeldata.SweepLocation buildPartial() {
        Visionmodeldata.SweepLocation result = new Visionmodeldata.SweepLocation(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
          to_bitField0_ |= 0x00000001;
        }
        result.uuid_ = uuid_;
        if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
          to_bitField0_ |= 0x00000002;
        }
        if (poseBuilder_ == null) {
          result.pose_ = pose_;
        } else {
          result.pose_ = poseBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
          to_bitField0_ |= 0x00000004;
        }
        if (puckBuilder_ == null) {
          result.puck_ = puck_;
        } else {
          result.puck_ = puckBuilder_.build();
        }
        if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
          to_bitField0_ |= 0x00000008;
        }
        result.group_ = group_;
        if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
          to_bitField0_ |= 0x00000010;
        }
        result.subgroup_ = subgroup_;
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          visibles_ = java.util.Collections.unmodifiableList(visibles_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.visibles_ = visibles_;
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          visibles2_ = java.util.Collections.unmodifiableList(visibles2_);
          bitField0_ = (bitField0_ & ~0x00000040);
        }
        result.visibles2_ = visibles2_;
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          visibles3_ = java.util.Collections.unmodifiableList(visibles3_);
          bitField0_ = (bitField0_ & ~0x00000080);
        }
        result.visibles3_ = visibles3_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Visionmodeldata.SweepLocation) {
          return mergeFrom((Visionmodeldata.SweepLocation)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Visionmodeldata.SweepLocation other) {
        if (other == Visionmodeldata.SweepLocation.getDefaultInstance()) return this;
        if (other.hasUuid()) {
          setUuid(other.getUuid());
        }
        if (other.hasPose()) {
          mergePose(other.getPose());
        }
        if (other.hasPuck()) {
          mergePuck(other.getPuck());
        }
        if (other.hasGroup()) {
          setGroup(other.getGroup());
        }
        if (other.hasSubgroup()) {
          setSubgroup(other.getSubgroup());
        }
        if (!other.visibles_.isEmpty()) {
          if (visibles_.isEmpty()) {
            visibles_ = other.visibles_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureVisiblesIsMutable();
            visibles_.addAll(other.visibles_);
          }
          onChanged();
        }
        if (!other.visibles2_.isEmpty()) {
          if (visibles2_.isEmpty()) {
            visibles2_ = other.visibles2_;
            bitField0_ = (bitField0_ & ~0x00000040);
          } else {
            ensureVisibles2IsMutable();
            visibles2_.addAll(other.visibles2_);
          }
          onChanged();
        }
        if (!other.visibles3_.isEmpty()) {
          if (visibles3_.isEmpty()) {
            visibles3_ = other.visibles3_;
            bitField0_ = (bitField0_ & ~0x00000080);
          } else {
            ensureVisibles3IsMutable();
            visibles3_.addAll(other.visibles3_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Visionmodeldata.SweepLocation parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (Visionmodeldata.SweepLocation) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.ByteString uuid_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <code>optional bytes uuid = 1;</code>
       *
       * <pre>
       * uuid
       * </pre>
       */
      public boolean hasUuid() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional bytes uuid = 1;</code>
       *
       * <pre>
       * uuid
       * </pre>
       */
      public com.google.protobuf.ByteString getUuid() {
        return uuid_;
      }
      /**
       * <code>optional bytes uuid = 1;</code>
       *
       * <pre>
       * uuid
       * </pre>
       */
      public Builder setUuid(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  bitField0_ |= 0x00000001;
        uuid_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional bytes uuid = 1;</code>
       *
       * <pre>
       * uuid
       * </pre>
       */
      public Builder clearUuid() {
        bitField0_ = (bitField0_ & ~0x00000001);
        uuid_ = getDefaultInstance().getUuid();
        onChanged();
        return this;
      }

      private Visionmodeldata.Affine3f pose_ = Visionmodeldata.Affine3f.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          Affine3f, Affine3f.Builder, Affine3fOrBuilder> poseBuilder_;
      /**
       * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
       *
       * <pre>
       * camera pose (x, y,z) in meter and a quaternion
       * </pre>
       */
      public boolean hasPose() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
       *
       * <pre>
       * camera pose (x, y,z) in meter and a quaternion
       * </pre>
       */
      public Visionmodeldata.Affine3f getPose() {
        if (poseBuilder_ == null) {
          return pose_;
        } else {
          return poseBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
       *
       * <pre>
       * camera pose (x, y,z) in meter and a quaternion
       * </pre>
       */
      public Builder setPose(Visionmodeldata.Affine3f value) {
        if (poseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          pose_ = value;
          onChanged();
        } else {
          poseBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
       *
       * <pre>
       * camera pose (x, y,z) in meter and a quaternion
       * </pre>
       */
      public Builder setPose(
          Visionmodeldata.Affine3f.Builder builderForValue) {
        if (poseBuilder_ == null) {
          pose_ = builderForValue.build();
          onChanged();
        } else {
          poseBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
       *
       * <pre>
       * camera pose (x, y,z) in meter and a quaternion
       * </pre>
       */
      public Builder mergePose(Visionmodeldata.Affine3f value) {
        if (poseBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002) &&
              pose_ != Visionmodeldata.Affine3f.getDefaultInstance()) {
            pose_ =
              Visionmodeldata.Affine3f.newBuilder(pose_).mergeFrom(value).buildPartial();
          } else {
            pose_ = value;
          }
          onChanged();
        } else {
          poseBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
       *
       * <pre>
       * camera pose (x, y,z) in meter and a quaternion
       * </pre>
       */
      public Builder clearPose() {
        if (poseBuilder_ == null) {
          pose_ = Visionmodeldata.Affine3f.getDefaultInstance();
          onChanged();
        } else {
          poseBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
       *
       * <pre>
       * camera pose (x, y,z) in meter and a quaternion
       * </pre>
       */
      public Visionmodeldata.Affine3f.Builder getPoseBuilder() {
        bitField0_ |= 0x00000002;
        onChanged();
        return getPoseFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
       *
       * <pre>
       * camera pose (x, y,z) in meter and a quaternion
       * </pre>
       */
      public Visionmodeldata.Affine3fOrBuilder getPoseOrBuilder() {
        if (poseBuilder_ != null) {
          return poseBuilder_.getMessageOrBuilder();
        } else {
          return pose_;
        }
      }
      /**
       * <code>optional .com.example.tutorial.Affine3f pose = 2;</code>
       *
       * <pre>
       * camera pose (x, y,z) in meter and a quaternion
       * </pre>
       */
      private com.google.protobuf.SingleFieldBuilder<
          Affine3f, Affine3f.Builder, Affine3fOrBuilder>
          getPoseFieldBuilder() {
        if (poseBuilder_ == null) {
          poseBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              Affine3f, Affine3f.Builder, Affine3fOrBuilder>(
                  getPose(),
                  getParentForChildren(),
                  isClean());
          pose_ = null;
        }
        return poseBuilder_;
      }

      private Visionmodeldata.Vector3f puck_ = Visionmodeldata.Vector3f.getDefaultInstance();
      private com.google.protobuf.SingleFieldBuilder<
          Vector3f, Vector3f.Builder, Vector3fOrBuilder> puckBuilder_;
      /**
       * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
       *
       * <pre>
       * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
       * </pre>
       */
      public boolean hasPuck() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
       *
       * <pre>
       * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
       * </pre>
       */
      public Visionmodeldata.Vector3f getPuck() {
        if (puckBuilder_ == null) {
          return puck_;
        } else {
          return puckBuilder_.getMessage();
        }
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
       *
       * <pre>
       * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
       * </pre>
       */
      public Builder setPuck(Visionmodeldata.Vector3f value) {
        if (puckBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          puck_ = value;
          onChanged();
        } else {
          puckBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
       *
       * <pre>
       * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
       * </pre>
       */
      public Builder setPuck(
          Visionmodeldata.Vector3f.Builder builderForValue) {
        if (puckBuilder_ == null) {
          puck_ = builderForValue.build();
          onChanged();
        } else {
          puckBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
       *
       * <pre>
       * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
       * </pre>
       */
      public Builder mergePuck(Visionmodeldata.Vector3f value) {
        if (puckBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004) &&
              puck_ != Visionmodeldata.Vector3f.getDefaultInstance()) {
            puck_ =
              Visionmodeldata.Vector3f.newBuilder(puck_).mergeFrom(value).buildPartial();
          } else {
            puck_ = value;
          }
          onChanged();
        } else {
          puckBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000004;
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
       *
       * <pre>
       * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
       * </pre>
       */
      public Builder clearPuck() {
        if (puckBuilder_ == null) {
          puck_ = Visionmodeldata.Vector3f.getDefaultInstance();
          onChanged();
        } else {
          puckBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
       *
       * <pre>
       * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
       * </pre>
       */
      public Visionmodeldata.Vector3f.Builder getPuckBuilder() {
        bitField0_ |= 0x00000004;
        onChanged();
        return getPuckFieldBuilder().getBuilder();
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
       *
       * <pre>
       * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
       * </pre>
       */
      public Visionmodeldata.Vector3fOrBuilder getPuckOrBuilder() {
        if (puckBuilder_ != null) {
          return puckBuilder_.getMessageOrBuilder();
        } else {
          return puck_;
        }
      }
      /**
       * <code>optional .com.example.tutorial.Vector3f puck = 3;</code>
       *
       * <pre>
       * puck location - x any is generally the same as pose, z is the height of the closest floor under the camera
       * </pre>
       */
      private com.google.protobuf.SingleFieldBuilder<
          Vector3f, Vector3f.Builder, Vector3fOrBuilder>
          getPuckFieldBuilder() {
        if (puckBuilder_ == null) {
          puckBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              Vector3f, Vector3f.Builder, Vector3fOrBuilder>(
                  getPuck(),
                  getParentForChildren(),
                  isClean());
          puck_ = null;
        }
        return puckBuilder_;
      }

      private int group_ ;
      /**
       * <code>optional int32 group = 4;</code>
       *
       * <pre>
       * floor index
       * </pre>
       */
      public boolean hasGroup() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional int32 group = 4;</code>
       *
       * <pre>
       * floor index
       * </pre>
       */
      public int getGroup() {
        return group_;
      }
      /**
       * <code>optional int32 group = 4;</code>
       *
       * <pre>
       * floor index
       * </pre>
       */
      public Builder setGroup(int value) {
        bitField0_ |= 0x00000008;
        group_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 group = 4;</code>
       *
       * <pre>
       * floor index
       * </pre>
       */
      public Builder clearGroup() {
        bitField0_ = (bitField0_ & ~0x00000008);
        group_ = 0;
        onChanged();
        return this;
      }

      private int subgroup_ ;
      /**
       * <code>optional int32 subgroup = 5;</code>
       *
       * <pre>
       * room index
       * </pre>
       */
      public boolean hasSubgroup() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional int32 subgroup = 5;</code>
       *
       * <pre>
       * room index
       * </pre>
       */
      public int getSubgroup() {
        return subgroup_;
      }
      /**
       * <code>optional int32 subgroup = 5;</code>
       *
       * <pre>
       * room index
       * </pre>
       */
      public Builder setSubgroup(int value) {
        bitField0_ |= 0x00000010;
        subgroup_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>optional int32 subgroup = 5;</code>
       *
       * <pre>
       * room index
       * </pre>
       */
      public Builder clearSubgroup() {
        bitField0_ = (bitField0_ & ~0x00000010);
        subgroup_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<Integer> visibles_ = java.util.Collections.emptyList();
      private void ensureVisiblesIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          visibles_ = new java.util.ArrayList<Integer>(visibles_);
          bitField0_ |= 0x00000020;
         }
      }
      /**
       * <code>repeated int32 visibles = 6;</code>
       *
       * <pre>
       * list of indices to all pucks visible from this puck
       * </pre>
       */
      public java.util.List<Integer>
          getVisiblesList() {
        return java.util.Collections.unmodifiableList(visibles_);
      }
      /**
       * <code>repeated int32 visibles = 6;</code>
       *
       * <pre>
       * list of indices to all pucks visible from this puck
       * </pre>
       */
      public int getVisiblesCount() {
        return visibles_.size();
      }
      /**
       * <code>repeated int32 visibles = 6;</code>
       *
       * <pre>
       * list of indices to all pucks visible from this puck
       * </pre>
       */
      public int getVisibles(int index) {
        return visibles_.get(index);
      }
      /**
       * <code>repeated int32 visibles = 6;</code>
       *
       * <pre>
       * list of indices to all pucks visible from this puck
       * </pre>
       */
      public Builder setVisibles(
          int index, int value) {
        ensureVisiblesIsMutable();
        visibles_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 visibles = 6;</code>
       *
       * <pre>
       * list of indices to all pucks visible from this puck
       * </pre>
       */
      public Builder addVisibles(int value) {
        ensureVisiblesIsMutable();
        visibles_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 visibles = 6;</code>
       *
       * <pre>
       * list of indices to all pucks visible from this puck
       * </pre>
       */
      public Builder addAllVisibles(
          Iterable<? extends Integer> values) {
        ensureVisiblesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, visibles_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 visibles = 6;</code>
       *
       * <pre>
       * list of indices to all pucks visible from this puck
       * </pre>
       */
      public Builder clearVisibles() {
        visibles_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }

      private java.util.List<Integer> visibles2_ = java.util.Collections.emptyList();
      private void ensureVisibles2IsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          visibles2_ = new java.util.ArrayList<Integer>(visibles2_);
          bitField0_ |= 0x00000040;
         }
      }
      /**
       * <code>repeated int32 visibles2 = 7;</code>
       */
      public java.util.List<Integer>
          getVisibles2List() {
        return java.util.Collections.unmodifiableList(visibles2_);
      }
      /**
       * <code>repeated int32 visibles2 = 7;</code>
       */
      public int getVisibles2Count() {
        return visibles2_.size();
      }
      /**
       * <code>repeated int32 visibles2 = 7;</code>
       */
      public int getVisibles2(int index) {
        return visibles2_.get(index);
      }
      /**
       * <code>repeated int32 visibles2 = 7;</code>
       */
      public Builder setVisibles2(
          int index, int value) {
        ensureVisibles2IsMutable();
        visibles2_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 visibles2 = 7;</code>
       */
      public Builder addVisibles2(int value) {
        ensureVisibles2IsMutable();
        visibles2_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 visibles2 = 7;</code>
       */
      public Builder addAllVisibles2(
          Iterable<? extends Integer> values) {
        ensureVisibles2IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, visibles2_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 visibles2 = 7;</code>
       */
      public Builder clearVisibles2() {
        visibles2_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000040);
        onChanged();
        return this;
      }

      private java.util.List<Integer> visibles3_ = java.util.Collections.emptyList();
      private void ensureVisibles3IsMutable() {
        if (!((bitField0_ & 0x00000080) == 0x00000080)) {
          visibles3_ = new java.util.ArrayList<Integer>(visibles3_);
          bitField0_ |= 0x00000080;
         }
      }
      /**
       * <code>repeated int32 visibles3 = 8;</code>
       */
      public java.util.List<Integer>
          getVisibles3List() {
        return java.util.Collections.unmodifiableList(visibles3_);
      }
      /**
       * <code>repeated int32 visibles3 = 8;</code>
       */
      public int getVisibles3Count() {
        return visibles3_.size();
      }
      /**
       * <code>repeated int32 visibles3 = 8;</code>
       */
      public int getVisibles3(int index) {
        return visibles3_.get(index);
      }
      /**
       * <code>repeated int32 visibles3 = 8;</code>
       */
      public Builder setVisibles3(
          int index, int value) {
        ensureVisibles3IsMutable();
        visibles3_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 visibles3 = 8;</code>
       */
      public Builder addVisibles3(int value) {
        ensureVisibles3IsMutable();
        visibles3_.add(value);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 visibles3 = 8;</code>
       */
      public Builder addAllVisibles3(
          Iterable<? extends Integer> values) {
        ensureVisibles3IsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, visibles3_);
        onChanged();
        return this;
      }
      /**
       * <code>repeated int32 visibles3 = 8;</code>
       */
      public Builder clearVisibles3() {
        visibles3_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000080);
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.example.tutorial.SweepLocation)
    }

    static {
      defaultInstance = new SweepLocation(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:com.example.tutorial.SweepLocation)
  }

  public interface NavigationInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.example.tutorial.NavigationInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    java.util.List<SweepLocation>
        getSweepLocationsList();
    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    Visionmodeldata.SweepLocation getSweepLocations(int index);
    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    int getSweepLocationsCount();
    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    java.util.List<? extends SweepLocationOrBuilder>
        getSweepLocationsOrBuilderList();
    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    Visionmodeldata.SweepLocationOrBuilder getSweepLocationsOrBuilder(
            int index);
  }
  /**
   * Protobuf type {@code com.example.tutorial.NavigationInfo}
   *
   * <pre>
   * All pucks in a model. Pucks are stored in scanning order.
   * </pre>
   */
  public static final class NavigationInfo extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.example.tutorial.NavigationInfo)
      NavigationInfoOrBuilder {
    // Use NavigationInfo.newBuilder() to construct.
    private NavigationInfo(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
      super(builder);
      this.unknownFields = builder.getUnknownFields();
    }
    private NavigationInfo(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }

    private static final NavigationInfo defaultInstance;
    public static NavigationInfo getDefaultInstance() {
      return defaultInstance;
    }

    public NavigationInfo getDefaultInstanceForType() {
      return defaultInstance;
    }

    private final com.google.protobuf.UnknownFieldSet unknownFields;
    @Override
    public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
      return this.unknownFields;
    }
    private NavigationInfo(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      initFields();
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                sweepLocations_ = new java.util.ArrayList<SweepLocation>();
                mutable_bitField0_ |= 0x00000001;
              }
              sweepLocations_.add(input.readMessage(Visionmodeldata.SweepLocation.PARSER, extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e.getMessage()).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          sweepLocations_ = java.util.Collections.unmodifiableList(sweepLocations_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return Visionmodeldata.internal_static_com_example_tutorial_NavigationInfo_descriptor;
    }

    protected FieldAccessorTable
        internalGetFieldAccessorTable() {
      return Visionmodeldata.internal_static_com_example_tutorial_NavigationInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              Visionmodeldata.NavigationInfo.class, Visionmodeldata.NavigationInfo.Builder.class);
    }

    public static com.google.protobuf.Parser<NavigationInfo> PARSER =
        new com.google.protobuf.AbstractParser<NavigationInfo>() {
      public NavigationInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NavigationInfo(input, extensionRegistry);
      }
    };

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

    public static final int SWEEPLOCATIONS_FIELD_NUMBER = 1;
    private java.util.List<SweepLocation> sweepLocations_;
    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    public java.util.List<SweepLocation> getSweepLocationsList() {
      return sweepLocations_;
    }
    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    public java.util.List<? extends SweepLocationOrBuilder>
        getSweepLocationsOrBuilderList() {
      return sweepLocations_;
    }
    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    public int getSweepLocationsCount() {
      return sweepLocations_.size();
    }
    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    public Visionmodeldata.SweepLocation getSweepLocations(int index) {
      return sweepLocations_.get(index);
    }
    /**
     * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
     */
    public Visionmodeldata.SweepLocationOrBuilder getSweepLocationsOrBuilder(
        int index) {
      return sweepLocations_.get(index);
    }

    private void initFields() {
      sweepLocations_ = java.util.Collections.emptyList();
    }
    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (int i = 0; i < sweepLocations_.size(); i++) {
        output.writeMessage(1, sweepLocations_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < sweepLocations_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, sweepLocations_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @Override
    protected Object writeReplace()
        throws java.io.ObjectStreamException {
      return super.writeReplace();
    }

    public static Visionmodeldata.NavigationInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.NavigationInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.NavigationInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static Visionmodeldata.NavigationInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static Visionmodeldata.NavigationInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.NavigationInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.NavigationInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input);
    }
    public static Visionmodeldata.NavigationInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseDelimitedFrom(input, extensionRegistry);
    }
    public static Visionmodeldata.NavigationInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return PARSER.parseFrom(input);
    }
    public static Visionmodeldata.NavigationInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return PARSER.parseFrom(input, extensionRegistry);
    }

    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(Visionmodeldata.NavigationInfo prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }

    @Override
    protected Builder newBuilderForType(
        BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.example.tutorial.NavigationInfo}
     *
     * <pre>
     * All pucks in a model. Pucks are stored in scanning order.
     * </pre>
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:com.example.tutorial.NavigationInfo)
        Visionmodeldata.NavigationInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return Visionmodeldata.internal_static_com_example_tutorial_NavigationInfo_descriptor;
      }

      protected FieldAccessorTable
          internalGetFieldAccessorTable() {
        return Visionmodeldata.internal_static_com_example_tutorial_NavigationInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                Visionmodeldata.NavigationInfo.class, Visionmodeldata.NavigationInfo.Builder.class);
      }

      // Construct using com.example.tutorial.Visionmodeldata.NavigationInfo.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
          getSweepLocationsFieldBuilder();
        }
      }
      private static Builder create() {
        return new Builder();
      }

      public Builder clear() {
        super.clear();
        if (sweepLocationsBuilder_ == null) {
          sweepLocations_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          sweepLocationsBuilder_.clear();
        }
        return this;
      }

      public Builder clone() {
        return create().mergeFrom(buildPartial());
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return Visionmodeldata.internal_static_com_example_tutorial_NavigationInfo_descriptor;
      }

      public Visionmodeldata.NavigationInfo getDefaultInstanceForType() {
        return Visionmodeldata.NavigationInfo.getDefaultInstance();
      }

      public Visionmodeldata.NavigationInfo build() {
        Visionmodeldata.NavigationInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public Visionmodeldata.NavigationInfo buildPartial() {
        Visionmodeldata.NavigationInfo result = new Visionmodeldata.NavigationInfo(this);
        int from_bitField0_ = bitField0_;
        if (sweepLocationsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            sweepLocations_ = java.util.Collections.unmodifiableList(sweepLocations_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sweepLocations_ = sweepLocations_;
        } else {
          result.sweepLocations_ = sweepLocationsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof Visionmodeldata.NavigationInfo) {
          return mergeFrom((Visionmodeldata.NavigationInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(Visionmodeldata.NavigationInfo other) {
        if (other == Visionmodeldata.NavigationInfo.getDefaultInstance()) return this;
        if (sweepLocationsBuilder_ == null) {
          if (!other.sweepLocations_.isEmpty()) {
            if (sweepLocations_.isEmpty()) {
              sweepLocations_ = other.sweepLocations_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSweepLocationsIsMutable();
              sweepLocations_.addAll(other.sweepLocations_);
            }
            onChanged();
          }
        } else {
          if (!other.sweepLocations_.isEmpty()) {
            if (sweepLocationsBuilder_.isEmpty()) {
              sweepLocationsBuilder_.dispose();
              sweepLocationsBuilder_ = null;
              sweepLocations_ = other.sweepLocations_;
              bitField0_ = (bitField0_ & ~0x00000001);
              sweepLocationsBuilder_ =
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getSweepLocationsFieldBuilder() : null;
            } else {
              sweepLocationsBuilder_.addAllMessages(other.sweepLocations_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Visionmodeldata.NavigationInfo parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (Visionmodeldata.NavigationInfo) e.getUnfinishedMessage();
          throw e;
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<SweepLocation> sweepLocations_ =
        java.util.Collections.emptyList();
      private void ensureSweepLocationsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          sweepLocations_ = new java.util.ArrayList<SweepLocation>(sweepLocations_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          SweepLocation, SweepLocation.Builder, SweepLocationOrBuilder> sweepLocationsBuilder_;

      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public java.util.List<SweepLocation> getSweepLocationsList() {
        if (sweepLocationsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sweepLocations_);
        } else {
          return sweepLocationsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public int getSweepLocationsCount() {
        if (sweepLocationsBuilder_ == null) {
          return sweepLocations_.size();
        } else {
          return sweepLocationsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Visionmodeldata.SweepLocation getSweepLocations(int index) {
        if (sweepLocationsBuilder_ == null) {
          return sweepLocations_.get(index);
        } else {
          return sweepLocationsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Builder setSweepLocations(
          int index, Visionmodeldata.SweepLocation value) {
        if (sweepLocationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSweepLocationsIsMutable();
          sweepLocations_.set(index, value);
          onChanged();
        } else {
          sweepLocationsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Builder setSweepLocations(
          int index, Visionmodeldata.SweepLocation.Builder builderForValue) {
        if (sweepLocationsBuilder_ == null) {
          ensureSweepLocationsIsMutable();
          sweepLocations_.set(index, builderForValue.build());
          onChanged();
        } else {
          sweepLocationsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Builder addSweepLocations(Visionmodeldata.SweepLocation value) {
        if (sweepLocationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSweepLocationsIsMutable();
          sweepLocations_.add(value);
          onChanged();
        } else {
          sweepLocationsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Builder addSweepLocations(
          int index, Visionmodeldata.SweepLocation value) {
        if (sweepLocationsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSweepLocationsIsMutable();
          sweepLocations_.add(index, value);
          onChanged();
        } else {
          sweepLocationsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Builder addSweepLocations(
          Visionmodeldata.SweepLocation.Builder builderForValue) {
        if (sweepLocationsBuilder_ == null) {
          ensureSweepLocationsIsMutable();
          sweepLocations_.add(builderForValue.build());
          onChanged();
        } else {
          sweepLocationsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Builder addSweepLocations(
          int index, Visionmodeldata.SweepLocation.Builder builderForValue) {
        if (sweepLocationsBuilder_ == null) {
          ensureSweepLocationsIsMutable();
          sweepLocations_.add(index, builderForValue.build());
          onChanged();
        } else {
          sweepLocationsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Builder addAllSweepLocations(
          Iterable<? extends SweepLocation> values) {
        if (sweepLocationsBuilder_ == null) {
          ensureSweepLocationsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sweepLocations_);
          onChanged();
        } else {
          sweepLocationsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Builder clearSweepLocations() {
        if (sweepLocationsBuilder_ == null) {
          sweepLocations_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          sweepLocationsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Builder removeSweepLocations(int index) {
        if (sweepLocationsBuilder_ == null) {
          ensureSweepLocationsIsMutable();
          sweepLocations_.remove(index);
          onChanged();
        } else {
          sweepLocationsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Visionmodeldata.SweepLocation.Builder getSweepLocationsBuilder(
          int index) {
        return getSweepLocationsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Visionmodeldata.SweepLocationOrBuilder getSweepLocationsOrBuilder(
          int index) {
        if (sweepLocationsBuilder_ == null) {
          return sweepLocations_.get(index);  } else {
          return sweepLocationsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public java.util.List<? extends SweepLocationOrBuilder>
           getSweepLocationsOrBuilderList() {
        if (sweepLocationsBuilder_ != null) {
          return sweepLocationsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sweepLocations_);
        }
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Visionmodeldata.SweepLocation.Builder addSweepLocationsBuilder() {
        return getSweepLocationsFieldBuilder().addBuilder(
            Visionmodeldata.SweepLocation.getDefaultInstance());
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public Visionmodeldata.SweepLocation.Builder addSweepLocationsBuilder(
          int index) {
        return getSweepLocationsFieldBuilder().addBuilder(
            index, Visionmodeldata.SweepLocation.getDefaultInstance());
      }
      /**
       * <code>repeated .com.example.tutorial.SweepLocation sweepLocations = 1;</code>
       */
      public java.util.List<SweepLocation.Builder>
           getSweepLocationsBuilderList() {
        return getSweepLocationsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          SweepLocation, SweepLocation.Builder, SweepLocationOrBuilder>
          getSweepLocationsFieldBuilder() {
        if (sweepLocationsBuilder_ == null) {
          sweepLocationsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              SweepLocation, SweepLocation.Builder, SweepLocationOrBuilder>(
                  sweepLocations_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          sweepLocations_ = null;
        }
        return sweepLocationsBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:com.example.tutorial.NavigationInfo)
    }

    static {
      defaultInstance = new NavigationInfo(true);
      defaultInstance.initFields();
    }

    // @@protoc_insertion_point(class_scope:com.example.tutorial.NavigationInfo)
  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_example_tutorial_Affine3f_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_example_tutorial_Affine3f_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_example_tutorial_Quaternionf_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_example_tutorial_Quaternionf_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_example_tutorial_Vector3f_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_example_tutorial_Vector3f_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_example_tutorial_SweepLocation_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_example_tutorial_SweepLocation_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_example_tutorial_NavigationInfo_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_example_tutorial_NavigationInfo_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    String[] descriptorData = {
      "\n\025visionmodeldata.proto\022\024com.example.tut" +
      "orial\"t\n\010Affine3f\0223\n\010rotation\030\001 \001(\0132!.co" +
      "m.example.tutorial.Quaternionf\0223\n\013transl" +
      "ation\030\002 \001(\0132\036.com.example.tutorial.Vecto" +
      "r3f\"9\n\013Quaternionf\022\t\n\001w\030\001 \001(\002\022\t\n\001x\030\002 \001(\002" +
      "\022\t\n\001y\030\003 \001(\002\022\t\n\001z\030\004 \001(\002\"+\n\010Vector3f\022\t\n\001x\030" +
      "\001 \001(\002\022\t\n\001y\030\002 \001(\002\022\t\n\001z\030\003 \001(\002\"\322\001\n\rSweepLoc" +
      "ation\022\014\n\004uuid\030\001 \001(\014\022,\n\004pose\030\002 \001(\0132\036.com." +
      "example.tutorial.Affine3f\022,\n\004puck\030\003 \001(\0132" +
      "\036.com.example.tutorial.Vector3f\022\r\n\005group",
      "\030\004 \001(\005\022\020\n\010subgroup\030\005 \001(\005\022\020\n\010visibles\030\006 \003" +
      "(\005\022\021\n\tvisibles2\030\007 \003(\005\022\021\n\tvisibles3\030\010 \003(\005" +
      "\"M\n\016NavigationInfo\022;\n\016sweepLocations\030\001 \003" +
      "(\0132#.com.example.tutorial.SweepLocation"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
    internal_static_com_example_tutorial_Affine3f_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_com_example_tutorial_Affine3f_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_example_tutorial_Affine3f_descriptor,
        new String[] { "Rotation", "Translation", });
    internal_static_com_example_tutorial_Quaternionf_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_com_example_tutorial_Quaternionf_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_example_tutorial_Quaternionf_descriptor,
        new String[] { "W", "X", "Y", "Z", });
    internal_static_com_example_tutorial_Vector3f_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_com_example_tutorial_Vector3f_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_example_tutorial_Vector3f_descriptor,
        new String[] { "X", "Y", "Z", });
    internal_static_com_example_tutorial_SweepLocation_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_com_example_tutorial_SweepLocation_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_example_tutorial_SweepLocation_descriptor,
        new String[] { "Uuid", "Pose", "Puck", "Group", "Subgroup", "Visibles", "Visibles2", "Visibles3", });
    internal_static_com_example_tutorial_NavigationInfo_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_com_example_tutorial_NavigationInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_example_tutorial_NavigationInfo_descriptor,
        new String[] { "SweepLocations", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
