// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: meta.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Messages {

  /// <summary>Holder for reflection information generated from meta.proto</summary>
  public static partial class MetaReflection {

    #region Descriptor
    /// <summary>File descriptor for meta.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static MetaReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CgptZXRhLnByb3RvEghNZXNzYWdlcxoMdmVjdG9yLnByb3RvGg1zcGF0aWFs",
            "LnByb3RvIoYBCg9HcmFwaGljc0NvbnRyb2wSDAoEbW9kZRgBIAEoDRINCgVz",
            "dHlsZRgCIAEoDRINCgVjb2xvchgEIAMoAhINCgVhbHBoYRgFIAEoAhITCgtw",
            "b2ludF93aWR0aBgGIAEoAhISCgpsaW5lX3dpZHRoGAcgASgCEg8KB3Zpc2li",
            "bGUYCiABKAgi3AEKDlJlcHJlc2VudGF0aW9uEhQKDHByb3BlcnR5X2tleRgB",
            "IAEoCRIRCgljb2xvcl9tYXAYAiABKA0SEQoJY29tcG9uZW50GAMgASgNEhIK",
            "CmF1dG9fcmFuZ2UYBCABKAgSFwoPdXNlX2RlZmF1bHRfa2V5GAUgASgIEhoK",
            "EmNvbG9yX291dF9vZl9yYW5nZRgGIAEoCBIVCg11c2VfbWFnbml0dWRlGAcg",
            "ASgIEh8KF2Rpc3BsYWNlbWVudF9tdWx0aXBsaWVyGAkgASgCEg0KBXJhbmdl",
            "GAogAygCIrMCCgZWaXN1YWwSHgoGcmVnaW9uGAEgASgLMg4uTWVzc2FnZXMu",
            "Wm9uZRIqCgdjb250cm9sGAIgASgLMhkuTWVzc2FnZXMuR3JhcGhpY3NDb250",
            "cm9sEjAKDnJlcHJlc2VudGF0aW9uGAMgASgLMhguTWVzc2FnZXMuUmVwcmVz",
            "ZW50YXRpb24SDgoGcG9pbnRzGAUgAygNEg0KBWxpbmVzGAYgAygNEhEKCXRy",
            "aWFuZ2xlcxgHIAMoDRIbChNpbmRpY2VzX3Blcl9lbGVtZW50GAggAygNEhsK",
            "E2VsZW1lbnRzX3RvX2luZGljZXMYCSADKA0SGwoTaW5kaWNlc190b19lbGVt",
            "ZW50cxgKIAMoDRIiCgZleHRyYXMYDyADKAsyEi5NZXNzYWdlcy5WZWN0b3Iz",
            "MiL3BQoETWV0YRIMCgRuYW1lGAEgASgJEgsKA3VpZBgCIAEoAxIRCglkaXJl",
            "Y3RvcnkYAyABKAkSDgoGc3ltYm9sGAQgASgJEg0KBW93bmVyGAUgASgJEhAK",
            "CGNvbW1lbnRzGAYgASgJEg4KBnNlcmllcxgHIAEoCRIQCghzeXNfaW5mbxgI",
            "IAEoCRIRCglnZW9tX2luZm8YCSABKAkSDgoGcGFyZW50GAogASgDEg8KB2Ny",
            "ZWF0ZWQYCyABKAMSDQoFc2F2ZWQYDCABKAMSEAoIbW9kaWZpZWQYDSABKAMS",
            "EQoJaXRlcmF0aW9uGA4gASgEEhUKDXNhdmVfaW50ZXJ2YWwYDyABKAQSDwoH",
            "ZW5hYmxlZBgQIAEoCBIOCgZsb2NrZWQYESABKAgSEQoJYXV0b19zYXZlGBIg",
            "ASgIEhMKC2xpZ2h0d2VpZ2h0GBMgASgIEiQKCHJldmlzaW9uGBQgASgLMhIu",
            "TWVzc2FnZXMuUmV2aXNpb24SIwoHdmVyc2lvbhgVIAEoCzISLk1lc3NhZ2Vz",
            "LlJldmlzaW9uEiEKBmJvdW5kcxgWIAEoCzIRLk1lc3NhZ2VzLkV4dHJlbWES",
            "CwoDdXJsGBcgASgJEi0KCmFwcGVhcmFuY2UYGCABKAsyGS5NZXNzYWdlcy5H",
            "cmFwaGljc0NvbnRyb2wSEAoIY2hpbGRyZW4YGSADKAMSDgoGZ3JvdXBzGBog",
            "AygFEg0KBWxvb3BzGBsgAygFEhAKCHN1cmZhY2VzGBwgAygFEg8KB3ZvbHVt",
            "ZXMYHSADKAUSGAoQZ2xvYmFsX3RyYW5zZm9ybRgeIAMoARITCgtnbG9iYWxf",
            "cmF0ZRgfIAMoARIUCgxnbG9iYWxfYWNjZWwYICADKAESEgoKcHJvcGVydGll",
            "cxghIAMoCRIfCgVtZWRpYRgiIAMoCzIQLk1lc3NhZ2VzLlZpc3VhbBIYChBz",
            "eW1ib2xfdHJhbnNmb3JtGCMgAygCEhQKDGxlbmd0aF91bml0cxgoIAEoDSJz",
            "CgxTbGljZUNvbnRyb2wSDAoEbmFtZRgBIAEoCRIOCgZjZW50ZXIYAiADKAES",
            "DgoGbm9ybWFsGAMgAygBEhEKCWludGVyc2VjdBgEIAEoCBIQCghuZWdhdGl2",
            "ZRgFIAEoCBIQCghwb3NpdGl2ZRgGIAEoCCLUAgoNQ2FtZXJhQ29udHJvbBIP",
            "CgdzdWJqZWN0GAEgAygCEg4KBm9mZnNldBgCIAMoAhINCgVhbmdsZRgDIAMo",
            "AhISCgpzY2VuZV90aW1lGAQgASgCEhUKDW1hZ25pZmljYXRpb24YBSABKAIS",
            "FQoNdGltZV9jb25zdGFudBgGIAEoAhIXCg9wYW5fc2Vuc2l0aXZpdHkYByAB",
            "KAISHAoUcm90YXRpb25fc2Vuc2l0aXZpdHkYCCABKAISGAoQem9vbV9zZW5z",
            "aXRpdml0eRgJIAEoAhINCgV6bmVhchgKIAEoAhIMCgR6ZmFyGAsgASgCEgsK",
            "A2FvdhgMIAEoAhISCgpyZXNvbHV0aW9uGA0gAygNEhMKC3BlcnNwZWN0aXZl",
            "GA8gASgIEg4KBnNtb290aBgQIAEoCBINCgVvcmJpdBgRIAEoCBIOCgZmb2xs",
            "b3cYEiABKAhiBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Messages.VectorReflection.Descriptor, global::Messages.SpatialReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.GraphicsControl), global::Messages.GraphicsControl.Parser, new[]{ "Mode", "Style", "Color", "Alpha", "PointWidth", "LineWidth", "Visible" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.Representation), global::Messages.Representation.Parser, new[]{ "PropertyKey", "ColorMap", "Component", "AutoRange", "UseDefaultKey", "ColorOutOfRange", "UseMagnitude", "DisplacementMultiplier", "Range" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.Visual), global::Messages.Visual.Parser, new[]{ "Region", "Control", "Representation", "Points", "Lines", "Triangles", "IndicesPerElement", "ElementsToIndices", "IndicesToElements", "Extras" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.Meta), global::Messages.Meta.Parser, new[]{ "Name", "Uid", "Directory", "Symbol", "Owner", "Comments", "Series", "SysInfo", "GeomInfo", "Parent", "Created", "Saved", "Modified", "Iteration", "SaveInterval", "Enabled", "Locked", "AutoSave", "Lightweight", "Revision", "Version", "Bounds", "Url", "Appearance", "Children", "Groups", "Loops", "Surfaces", "Volumes", "GlobalTransform", "GlobalRate", "GlobalAccel", "Properties", "Media", "SymbolTransform", "LengthUnits" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.SliceControl), global::Messages.SliceControl.Parser, new[]{ "Name", "Center", "Normal", "Intersect", "Negative", "Positive" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Messages.CameraControl), global::Messages.CameraControl.Parser, new[]{ "Subject", "Offset", "Angle", "SceneTime", "Magnification", "TimeConstant", "PanSensitivity", "RotationSensitivity", "ZoomSensitivity", "Znear", "Zfar", "Aov", "Resolution", "Perspective", "Smooth", "Orbit", "Follow" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Messages
  public sealed partial class GraphicsControl : pb::IMessage<GraphicsControl>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GraphicsControl> _parser = new pb::MessageParser<GraphicsControl>(() => new GraphicsControl());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GraphicsControl> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MetaReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GraphicsControl() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GraphicsControl(GraphicsControl other) : this() {
      mode_ = other.mode_;
      style_ = other.style_;
      color_ = other.color_.Clone();
      alpha_ = other.alpha_;
      pointWidth_ = other.pointWidth_;
      lineWidth_ = other.lineWidth_;
      visible_ = other.visible_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GraphicsControl Clone() {
      return new GraphicsControl(this);
    }

    /// <summary>Field number for the "mode" field.</summary>
    public const int ModeFieldNumber = 1;
    private uint mode_;
    /// <summary>
    /// render program enumeration: 0-explicit raster, 1-implicit raster, 2-explicit ray, 3-implicit ray
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint Mode {
      get { return mode_; }
      set {
        mode_ = value;
      }
    }

    /// <summary>Field number for the "style" field.</summary>
    public const int StyleFieldNumber = 2;
    private uint style_;
    /// <summary>
    /// bitfield flags, see common/style.h
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint Style {
      get { return style_; }
      set {
        style_ = value;
      }
    }

    /// <summary>Field number for the "color" field.</summary>
    public const int ColorFieldNumber = 4;
    private static readonly pb::FieldCodec<float> _repeated_color_codec
        = pb::FieldCodec.ForFloat(34);
    private readonly pbc::RepeatedField<float> color_ = new pbc::RepeatedField<float>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<float> Color {
      get { return color_; }
    }

    /// <summary>Field number for the "alpha" field.</summary>
    public const int AlphaFieldNumber = 5;
    private float alpha_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Alpha {
      get { return alpha_; }
      set {
        alpha_ = value;
      }
    }

    /// <summary>Field number for the "point_width" field.</summary>
    public const int PointWidthFieldNumber = 6;
    private float pointWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float PointWidth {
      get { return pointWidth_; }
      set {
        pointWidth_ = value;
      }
    }

    /// <summary>Field number for the "line_width" field.</summary>
    public const int LineWidthFieldNumber = 7;
    private float lineWidth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float LineWidth {
      get { return lineWidth_; }
      set {
        lineWidth_ = value;
      }
    }

    /// <summary>Field number for the "visible" field.</summary>
    public const int VisibleFieldNumber = 10;
    private bool visible_;
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Visible {
      get { return visible_; }
      set {
        visible_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GraphicsControl);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GraphicsControl other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Mode != other.Mode) return false;
      if (Style != other.Style) return false;
      if(!color_.Equals(other.color_)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Alpha, other.Alpha)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(PointWidth, other.PointWidth)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(LineWidth, other.LineWidth)) return false;
      if (Visible != other.Visible) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Mode != 0) hash ^= Mode.GetHashCode();
      if (Style != 0) hash ^= Style.GetHashCode();
      hash ^= color_.GetHashCode();
      if (Alpha != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Alpha);
      if (PointWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(PointWidth);
      if (LineWidth != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(LineWidth);
      if (Visible != false) hash ^= Visible.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Mode != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(Mode);
      }
      if (Style != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(Style);
      }
      color_.WriteTo(output, _repeated_color_codec);
      if (Alpha != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Alpha);
      }
      if (PointWidth != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(PointWidth);
      }
      if (LineWidth != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(LineWidth);
      }
      if (Visible != false) {
        output.WriteRawTag(80);
        output.WriteBool(Visible);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Mode != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(Mode);
      }
      if (Style != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(Style);
      }
      color_.WriteTo(ref output, _repeated_color_codec);
      if (Alpha != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Alpha);
      }
      if (PointWidth != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(PointWidth);
      }
      if (LineWidth != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(LineWidth);
      }
      if (Visible != false) {
        output.WriteRawTag(80);
        output.WriteBool(Visible);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Mode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Mode);
      }
      if (Style != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Style);
      }
      size += color_.CalculateSize(_repeated_color_codec);
      if (Alpha != 0F) {
        size += 1 + 4;
      }
      if (PointWidth != 0F) {
        size += 1 + 4;
      }
      if (LineWidth != 0F) {
        size += 1 + 4;
      }
      if (Visible != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GraphicsControl other) {
      if (other == null) {
        return;
      }
      if (other.Mode != 0) {
        Mode = other.Mode;
      }
      if (other.Style != 0) {
        Style = other.Style;
      }
      color_.Add(other.color_);
      if (other.Alpha != 0F) {
        Alpha = other.Alpha;
      }
      if (other.PointWidth != 0F) {
        PointWidth = other.PointWidth;
      }
      if (other.LineWidth != 0F) {
        LineWidth = other.LineWidth;
      }
      if (other.Visible != false) {
        Visible = other.Visible;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Mode = input.ReadUInt32();
            break;
          }
          case 16: {
            Style = input.ReadUInt32();
            break;
          }
          case 34:
          case 37: {
            color_.AddEntriesFrom(input, _repeated_color_codec);
            break;
          }
          case 45: {
            Alpha = input.ReadFloat();
            break;
          }
          case 53: {
            PointWidth = input.ReadFloat();
            break;
          }
          case 61: {
            LineWidth = input.ReadFloat();
            break;
          }
          case 80: {
            Visible = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Mode = input.ReadUInt32();
            break;
          }
          case 16: {
            Style = input.ReadUInt32();
            break;
          }
          case 34:
          case 37: {
            color_.AddEntriesFrom(ref input, _repeated_color_codec);
            break;
          }
          case 45: {
            Alpha = input.ReadFloat();
            break;
          }
          case 53: {
            PointWidth = input.ReadFloat();
            break;
          }
          case 61: {
            LineWidth = input.ReadFloat();
            break;
          }
          case 80: {
            Visible = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Representation : pb::IMessage<Representation>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Representation> _parser = new pb::MessageParser<Representation>(() => new Representation());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Representation> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MetaReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Representation() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Representation(Representation other) : this() {
      propertyKey_ = other.propertyKey_;
      colorMap_ = other.colorMap_;
      component_ = other.component_;
      autoRange_ = other.autoRange_;
      useDefaultKey_ = other.useDefaultKey_;
      colorOutOfRange_ = other.colorOutOfRange_;
      useMagnitude_ = other.useMagnitude_;
      displacementMultiplier_ = other.displacementMultiplier_;
      range_ = other.range_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Representation Clone() {
      return new Representation(this);
    }

    /// <summary>Field number for the "property_key" field.</summary>
    public const int PropertyKeyFieldNumber = 1;
    private string propertyKey_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string PropertyKey {
      get { return propertyKey_; }
      set {
        propertyKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "color_map" field.</summary>
    public const int ColorMapFieldNumber = 2;
    private uint colorMap_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint ColorMap {
      get { return colorMap_; }
      set {
        colorMap_ = value;
      }
    }

    /// <summary>Field number for the "component" field.</summary>
    public const int ComponentFieldNumber = 3;
    private uint component_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint Component {
      get { return component_; }
      set {
        component_ = value;
      }
    }

    /// <summary>Field number for the "auto_range" field.</summary>
    public const int AutoRangeFieldNumber = 4;
    private bool autoRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool AutoRange {
      get { return autoRange_; }
      set {
        autoRange_ = value;
      }
    }

    /// <summary>Field number for the "use_default_key" field.</summary>
    public const int UseDefaultKeyFieldNumber = 5;
    private bool useDefaultKey_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool UseDefaultKey {
      get { return useDefaultKey_; }
      set {
        useDefaultKey_ = value;
      }
    }

    /// <summary>Field number for the "color_out_of_range" field.</summary>
    public const int ColorOutOfRangeFieldNumber = 6;
    private bool colorOutOfRange_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool ColorOutOfRange {
      get { return colorOutOfRange_; }
      set {
        colorOutOfRange_ = value;
      }
    }

    /// <summary>Field number for the "use_magnitude" field.</summary>
    public const int UseMagnitudeFieldNumber = 7;
    private bool useMagnitude_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool UseMagnitude {
      get { return useMagnitude_; }
      set {
        useMagnitude_ = value;
      }
    }

    /// <summary>Field number for the "displacement_multiplier" field.</summary>
    public const int DisplacementMultiplierFieldNumber = 9;
    private float displacementMultiplier_;
    /// <summary>
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float DisplacementMultiplier {
      get { return displacementMultiplier_; }
      set {
        displacementMultiplier_ = value;
      }
    }

    /// <summary>Field number for the "range" field.</summary>
    public const int RangeFieldNumber = 10;
    private static readonly pb::FieldCodec<float> _repeated_range_codec
        = pb::FieldCodec.ForFloat(82);
    private readonly pbc::RepeatedField<float> range_ = new pbc::RepeatedField<float>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<float> Range {
      get { return range_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Representation);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Representation other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (PropertyKey != other.PropertyKey) return false;
      if (ColorMap != other.ColorMap) return false;
      if (Component != other.Component) return false;
      if (AutoRange != other.AutoRange) return false;
      if (UseDefaultKey != other.UseDefaultKey) return false;
      if (ColorOutOfRange != other.ColorOutOfRange) return false;
      if (UseMagnitude != other.UseMagnitude) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(DisplacementMultiplier, other.DisplacementMultiplier)) return false;
      if(!range_.Equals(other.range_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (PropertyKey.Length != 0) hash ^= PropertyKey.GetHashCode();
      if (ColorMap != 0) hash ^= ColorMap.GetHashCode();
      if (Component != 0) hash ^= Component.GetHashCode();
      if (AutoRange != false) hash ^= AutoRange.GetHashCode();
      if (UseDefaultKey != false) hash ^= UseDefaultKey.GetHashCode();
      if (ColorOutOfRange != false) hash ^= ColorOutOfRange.GetHashCode();
      if (UseMagnitude != false) hash ^= UseMagnitude.GetHashCode();
      if (DisplacementMultiplier != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(DisplacementMultiplier);
      hash ^= range_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (PropertyKey.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(PropertyKey);
      }
      if (ColorMap != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(ColorMap);
      }
      if (Component != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(Component);
      }
      if (AutoRange != false) {
        output.WriteRawTag(32);
        output.WriteBool(AutoRange);
      }
      if (UseDefaultKey != false) {
        output.WriteRawTag(40);
        output.WriteBool(UseDefaultKey);
      }
      if (ColorOutOfRange != false) {
        output.WriteRawTag(48);
        output.WriteBool(ColorOutOfRange);
      }
      if (UseMagnitude != false) {
        output.WriteRawTag(56);
        output.WriteBool(UseMagnitude);
      }
      if (DisplacementMultiplier != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(DisplacementMultiplier);
      }
      range_.WriteTo(output, _repeated_range_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (PropertyKey.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(PropertyKey);
      }
      if (ColorMap != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(ColorMap);
      }
      if (Component != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(Component);
      }
      if (AutoRange != false) {
        output.WriteRawTag(32);
        output.WriteBool(AutoRange);
      }
      if (UseDefaultKey != false) {
        output.WriteRawTag(40);
        output.WriteBool(UseDefaultKey);
      }
      if (ColorOutOfRange != false) {
        output.WriteRawTag(48);
        output.WriteBool(ColorOutOfRange);
      }
      if (UseMagnitude != false) {
        output.WriteRawTag(56);
        output.WriteBool(UseMagnitude);
      }
      if (DisplacementMultiplier != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(DisplacementMultiplier);
      }
      range_.WriteTo(ref output, _repeated_range_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (PropertyKey.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(PropertyKey);
      }
      if (ColorMap != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(ColorMap);
      }
      if (Component != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Component);
      }
      if (AutoRange != false) {
        size += 1 + 1;
      }
      if (UseDefaultKey != false) {
        size += 1 + 1;
      }
      if (ColorOutOfRange != false) {
        size += 1 + 1;
      }
      if (UseMagnitude != false) {
        size += 1 + 1;
      }
      if (DisplacementMultiplier != 0F) {
        size += 1 + 4;
      }
      size += range_.CalculateSize(_repeated_range_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Representation other) {
      if (other == null) {
        return;
      }
      if (other.PropertyKey.Length != 0) {
        PropertyKey = other.PropertyKey;
      }
      if (other.ColorMap != 0) {
        ColorMap = other.ColorMap;
      }
      if (other.Component != 0) {
        Component = other.Component;
      }
      if (other.AutoRange != false) {
        AutoRange = other.AutoRange;
      }
      if (other.UseDefaultKey != false) {
        UseDefaultKey = other.UseDefaultKey;
      }
      if (other.ColorOutOfRange != false) {
        ColorOutOfRange = other.ColorOutOfRange;
      }
      if (other.UseMagnitude != false) {
        UseMagnitude = other.UseMagnitude;
      }
      if (other.DisplacementMultiplier != 0F) {
        DisplacementMultiplier = other.DisplacementMultiplier;
      }
      range_.Add(other.range_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            PropertyKey = input.ReadString();
            break;
          }
          case 16: {
            ColorMap = input.ReadUInt32();
            break;
          }
          case 24: {
            Component = input.ReadUInt32();
            break;
          }
          case 32: {
            AutoRange = input.ReadBool();
            break;
          }
          case 40: {
            UseDefaultKey = input.ReadBool();
            break;
          }
          case 48: {
            ColorOutOfRange = input.ReadBool();
            break;
          }
          case 56: {
            UseMagnitude = input.ReadBool();
            break;
          }
          case 77: {
            DisplacementMultiplier = input.ReadFloat();
            break;
          }
          case 82:
          case 85: {
            range_.AddEntriesFrom(input, _repeated_range_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            PropertyKey = input.ReadString();
            break;
          }
          case 16: {
            ColorMap = input.ReadUInt32();
            break;
          }
          case 24: {
            Component = input.ReadUInt32();
            break;
          }
          case 32: {
            AutoRange = input.ReadBool();
            break;
          }
          case 40: {
            UseDefaultKey = input.ReadBool();
            break;
          }
          case 48: {
            ColorOutOfRange = input.ReadBool();
            break;
          }
          case 56: {
            UseMagnitude = input.ReadBool();
            break;
          }
          case 77: {
            DisplacementMultiplier = input.ReadFloat();
            break;
          }
          case 82:
          case 85: {
            range_.AddEntriesFrom(ref input, _repeated_range_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Visual : pb::IMessage<Visual>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Visual> _parser = new pb::MessageParser<Visual>(() => new Visual());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Visual> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MetaReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Visual() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Visual(Visual other) : this() {
      region_ = other.region_ != null ? other.region_.Clone() : null;
      control_ = other.control_ != null ? other.control_.Clone() : null;
      representation_ = other.representation_ != null ? other.representation_.Clone() : null;
      points_ = other.points_.Clone();
      lines_ = other.lines_.Clone();
      triangles_ = other.triangles_.Clone();
      indicesPerElement_ = other.indicesPerElement_.Clone();
      elementsToIndices_ = other.elementsToIndices_.Clone();
      indicesToElements_ = other.indicesToElements_.Clone();
      extras_ = other.extras_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Visual Clone() {
      return new Visual(this);
    }

    /// <summary>Field number for the "region" field.</summary>
    public const int RegionFieldNumber = 1;
    private global::Messages.Zone region_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Zone Region {
      get { return region_; }
      set {
        region_ = value;
      }
    }

    /// <summary>Field number for the "control" field.</summary>
    public const int ControlFieldNumber = 2;
    private global::Messages.GraphicsControl control_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.GraphicsControl Control {
      get { return control_; }
      set {
        control_ = value;
      }
    }

    /// <summary>Field number for the "representation" field.</summary>
    public const int RepresentationFieldNumber = 3;
    private global::Messages.Representation representation_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Representation Representation {
      get { return representation_; }
      set {
        representation_ = value;
      }
    }

    /// <summary>Field number for the "points" field.</summary>
    public const int PointsFieldNumber = 5;
    private static readonly pb::FieldCodec<uint> _repeated_points_codec
        = pb::FieldCodec.ForUInt32(42);
    private readonly pbc::RepeatedField<uint> points_ = new pbc::RepeatedField<uint>();
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<uint> Points {
      get { return points_; }
    }

    /// <summary>Field number for the "lines" field.</summary>
    public const int LinesFieldNumber = 6;
    private static readonly pb::FieldCodec<uint> _repeated_lines_codec
        = pb::FieldCodec.ForUInt32(50);
    private readonly pbc::RepeatedField<uint> lines_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<uint> Lines {
      get { return lines_; }
    }

    /// <summary>Field number for the "triangles" field.</summary>
    public const int TrianglesFieldNumber = 7;
    private static readonly pb::FieldCodec<uint> _repeated_triangles_codec
        = pb::FieldCodec.ForUInt32(58);
    private readonly pbc::RepeatedField<uint> triangles_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<uint> Triangles {
      get { return triangles_; }
    }

    /// <summary>Field number for the "indices_per_element" field.</summary>
    public const int IndicesPerElementFieldNumber = 8;
    private static readonly pb::FieldCodec<uint> _repeated_indicesPerElement_codec
        = pb::FieldCodec.ForUInt32(66);
    private readonly pbc::RepeatedField<uint> indicesPerElement_ = new pbc::RepeatedField<uint>();
    /// <summary>
    /// only used on composite elements (e.g. QUAD4 represented using triangles)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<uint> IndicesPerElement {
      get { return indicesPerElement_; }
    }

    /// <summary>Field number for the "elements_to_indices" field.</summary>
    public const int ElementsToIndicesFieldNumber = 9;
    private static readonly pb::FieldCodec<uint> _repeated_elementsToIndices_codec
        = pb::FieldCodec.ForUInt32(74);
    private readonly pbc::RepeatedField<uint> elementsToIndices_ = new pbc::RepeatedField<uint>();
    /// <summary>
    /// only used on composite elements (e.g. QUAD4 represented using triangles)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<uint> ElementsToIndices {
      get { return elementsToIndices_; }
    }

    /// <summary>Field number for the "indices_to_elements" field.</summary>
    public const int IndicesToElementsFieldNumber = 10;
    private static readonly pb::FieldCodec<uint> _repeated_indicesToElements_codec
        = pb::FieldCodec.ForUInt32(82);
    private readonly pbc::RepeatedField<uint> indicesToElements_ = new pbc::RepeatedField<uint>();
    /// <summary>
    /// only used on composite elements (e.g. QUAD4 represented using triangles)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<uint> IndicesToElements {
      get { return indicesToElements_; }
    }

    /// <summary>Field number for the "extras" field.</summary>
    public const int ExtrasFieldNumber = 15;
    private static readonly pb::FieldCodec<global::Messages.Vector32> _repeated_extras_codec
        = pb::FieldCodec.ForMessage(122, global::Messages.Vector32.Parser);
    private readonly pbc::RepeatedField<global::Messages.Vector32> extras_ = new pbc::RepeatedField<global::Messages.Vector32>();
    /// <summary>
    /// optional data such as displacement vectors and positions (if not nodal positions)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Vector32> Extras {
      get { return extras_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Visual);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Visual other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Region, other.Region)) return false;
      if (!object.Equals(Control, other.Control)) return false;
      if (!object.Equals(Representation, other.Representation)) return false;
      if(!points_.Equals(other.points_)) return false;
      if(!lines_.Equals(other.lines_)) return false;
      if(!triangles_.Equals(other.triangles_)) return false;
      if(!indicesPerElement_.Equals(other.indicesPerElement_)) return false;
      if(!elementsToIndices_.Equals(other.elementsToIndices_)) return false;
      if(!indicesToElements_.Equals(other.indicesToElements_)) return false;
      if(!extras_.Equals(other.extras_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (region_ != null) hash ^= Region.GetHashCode();
      if (control_ != null) hash ^= Control.GetHashCode();
      if (representation_ != null) hash ^= Representation.GetHashCode();
      hash ^= points_.GetHashCode();
      hash ^= lines_.GetHashCode();
      hash ^= triangles_.GetHashCode();
      hash ^= indicesPerElement_.GetHashCode();
      hash ^= elementsToIndices_.GetHashCode();
      hash ^= indicesToElements_.GetHashCode();
      hash ^= extras_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (region_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Region);
      }
      if (control_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Control);
      }
      if (representation_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Representation);
      }
      points_.WriteTo(output, _repeated_points_codec);
      lines_.WriteTo(output, _repeated_lines_codec);
      triangles_.WriteTo(output, _repeated_triangles_codec);
      indicesPerElement_.WriteTo(output, _repeated_indicesPerElement_codec);
      elementsToIndices_.WriteTo(output, _repeated_elementsToIndices_codec);
      indicesToElements_.WriteTo(output, _repeated_indicesToElements_codec);
      extras_.WriteTo(output, _repeated_extras_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (region_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Region);
      }
      if (control_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Control);
      }
      if (representation_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Representation);
      }
      points_.WriteTo(ref output, _repeated_points_codec);
      lines_.WriteTo(ref output, _repeated_lines_codec);
      triangles_.WriteTo(ref output, _repeated_triangles_codec);
      indicesPerElement_.WriteTo(ref output, _repeated_indicesPerElement_codec);
      elementsToIndices_.WriteTo(ref output, _repeated_elementsToIndices_codec);
      indicesToElements_.WriteTo(ref output, _repeated_indicesToElements_codec);
      extras_.WriteTo(ref output, _repeated_extras_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (region_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Region);
      }
      if (control_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Control);
      }
      if (representation_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Representation);
      }
      size += points_.CalculateSize(_repeated_points_codec);
      size += lines_.CalculateSize(_repeated_lines_codec);
      size += triangles_.CalculateSize(_repeated_triangles_codec);
      size += indicesPerElement_.CalculateSize(_repeated_indicesPerElement_codec);
      size += elementsToIndices_.CalculateSize(_repeated_elementsToIndices_codec);
      size += indicesToElements_.CalculateSize(_repeated_indicesToElements_codec);
      size += extras_.CalculateSize(_repeated_extras_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Visual other) {
      if (other == null) {
        return;
      }
      if (other.region_ != null) {
        if (region_ == null) {
          Region = new global::Messages.Zone();
        }
        Region.MergeFrom(other.Region);
      }
      if (other.control_ != null) {
        if (control_ == null) {
          Control = new global::Messages.GraphicsControl();
        }
        Control.MergeFrom(other.Control);
      }
      if (other.representation_ != null) {
        if (representation_ == null) {
          Representation = new global::Messages.Representation();
        }
        Representation.MergeFrom(other.Representation);
      }
      points_.Add(other.points_);
      lines_.Add(other.lines_);
      triangles_.Add(other.triangles_);
      indicesPerElement_.Add(other.indicesPerElement_);
      elementsToIndices_.Add(other.elementsToIndices_);
      indicesToElements_.Add(other.indicesToElements_);
      extras_.Add(other.extras_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (region_ == null) {
              Region = new global::Messages.Zone();
            }
            input.ReadMessage(Region);
            break;
          }
          case 18: {
            if (control_ == null) {
              Control = new global::Messages.GraphicsControl();
            }
            input.ReadMessage(Control);
            break;
          }
          case 26: {
            if (representation_ == null) {
              Representation = new global::Messages.Representation();
            }
            input.ReadMessage(Representation);
            break;
          }
          case 42:
          case 40: {
            points_.AddEntriesFrom(input, _repeated_points_codec);
            break;
          }
          case 50:
          case 48: {
            lines_.AddEntriesFrom(input, _repeated_lines_codec);
            break;
          }
          case 58:
          case 56: {
            triangles_.AddEntriesFrom(input, _repeated_triangles_codec);
            break;
          }
          case 66:
          case 64: {
            indicesPerElement_.AddEntriesFrom(input, _repeated_indicesPerElement_codec);
            break;
          }
          case 74:
          case 72: {
            elementsToIndices_.AddEntriesFrom(input, _repeated_elementsToIndices_codec);
            break;
          }
          case 82:
          case 80: {
            indicesToElements_.AddEntriesFrom(input, _repeated_indicesToElements_codec);
            break;
          }
          case 122: {
            extras_.AddEntriesFrom(input, _repeated_extras_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (region_ == null) {
              Region = new global::Messages.Zone();
            }
            input.ReadMessage(Region);
            break;
          }
          case 18: {
            if (control_ == null) {
              Control = new global::Messages.GraphicsControl();
            }
            input.ReadMessage(Control);
            break;
          }
          case 26: {
            if (representation_ == null) {
              Representation = new global::Messages.Representation();
            }
            input.ReadMessage(Representation);
            break;
          }
          case 42:
          case 40: {
            points_.AddEntriesFrom(ref input, _repeated_points_codec);
            break;
          }
          case 50:
          case 48: {
            lines_.AddEntriesFrom(ref input, _repeated_lines_codec);
            break;
          }
          case 58:
          case 56: {
            triangles_.AddEntriesFrom(ref input, _repeated_triangles_codec);
            break;
          }
          case 66:
          case 64: {
            indicesPerElement_.AddEntriesFrom(ref input, _repeated_indicesPerElement_codec);
            break;
          }
          case 74:
          case 72: {
            elementsToIndices_.AddEntriesFrom(ref input, _repeated_elementsToIndices_codec);
            break;
          }
          case 82:
          case 80: {
            indicesToElements_.AddEntriesFrom(ref input, _repeated_indicesToElements_codec);
            break;
          }
          case 122: {
            extras_.AddEntriesFrom(ref input, _repeated_extras_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class Meta : pb::IMessage<Meta>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Meta> _parser = new pb::MessageParser<Meta>(() => new Meta());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Meta> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MetaReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Meta() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Meta(Meta other) : this() {
      name_ = other.name_;
      uid_ = other.uid_;
      directory_ = other.directory_;
      symbol_ = other.symbol_;
      owner_ = other.owner_;
      comments_ = other.comments_;
      series_ = other.series_;
      sysInfo_ = other.sysInfo_;
      geomInfo_ = other.geomInfo_;
      parent_ = other.parent_;
      created_ = other.created_;
      saved_ = other.saved_;
      modified_ = other.modified_;
      iteration_ = other.iteration_;
      saveInterval_ = other.saveInterval_;
      enabled_ = other.enabled_;
      locked_ = other.locked_;
      autoSave_ = other.autoSave_;
      lightweight_ = other.lightweight_;
      revision_ = other.revision_ != null ? other.revision_.Clone() : null;
      version_ = other.version_ != null ? other.version_.Clone() : null;
      bounds_ = other.bounds_ != null ? other.bounds_.Clone() : null;
      url_ = other.url_;
      appearance_ = other.appearance_ != null ? other.appearance_.Clone() : null;
      children_ = other.children_.Clone();
      groups_ = other.groups_.Clone();
      loops_ = other.loops_.Clone();
      surfaces_ = other.surfaces_.Clone();
      volumes_ = other.volumes_.Clone();
      globalTransform_ = other.globalTransform_.Clone();
      globalRate_ = other.globalRate_.Clone();
      globalAccel_ = other.globalAccel_.Clone();
      properties_ = other.properties_.Clone();
      media_ = other.media_.Clone();
      symbolTransform_ = other.symbolTransform_.Clone();
      lengthUnits_ = other.lengthUnits_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Meta Clone() {
      return new Meta(this);
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    /// <summary>
    /// unique identifier that persists between sessions
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "uid" field.</summary>
    public const int UidFieldNumber = 2;
    private long uid_;
    /// <summary>
    /// unique id for each system assigned, valid only within a given session
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Uid {
      get { return uid_; }
      set {
        uid_ = value;
      }
    }

    /// <summary>Field number for the "directory" field.</summary>
    public const int DirectoryFieldNumber = 3;
    private string directory_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Directory {
      get { return directory_; }
      set {
        directory_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "symbol" field.</summary>
    public const int SymbolFieldNumber = 4;
    private string symbol_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Symbol {
      get { return symbol_; }
      set {
        symbol_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "owner" field.</summary>
    public const int OwnerFieldNumber = 5;
    private string owner_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Owner {
      get { return owner_; }
      set {
        owner_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "comments" field.</summary>
    public const int CommentsFieldNumber = 6;
    private string comments_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Comments {
      get { return comments_; }
      set {
        comments_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "series" field.</summary>
    public const int SeriesFieldNumber = 7;
    private string series_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Series {
      get { return series_; }
      set {
        series_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "sys_info" field.</summary>
    public const int SysInfoFieldNumber = 8;
    private string sysInfo_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SysInfo {
      get { return sysInfo_; }
      set {
        sysInfo_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "geom_info" field.</summary>
    public const int GeomInfoFieldNumber = 9;
    private string geomInfo_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string GeomInfo {
      get { return geomInfo_; }
      set {
        geomInfo_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "parent" field.</summary>
    public const int ParentFieldNumber = 10;
    private long parent_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Parent {
      get { return parent_; }
      set {
        parent_ = value;
      }
    }

    /// <summary>Field number for the "created" field.</summary>
    public const int CreatedFieldNumber = 11;
    private long created_;
    /// <summary>
    /// unix time
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Created {
      get { return created_; }
      set {
        created_ = value;
      }
    }

    /// <summary>Field number for the "saved" field.</summary>
    public const int SavedFieldNumber = 12;
    private long saved_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Saved {
      get { return saved_; }
      set {
        saved_ = value;
      }
    }

    /// <summary>Field number for the "modified" field.</summary>
    public const int ModifiedFieldNumber = 13;
    private long modified_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Modified {
      get { return modified_; }
      set {
        modified_ = value;
      }
    }

    /// <summary>Field number for the "iteration" field.</summary>
    public const int IterationFieldNumber = 14;
    private ulong iteration_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong Iteration {
      get { return iteration_; }
      set {
        iteration_ = value;
      }
    }

    /// <summary>Field number for the "save_interval" field.</summary>
    public const int SaveIntervalFieldNumber = 15;
    private ulong saveInterval_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong SaveInterval {
      get { return saveInterval_; }
      set {
        saveInterval_ = value;
      }
    }

    /// <summary>Field number for the "enabled" field.</summary>
    public const int EnabledFieldNumber = 16;
    private bool enabled_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Enabled {
      get { return enabled_; }
      set {
        enabled_ = value;
      }
    }

    /// <summary>Field number for the "locked" field.</summary>
    public const int LockedFieldNumber = 17;
    private bool locked_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Locked {
      get { return locked_; }
      set {
        locked_ = value;
      }
    }

    /// <summary>Field number for the "auto_save" field.</summary>
    public const int AutoSaveFieldNumber = 18;
    private bool autoSave_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool AutoSave {
      get { return autoSave_; }
      set {
        autoSave_ = value;
      }
    }

    /// <summary>Field number for the "lightweight" field.</summary>
    public const int LightweightFieldNumber = 19;
    private bool lightweight_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Lightweight {
      get { return lightweight_; }
      set {
        lightweight_ = value;
      }
    }

    /// <summary>Field number for the "revision" field.</summary>
    public const int RevisionFieldNumber = 20;
    private global::Messages.Revision revision_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Revision Revision {
      get { return revision_; }
      set {
        revision_ = value;
      }
    }

    /// <summary>Field number for the "version" field.</summary>
    public const int VersionFieldNumber = 21;
    private global::Messages.Revision version_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Revision Version {
      get { return version_; }
      set {
        version_ = value;
      }
    }

    /// <summary>Field number for the "bounds" field.</summary>
    public const int BoundsFieldNumber = 22;
    private global::Messages.Extrema bounds_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.Extrema Bounds {
      get { return bounds_; }
      set {
        bounds_ = value;
      }
    }

    /// <summary>Field number for the "url" field.</summary>
    public const int UrlFieldNumber = 23;
    private string url_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Url {
      get { return url_; }
      set {
        url_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "appearance" field.</summary>
    public const int AppearanceFieldNumber = 24;
    private global::Messages.GraphicsControl appearance_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Messages.GraphicsControl Appearance {
      get { return appearance_; }
      set {
        appearance_ = value;
      }
    }

    /// <summary>Field number for the "children" field.</summary>
    public const int ChildrenFieldNumber = 25;
    private static readonly pb::FieldCodec<long> _repeated_children_codec
        = pb::FieldCodec.ForInt64(202);
    private readonly pbc::RepeatedField<long> children_ = new pbc::RepeatedField<long>();
    /// <summary>
    /// uid's (only good within a given session. see concept.proto for persistent relationships)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<long> Children {
      get { return children_; }
    }

    /// <summary>Field number for the "groups" field.</summary>
    public const int GroupsFieldNumber = 26;
    private static readonly pb::FieldCodec<int> _repeated_groups_codec
        = pb::FieldCodec.ForInt32(210);
    private readonly pbc::RepeatedField<int> groups_ = new pbc::RepeatedField<int>();
    /// <summary>
    /// region id's
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> Groups {
      get { return groups_; }
    }

    /// <summary>Field number for the "loops" field.</summary>
    public const int LoopsFieldNumber = 27;
    private static readonly pb::FieldCodec<int> _repeated_loops_codec
        = pb::FieldCodec.ForInt32(218);
    private readonly pbc::RepeatedField<int> loops_ = new pbc::RepeatedField<int>();
    /// <summary>
    /// region id's
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> Loops {
      get { return loops_; }
    }

    /// <summary>Field number for the "surfaces" field.</summary>
    public const int SurfacesFieldNumber = 28;
    private static readonly pb::FieldCodec<int> _repeated_surfaces_codec
        = pb::FieldCodec.ForInt32(226);
    private readonly pbc::RepeatedField<int> surfaces_ = new pbc::RepeatedField<int>();
    /// <summary>
    /// region id's
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> Surfaces {
      get { return surfaces_; }
    }

    /// <summary>Field number for the "volumes" field.</summary>
    public const int VolumesFieldNumber = 29;
    private static readonly pb::FieldCodec<int> _repeated_volumes_codec
        = pb::FieldCodec.ForInt32(234);
    private readonly pbc::RepeatedField<int> volumes_ = new pbc::RepeatedField<int>();
    /// <summary>
    /// region id's
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> Volumes {
      get { return volumes_; }
    }

    /// <summary>Field number for the "global_transform" field.</summary>
    public const int GlobalTransformFieldNumber = 30;
    private static readonly pb::FieldCodec<double> _repeated_globalTransform_codec
        = pb::FieldCodec.ForDouble(242);
    private readonly pbc::RepeatedField<double> globalTransform_ = new pbc::RepeatedField<double>();
    /// <summary>
    /// double16 (glm::dmat4) global transformation matrix
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> GlobalTransform {
      get { return globalTransform_; }
    }

    /// <summary>Field number for the "global_rate" field.</summary>
    public const int GlobalRateFieldNumber = 31;
    private static readonly pb::FieldCodec<double> _repeated_globalRate_codec
        = pb::FieldCodec.ForDouble(250);
    private readonly pbc::RepeatedField<double> globalRate_ = new pbc::RepeatedField<double>();
    /// <summary>
    /// double16 (glm::dmat4) global transformation matrix
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> GlobalRate {
      get { return globalRate_; }
    }

    /// <summary>Field number for the "global_accel" field.</summary>
    public const int GlobalAccelFieldNumber = 32;
    private static readonly pb::FieldCodec<double> _repeated_globalAccel_codec
        = pb::FieldCodec.ForDouble(258);
    private readonly pbc::RepeatedField<double> globalAccel_ = new pbc::RepeatedField<double>();
    /// <summary>
    /// double16 (glm::dmat4) global transformation matrix
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> GlobalAccel {
      get { return globalAccel_; }
    }

    /// <summary>Field number for the "properties" field.</summary>
    public const int PropertiesFieldNumber = 33;
    private static readonly pb::FieldCodec<string> _repeated_properties_codec
        = pb::FieldCodec.ForString(266);
    private readonly pbc::RepeatedField<string> properties_ = new pbc::RepeatedField<string>();
    /// <summary>
    /// serialized property-keys, used to request Vector32 or Vector64 data
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Properties {
      get { return properties_; }
    }

    /// <summary>Field number for the "media" field.</summary>
    public const int MediaFieldNumber = 34;
    private static readonly pb::FieldCodec<global::Messages.Visual> _repeated_media_codec
        = pb::FieldCodec.ForMessage(274, global::Messages.Visual.Parser);
    private readonly pbc::RepeatedField<global::Messages.Visual> media_ = new pbc::RepeatedField<global::Messages.Visual>();
    /// <summary>
    /// optional visual media populated by server
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Messages.Visual> Media {
      get { return media_; }
    }

    /// <summary>Field number for the "symbol_transform" field.</summary>
    public const int SymbolTransformFieldNumber = 35;
    private static readonly pb::FieldCodec<float> _repeated_symbolTransform_codec
        = pb::FieldCodec.ForFloat(282);
    private readonly pbc::RepeatedField<float> symbolTransform_ = new pbc::RepeatedField<float>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<float> SymbolTransform {
      get { return symbolTransform_; }
    }

    /// <summary>Field number for the "length_units" field.</summary>
    public const int LengthUnitsFieldNumber = 40;
    private uint lengthUnits_;
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint LengthUnits {
      get { return lengthUnits_; }
      set {
        lengthUnits_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Meta);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Meta other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (Uid != other.Uid) return false;
      if (Directory != other.Directory) return false;
      if (Symbol != other.Symbol) return false;
      if (Owner != other.Owner) return false;
      if (Comments != other.Comments) return false;
      if (Series != other.Series) return false;
      if (SysInfo != other.SysInfo) return false;
      if (GeomInfo != other.GeomInfo) return false;
      if (Parent != other.Parent) return false;
      if (Created != other.Created) return false;
      if (Saved != other.Saved) return false;
      if (Modified != other.Modified) return false;
      if (Iteration != other.Iteration) return false;
      if (SaveInterval != other.SaveInterval) return false;
      if (Enabled != other.Enabled) return false;
      if (Locked != other.Locked) return false;
      if (AutoSave != other.AutoSave) return false;
      if (Lightweight != other.Lightweight) return false;
      if (!object.Equals(Revision, other.Revision)) return false;
      if (!object.Equals(Version, other.Version)) return false;
      if (!object.Equals(Bounds, other.Bounds)) return false;
      if (Url != other.Url) return false;
      if (!object.Equals(Appearance, other.Appearance)) return false;
      if(!children_.Equals(other.children_)) return false;
      if(!groups_.Equals(other.groups_)) return false;
      if(!loops_.Equals(other.loops_)) return false;
      if(!surfaces_.Equals(other.surfaces_)) return false;
      if(!volumes_.Equals(other.volumes_)) return false;
      if(!globalTransform_.Equals(other.globalTransform_)) return false;
      if(!globalRate_.Equals(other.globalRate_)) return false;
      if(!globalAccel_.Equals(other.globalAccel_)) return false;
      if(!properties_.Equals(other.properties_)) return false;
      if(!media_.Equals(other.media_)) return false;
      if(!symbolTransform_.Equals(other.symbolTransform_)) return false;
      if (LengthUnits != other.LengthUnits) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      if (Uid != 0L) hash ^= Uid.GetHashCode();
      if (Directory.Length != 0) hash ^= Directory.GetHashCode();
      if (Symbol.Length != 0) hash ^= Symbol.GetHashCode();
      if (Owner.Length != 0) hash ^= Owner.GetHashCode();
      if (Comments.Length != 0) hash ^= Comments.GetHashCode();
      if (Series.Length != 0) hash ^= Series.GetHashCode();
      if (SysInfo.Length != 0) hash ^= SysInfo.GetHashCode();
      if (GeomInfo.Length != 0) hash ^= GeomInfo.GetHashCode();
      if (Parent != 0L) hash ^= Parent.GetHashCode();
      if (Created != 0L) hash ^= Created.GetHashCode();
      if (Saved != 0L) hash ^= Saved.GetHashCode();
      if (Modified != 0L) hash ^= Modified.GetHashCode();
      if (Iteration != 0UL) hash ^= Iteration.GetHashCode();
      if (SaveInterval != 0UL) hash ^= SaveInterval.GetHashCode();
      if (Enabled != false) hash ^= Enabled.GetHashCode();
      if (Locked != false) hash ^= Locked.GetHashCode();
      if (AutoSave != false) hash ^= AutoSave.GetHashCode();
      if (Lightweight != false) hash ^= Lightweight.GetHashCode();
      if (revision_ != null) hash ^= Revision.GetHashCode();
      if (version_ != null) hash ^= Version.GetHashCode();
      if (bounds_ != null) hash ^= Bounds.GetHashCode();
      if (Url.Length != 0) hash ^= Url.GetHashCode();
      if (appearance_ != null) hash ^= Appearance.GetHashCode();
      hash ^= children_.GetHashCode();
      hash ^= groups_.GetHashCode();
      hash ^= loops_.GetHashCode();
      hash ^= surfaces_.GetHashCode();
      hash ^= volumes_.GetHashCode();
      hash ^= globalTransform_.GetHashCode();
      hash ^= globalRate_.GetHashCode();
      hash ^= globalAccel_.GetHashCode();
      hash ^= properties_.GetHashCode();
      hash ^= media_.GetHashCode();
      hash ^= symbolTransform_.GetHashCode();
      if (LengthUnits != 0) hash ^= LengthUnits.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Uid != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(Uid);
      }
      if (Directory.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Directory);
      }
      if (Symbol.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Symbol);
      }
      if (Owner.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Owner);
      }
      if (Comments.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Comments);
      }
      if (Series.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Series);
      }
      if (SysInfo.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(SysInfo);
      }
      if (GeomInfo.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(GeomInfo);
      }
      if (Parent != 0L) {
        output.WriteRawTag(80);
        output.WriteInt64(Parent);
      }
      if (Created != 0L) {
        output.WriteRawTag(88);
        output.WriteInt64(Created);
      }
      if (Saved != 0L) {
        output.WriteRawTag(96);
        output.WriteInt64(Saved);
      }
      if (Modified != 0L) {
        output.WriteRawTag(104);
        output.WriteInt64(Modified);
      }
      if (Iteration != 0UL) {
        output.WriteRawTag(112);
        output.WriteUInt64(Iteration);
      }
      if (SaveInterval != 0UL) {
        output.WriteRawTag(120);
        output.WriteUInt64(SaveInterval);
      }
      if (Enabled != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(Enabled);
      }
      if (Locked != false) {
        output.WriteRawTag(136, 1);
        output.WriteBool(Locked);
      }
      if (AutoSave != false) {
        output.WriteRawTag(144, 1);
        output.WriteBool(AutoSave);
      }
      if (Lightweight != false) {
        output.WriteRawTag(152, 1);
        output.WriteBool(Lightweight);
      }
      if (revision_ != null) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(Revision);
      }
      if (version_ != null) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(Version);
      }
      if (bounds_ != null) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(Bounds);
      }
      if (Url.Length != 0) {
        output.WriteRawTag(186, 1);
        output.WriteString(Url);
      }
      if (appearance_ != null) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(Appearance);
      }
      children_.WriteTo(output, _repeated_children_codec);
      groups_.WriteTo(output, _repeated_groups_codec);
      loops_.WriteTo(output, _repeated_loops_codec);
      surfaces_.WriteTo(output, _repeated_surfaces_codec);
      volumes_.WriteTo(output, _repeated_volumes_codec);
      globalTransform_.WriteTo(output, _repeated_globalTransform_codec);
      globalRate_.WriteTo(output, _repeated_globalRate_codec);
      globalAccel_.WriteTo(output, _repeated_globalAccel_codec);
      properties_.WriteTo(output, _repeated_properties_codec);
      media_.WriteTo(output, _repeated_media_codec);
      symbolTransform_.WriteTo(output, _repeated_symbolTransform_codec);
      if (LengthUnits != 0) {
        output.WriteRawTag(192, 2);
        output.WriteUInt32(LengthUnits);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      if (Uid != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(Uid);
      }
      if (Directory.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Directory);
      }
      if (Symbol.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Symbol);
      }
      if (Owner.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(Owner);
      }
      if (Comments.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Comments);
      }
      if (Series.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Series);
      }
      if (SysInfo.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(SysInfo);
      }
      if (GeomInfo.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(GeomInfo);
      }
      if (Parent != 0L) {
        output.WriteRawTag(80);
        output.WriteInt64(Parent);
      }
      if (Created != 0L) {
        output.WriteRawTag(88);
        output.WriteInt64(Created);
      }
      if (Saved != 0L) {
        output.WriteRawTag(96);
        output.WriteInt64(Saved);
      }
      if (Modified != 0L) {
        output.WriteRawTag(104);
        output.WriteInt64(Modified);
      }
      if (Iteration != 0UL) {
        output.WriteRawTag(112);
        output.WriteUInt64(Iteration);
      }
      if (SaveInterval != 0UL) {
        output.WriteRawTag(120);
        output.WriteUInt64(SaveInterval);
      }
      if (Enabled != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(Enabled);
      }
      if (Locked != false) {
        output.WriteRawTag(136, 1);
        output.WriteBool(Locked);
      }
      if (AutoSave != false) {
        output.WriteRawTag(144, 1);
        output.WriteBool(AutoSave);
      }
      if (Lightweight != false) {
        output.WriteRawTag(152, 1);
        output.WriteBool(Lightweight);
      }
      if (revision_ != null) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(Revision);
      }
      if (version_ != null) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(Version);
      }
      if (bounds_ != null) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(Bounds);
      }
      if (Url.Length != 0) {
        output.WriteRawTag(186, 1);
        output.WriteString(Url);
      }
      if (appearance_ != null) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(Appearance);
      }
      children_.WriteTo(ref output, _repeated_children_codec);
      groups_.WriteTo(ref output, _repeated_groups_codec);
      loops_.WriteTo(ref output, _repeated_loops_codec);
      surfaces_.WriteTo(ref output, _repeated_surfaces_codec);
      volumes_.WriteTo(ref output, _repeated_volumes_codec);
      globalTransform_.WriteTo(ref output, _repeated_globalTransform_codec);
      globalRate_.WriteTo(ref output, _repeated_globalRate_codec);
      globalAccel_.WriteTo(ref output, _repeated_globalAccel_codec);
      properties_.WriteTo(ref output, _repeated_properties_codec);
      media_.WriteTo(ref output, _repeated_media_codec);
      symbolTransform_.WriteTo(ref output, _repeated_symbolTransform_codec);
      if (LengthUnits != 0) {
        output.WriteRawTag(192, 2);
        output.WriteUInt32(LengthUnits);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      if (Uid != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Uid);
      }
      if (Directory.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Directory);
      }
      if (Symbol.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Symbol);
      }
      if (Owner.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Owner);
      }
      if (Comments.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Comments);
      }
      if (Series.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Series);
      }
      if (SysInfo.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SysInfo);
      }
      if (GeomInfo.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GeomInfo);
      }
      if (Parent != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Parent);
      }
      if (Created != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Created);
      }
      if (Saved != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Saved);
      }
      if (Modified != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Modified);
      }
      if (Iteration != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Iteration);
      }
      if (SaveInterval != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SaveInterval);
      }
      if (Enabled != false) {
        size += 2 + 1;
      }
      if (Locked != false) {
        size += 2 + 1;
      }
      if (AutoSave != false) {
        size += 2 + 1;
      }
      if (Lightweight != false) {
        size += 2 + 1;
      }
      if (revision_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Revision);
      }
      if (version_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Version);
      }
      if (bounds_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Bounds);
      }
      if (Url.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(Url);
      }
      if (appearance_ != null) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Appearance);
      }
      size += children_.CalculateSize(_repeated_children_codec);
      size += groups_.CalculateSize(_repeated_groups_codec);
      size += loops_.CalculateSize(_repeated_loops_codec);
      size += surfaces_.CalculateSize(_repeated_surfaces_codec);
      size += volumes_.CalculateSize(_repeated_volumes_codec);
      size += globalTransform_.CalculateSize(_repeated_globalTransform_codec);
      size += globalRate_.CalculateSize(_repeated_globalRate_codec);
      size += globalAccel_.CalculateSize(_repeated_globalAccel_codec);
      size += properties_.CalculateSize(_repeated_properties_codec);
      size += media_.CalculateSize(_repeated_media_codec);
      size += symbolTransform_.CalculateSize(_repeated_symbolTransform_codec);
      if (LengthUnits != 0) {
        size += 2 + pb::CodedOutputStream.ComputeUInt32Size(LengthUnits);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Meta other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      if (other.Uid != 0L) {
        Uid = other.Uid;
      }
      if (other.Directory.Length != 0) {
        Directory = other.Directory;
      }
      if (other.Symbol.Length != 0) {
        Symbol = other.Symbol;
      }
      if (other.Owner.Length != 0) {
        Owner = other.Owner;
      }
      if (other.Comments.Length != 0) {
        Comments = other.Comments;
      }
      if (other.Series.Length != 0) {
        Series = other.Series;
      }
      if (other.SysInfo.Length != 0) {
        SysInfo = other.SysInfo;
      }
      if (other.GeomInfo.Length != 0) {
        GeomInfo = other.GeomInfo;
      }
      if (other.Parent != 0L) {
        Parent = other.Parent;
      }
      if (other.Created != 0L) {
        Created = other.Created;
      }
      if (other.Saved != 0L) {
        Saved = other.Saved;
      }
      if (other.Modified != 0L) {
        Modified = other.Modified;
      }
      if (other.Iteration != 0UL) {
        Iteration = other.Iteration;
      }
      if (other.SaveInterval != 0UL) {
        SaveInterval = other.SaveInterval;
      }
      if (other.Enabled != false) {
        Enabled = other.Enabled;
      }
      if (other.Locked != false) {
        Locked = other.Locked;
      }
      if (other.AutoSave != false) {
        AutoSave = other.AutoSave;
      }
      if (other.Lightweight != false) {
        Lightweight = other.Lightweight;
      }
      if (other.revision_ != null) {
        if (revision_ == null) {
          Revision = new global::Messages.Revision();
        }
        Revision.MergeFrom(other.Revision);
      }
      if (other.version_ != null) {
        if (version_ == null) {
          Version = new global::Messages.Revision();
        }
        Version.MergeFrom(other.Version);
      }
      if (other.bounds_ != null) {
        if (bounds_ == null) {
          Bounds = new global::Messages.Extrema();
        }
        Bounds.MergeFrom(other.Bounds);
      }
      if (other.Url.Length != 0) {
        Url = other.Url;
      }
      if (other.appearance_ != null) {
        if (appearance_ == null) {
          Appearance = new global::Messages.GraphicsControl();
        }
        Appearance.MergeFrom(other.Appearance);
      }
      children_.Add(other.children_);
      groups_.Add(other.groups_);
      loops_.Add(other.loops_);
      surfaces_.Add(other.surfaces_);
      volumes_.Add(other.volumes_);
      globalTransform_.Add(other.globalTransform_);
      globalRate_.Add(other.globalRate_);
      globalAccel_.Add(other.globalAccel_);
      properties_.Add(other.properties_);
      media_.Add(other.media_);
      symbolTransform_.Add(other.symbolTransform_);
      if (other.LengthUnits != 0) {
        LengthUnits = other.LengthUnits;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 16: {
            Uid = input.ReadInt64();
            break;
          }
          case 26: {
            Directory = input.ReadString();
            break;
          }
          case 34: {
            Symbol = input.ReadString();
            break;
          }
          case 42: {
            Owner = input.ReadString();
            break;
          }
          case 50: {
            Comments = input.ReadString();
            break;
          }
          case 58: {
            Series = input.ReadString();
            break;
          }
          case 66: {
            SysInfo = input.ReadString();
            break;
          }
          case 74: {
            GeomInfo = input.ReadString();
            break;
          }
          case 80: {
            Parent = input.ReadInt64();
            break;
          }
          case 88: {
            Created = input.ReadInt64();
            break;
          }
          case 96: {
            Saved = input.ReadInt64();
            break;
          }
          case 104: {
            Modified = input.ReadInt64();
            break;
          }
          case 112: {
            Iteration = input.ReadUInt64();
            break;
          }
          case 120: {
            SaveInterval = input.ReadUInt64();
            break;
          }
          case 128: {
            Enabled = input.ReadBool();
            break;
          }
          case 136: {
            Locked = input.ReadBool();
            break;
          }
          case 144: {
            AutoSave = input.ReadBool();
            break;
          }
          case 152: {
            Lightweight = input.ReadBool();
            break;
          }
          case 162: {
            if (revision_ == null) {
              Revision = new global::Messages.Revision();
            }
            input.ReadMessage(Revision);
            break;
          }
          case 170: {
            if (version_ == null) {
              Version = new global::Messages.Revision();
            }
            input.ReadMessage(Version);
            break;
          }
          case 178: {
            if (bounds_ == null) {
              Bounds = new global::Messages.Extrema();
            }
            input.ReadMessage(Bounds);
            break;
          }
          case 186: {
            Url = input.ReadString();
            break;
          }
          case 194: {
            if (appearance_ == null) {
              Appearance = new global::Messages.GraphicsControl();
            }
            input.ReadMessage(Appearance);
            break;
          }
          case 202:
          case 200: {
            children_.AddEntriesFrom(input, _repeated_children_codec);
            break;
          }
          case 210:
          case 208: {
            groups_.AddEntriesFrom(input, _repeated_groups_codec);
            break;
          }
          case 218:
          case 216: {
            loops_.AddEntriesFrom(input, _repeated_loops_codec);
            break;
          }
          case 226:
          case 224: {
            surfaces_.AddEntriesFrom(input, _repeated_surfaces_codec);
            break;
          }
          case 234:
          case 232: {
            volumes_.AddEntriesFrom(input, _repeated_volumes_codec);
            break;
          }
          case 242:
          case 241: {
            globalTransform_.AddEntriesFrom(input, _repeated_globalTransform_codec);
            break;
          }
          case 250:
          case 249: {
            globalRate_.AddEntriesFrom(input, _repeated_globalRate_codec);
            break;
          }
          case 258:
          case 257: {
            globalAccel_.AddEntriesFrom(input, _repeated_globalAccel_codec);
            break;
          }
          case 266: {
            properties_.AddEntriesFrom(input, _repeated_properties_codec);
            break;
          }
          case 274: {
            media_.AddEntriesFrom(input, _repeated_media_codec);
            break;
          }
          case 282:
          case 285: {
            symbolTransform_.AddEntriesFrom(input, _repeated_symbolTransform_codec);
            break;
          }
          case 320: {
            LengthUnits = input.ReadUInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 16: {
            Uid = input.ReadInt64();
            break;
          }
          case 26: {
            Directory = input.ReadString();
            break;
          }
          case 34: {
            Symbol = input.ReadString();
            break;
          }
          case 42: {
            Owner = input.ReadString();
            break;
          }
          case 50: {
            Comments = input.ReadString();
            break;
          }
          case 58: {
            Series = input.ReadString();
            break;
          }
          case 66: {
            SysInfo = input.ReadString();
            break;
          }
          case 74: {
            GeomInfo = input.ReadString();
            break;
          }
          case 80: {
            Parent = input.ReadInt64();
            break;
          }
          case 88: {
            Created = input.ReadInt64();
            break;
          }
          case 96: {
            Saved = input.ReadInt64();
            break;
          }
          case 104: {
            Modified = input.ReadInt64();
            break;
          }
          case 112: {
            Iteration = input.ReadUInt64();
            break;
          }
          case 120: {
            SaveInterval = input.ReadUInt64();
            break;
          }
          case 128: {
            Enabled = input.ReadBool();
            break;
          }
          case 136: {
            Locked = input.ReadBool();
            break;
          }
          case 144: {
            AutoSave = input.ReadBool();
            break;
          }
          case 152: {
            Lightweight = input.ReadBool();
            break;
          }
          case 162: {
            if (revision_ == null) {
              Revision = new global::Messages.Revision();
            }
            input.ReadMessage(Revision);
            break;
          }
          case 170: {
            if (version_ == null) {
              Version = new global::Messages.Revision();
            }
            input.ReadMessage(Version);
            break;
          }
          case 178: {
            if (bounds_ == null) {
              Bounds = new global::Messages.Extrema();
            }
            input.ReadMessage(Bounds);
            break;
          }
          case 186: {
            Url = input.ReadString();
            break;
          }
          case 194: {
            if (appearance_ == null) {
              Appearance = new global::Messages.GraphicsControl();
            }
            input.ReadMessage(Appearance);
            break;
          }
          case 202:
          case 200: {
            children_.AddEntriesFrom(ref input, _repeated_children_codec);
            break;
          }
          case 210:
          case 208: {
            groups_.AddEntriesFrom(ref input, _repeated_groups_codec);
            break;
          }
          case 218:
          case 216: {
            loops_.AddEntriesFrom(ref input, _repeated_loops_codec);
            break;
          }
          case 226:
          case 224: {
            surfaces_.AddEntriesFrom(ref input, _repeated_surfaces_codec);
            break;
          }
          case 234:
          case 232: {
            volumes_.AddEntriesFrom(ref input, _repeated_volumes_codec);
            break;
          }
          case 242:
          case 241: {
            globalTransform_.AddEntriesFrom(ref input, _repeated_globalTransform_codec);
            break;
          }
          case 250:
          case 249: {
            globalRate_.AddEntriesFrom(ref input, _repeated_globalRate_codec);
            break;
          }
          case 258:
          case 257: {
            globalAccel_.AddEntriesFrom(ref input, _repeated_globalAccel_codec);
            break;
          }
          case 266: {
            properties_.AddEntriesFrom(ref input, _repeated_properties_codec);
            break;
          }
          case 274: {
            media_.AddEntriesFrom(ref input, _repeated_media_codec);
            break;
          }
          case 282:
          case 285: {
            symbolTransform_.AddEntriesFrom(ref input, _repeated_symbolTransform_codec);
            break;
          }
          case 320: {
            LengthUnits = input.ReadUInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class SliceControl : pb::IMessage<SliceControl>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SliceControl> _parser = new pb::MessageParser<SliceControl>(() => new SliceControl());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SliceControl> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MetaReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SliceControl() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SliceControl(SliceControl other) : this() {
      name_ = other.name_;
      center_ = other.center_.Clone();
      normal_ = other.normal_.Clone();
      intersect_ = other.intersect_;
      negative_ = other.negative_;
      positive_ = other.positive_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SliceControl Clone() {
      return new SliceControl(this);
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "center" field.</summary>
    public const int CenterFieldNumber = 2;
    private static readonly pb::FieldCodec<double> _repeated_center_codec
        = pb::FieldCodec.ForDouble(18);
    private readonly pbc::RepeatedField<double> center_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> Center {
      get { return center_; }
    }

    /// <summary>Field number for the "normal" field.</summary>
    public const int NormalFieldNumber = 3;
    private static readonly pb::FieldCodec<double> _repeated_normal_codec
        = pb::FieldCodec.ForDouble(26);
    private readonly pbc::RepeatedField<double> normal_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> Normal {
      get { return normal_; }
    }

    /// <summary>Field number for the "intersect" field.</summary>
    public const int IntersectFieldNumber = 4;
    private bool intersect_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Intersect {
      get { return intersect_; }
      set {
        intersect_ = value;
      }
    }

    /// <summary>Field number for the "negative" field.</summary>
    public const int NegativeFieldNumber = 5;
    private bool negative_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Negative {
      get { return negative_; }
      set {
        negative_ = value;
      }
    }

    /// <summary>Field number for the "positive" field.</summary>
    public const int PositiveFieldNumber = 6;
    private bool positive_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Positive {
      get { return positive_; }
      set {
        positive_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SliceControl);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SliceControl other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if(!center_.Equals(other.center_)) return false;
      if(!normal_.Equals(other.normal_)) return false;
      if (Intersect != other.Intersect) return false;
      if (Negative != other.Negative) return false;
      if (Positive != other.Positive) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      hash ^= center_.GetHashCode();
      hash ^= normal_.GetHashCode();
      if (Intersect != false) hash ^= Intersect.GetHashCode();
      if (Negative != false) hash ^= Negative.GetHashCode();
      if (Positive != false) hash ^= Positive.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      center_.WriteTo(output, _repeated_center_codec);
      normal_.WriteTo(output, _repeated_normal_codec);
      if (Intersect != false) {
        output.WriteRawTag(32);
        output.WriteBool(Intersect);
      }
      if (Negative != false) {
        output.WriteRawTag(40);
        output.WriteBool(Negative);
      }
      if (Positive != false) {
        output.WriteRawTag(48);
        output.WriteBool(Positive);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      center_.WriteTo(ref output, _repeated_center_codec);
      normal_.WriteTo(ref output, _repeated_normal_codec);
      if (Intersect != false) {
        output.WriteRawTag(32);
        output.WriteBool(Intersect);
      }
      if (Negative != false) {
        output.WriteRawTag(40);
        output.WriteBool(Negative);
      }
      if (Positive != false) {
        output.WriteRawTag(48);
        output.WriteBool(Positive);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += center_.CalculateSize(_repeated_center_codec);
      size += normal_.CalculateSize(_repeated_normal_codec);
      if (Intersect != false) {
        size += 1 + 1;
      }
      if (Negative != false) {
        size += 1 + 1;
      }
      if (Positive != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SliceControl other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      center_.Add(other.center_);
      normal_.Add(other.normal_);
      if (other.Intersect != false) {
        Intersect = other.Intersect;
      }
      if (other.Negative != false) {
        Negative = other.Negative;
      }
      if (other.Positive != false) {
        Positive = other.Positive;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18:
          case 17: {
            center_.AddEntriesFrom(input, _repeated_center_codec);
            break;
          }
          case 26:
          case 25: {
            normal_.AddEntriesFrom(input, _repeated_normal_codec);
            break;
          }
          case 32: {
            Intersect = input.ReadBool();
            break;
          }
          case 40: {
            Negative = input.ReadBool();
            break;
          }
          case 48: {
            Positive = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18:
          case 17: {
            center_.AddEntriesFrom(ref input, _repeated_center_codec);
            break;
          }
          case 26:
          case 25: {
            normal_.AddEntriesFrom(ref input, _repeated_normal_codec);
            break;
          }
          case 32: {
            Intersect = input.ReadBool();
            break;
          }
          case 40: {
            Negative = input.ReadBool();
            break;
          }
          case 48: {
            Positive = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  public sealed partial class CameraControl : pb::IMessage<CameraControl>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CameraControl> _parser = new pb::MessageParser<CameraControl>(() => new CameraControl());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CameraControl> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Messages.MetaReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CameraControl() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CameraControl(CameraControl other) : this() {
      subject_ = other.subject_.Clone();
      offset_ = other.offset_.Clone();
      angle_ = other.angle_.Clone();
      sceneTime_ = other.sceneTime_;
      magnification_ = other.magnification_;
      timeConstant_ = other.timeConstant_;
      panSensitivity_ = other.panSensitivity_;
      rotationSensitivity_ = other.rotationSensitivity_;
      zoomSensitivity_ = other.zoomSensitivity_;
      znear_ = other.znear_;
      zfar_ = other.zfar_;
      aov_ = other.aov_;
      resolution_ = other.resolution_.Clone();
      perspective_ = other.perspective_;
      smooth_ = other.smooth_;
      orbit_ = other.orbit_;
      follow_ = other.follow_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CameraControl Clone() {
      return new CameraControl(this);
    }

    /// <summary>Field number for the "subject" field.</summary>
    public const int SubjectFieldNumber = 1;
    private static readonly pb::FieldCodec<float> _repeated_subject_codec
        = pb::FieldCodec.ForFloat(10);
    private readonly pbc::RepeatedField<float> subject_ = new pbc::RepeatedField<float>();
    /// <summary>
    ///global position of interest that is being tracked, xyz of length 3
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<float> Subject {
      get { return subject_; }
    }

    /// <summary>Field number for the "offset" field.</summary>
    public const int OffsetFieldNumber = 2;
    private static readonly pb::FieldCodec<float> _repeated_offset_codec
        = pb::FieldCodec.ForFloat(18);
    private readonly pbc::RepeatedField<float> offset_ = new pbc::RepeatedField<float>();
    /// <summary>
    ///global offset that camera might be centered on, dydxdz of length 3
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<float> Offset {
      get { return offset_; }
    }

    /// <summary>Field number for the "angle" field.</summary>
    public const int AngleFieldNumber = 3;
    private static readonly pb::FieldCodec<float> _repeated_angle_codec
        = pb::FieldCodec.ForFloat(26);
    private readonly pbc::RepeatedField<float> angle_ = new pbc::RepeatedField<float>();
    /// <summary>
    ///viewer/camera angle, of length 3 (6 for future stereoscopic)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<float> Angle {
      get { return angle_; }
    }

    /// <summary>Field number for the "scene_time" field.</summary>
    public const int SceneTimeFieldNumber = 4;
    private float sceneTime_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float SceneTime {
      get { return sceneTime_; }
      set {
        sceneTime_ = value;
      }
    }

    /// <summary>Field number for the "magnification" field.</summary>
    public const int MagnificationFieldNumber = 5;
    private float magnification_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Magnification {
      get { return magnification_; }
      set {
        magnification_ = value;
      }
    }

    /// <summary>Field number for the "time_constant" field.</summary>
    public const int TimeConstantFieldNumber = 6;
    private float timeConstant_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float TimeConstant {
      get { return timeConstant_; }
      set {
        timeConstant_ = value;
      }
    }

    /// <summary>Field number for the "pan_sensitivity" field.</summary>
    public const int PanSensitivityFieldNumber = 7;
    private float panSensitivity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float PanSensitivity {
      get { return panSensitivity_; }
      set {
        panSensitivity_ = value;
      }
    }

    /// <summary>Field number for the "rotation_sensitivity" field.</summary>
    public const int RotationSensitivityFieldNumber = 8;
    private float rotationSensitivity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float RotationSensitivity {
      get { return rotationSensitivity_; }
      set {
        rotationSensitivity_ = value;
      }
    }

    /// <summary>Field number for the "zoom_sensitivity" field.</summary>
    public const int ZoomSensitivityFieldNumber = 9;
    private float zoomSensitivity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float ZoomSensitivity {
      get { return zoomSensitivity_; }
      set {
        zoomSensitivity_ = value;
      }
    }

    /// <summary>Field number for the "znear" field.</summary>
    public const int ZnearFieldNumber = 10;
    private float znear_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Znear {
      get { return znear_; }
      set {
        znear_ = value;
      }
    }

    /// <summary>Field number for the "zfar" field.</summary>
    public const int ZfarFieldNumber = 11;
    private float zfar_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Zfar {
      get { return zfar_; }
      set {
        zfar_ = value;
      }
    }

    /// <summary>Field number for the "aov" field.</summary>
    public const int AovFieldNumber = 12;
    private float aov_;
    /// <summary>
    /// angle of view of focal lens (perspective mode)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float Aov {
      get { return aov_; }
      set {
        aov_ = value;
      }
    }

    /// <summary>Field number for the "resolution" field.</summary>
    public const int ResolutionFieldNumber = 13;
    private static readonly pb::FieldCodec<uint> _repeated_resolution_codec
        = pb::FieldCodec.ForUInt32(106);
    private readonly pbc::RepeatedField<uint> resolution_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<uint> Resolution {
      get { return resolution_; }
    }

    /// <summary>Field number for the "perspective" field.</summary>
    public const int PerspectiveFieldNumber = 15;
    private bool perspective_;
    /// <summary>
    ///reserved
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Perspective {
      get { return perspective_; }
      set {
        perspective_ = value;
      }
    }

    /// <summary>Field number for the "smooth" field.</summary>
    public const int SmoothFieldNumber = 16;
    private bool smooth_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Smooth {
      get { return smooth_; }
      set {
        smooth_ = value;
      }
    }

    /// <summary>Field number for the "orbit" field.</summary>
    public const int OrbitFieldNumber = 17;
    private bool orbit_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Orbit {
      get { return orbit_; }
      set {
        orbit_ = value;
      }
    }

    /// <summary>Field number for the "follow" field.</summary>
    public const int FollowFieldNumber = 18;
    private bool follow_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Follow {
      get { return follow_; }
      set {
        follow_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CameraControl);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CameraControl other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!subject_.Equals(other.subject_)) return false;
      if(!offset_.Equals(other.offset_)) return false;
      if(!angle_.Equals(other.angle_)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(SceneTime, other.SceneTime)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Magnification, other.Magnification)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(TimeConstant, other.TimeConstant)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(PanSensitivity, other.PanSensitivity)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(RotationSensitivity, other.RotationSensitivity)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(ZoomSensitivity, other.ZoomSensitivity)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Znear, other.Znear)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Zfar, other.Zfar)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Aov, other.Aov)) return false;
      if(!resolution_.Equals(other.resolution_)) return false;
      if (Perspective != other.Perspective) return false;
      if (Smooth != other.Smooth) return false;
      if (Orbit != other.Orbit) return false;
      if (Follow != other.Follow) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= subject_.GetHashCode();
      hash ^= offset_.GetHashCode();
      hash ^= angle_.GetHashCode();
      if (SceneTime != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(SceneTime);
      if (Magnification != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Magnification);
      if (TimeConstant != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(TimeConstant);
      if (PanSensitivity != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(PanSensitivity);
      if (RotationSensitivity != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(RotationSensitivity);
      if (ZoomSensitivity != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(ZoomSensitivity);
      if (Znear != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Znear);
      if (Zfar != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Zfar);
      if (Aov != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Aov);
      hash ^= resolution_.GetHashCode();
      if (Perspective != false) hash ^= Perspective.GetHashCode();
      if (Smooth != false) hash ^= Smooth.GetHashCode();
      if (Orbit != false) hash ^= Orbit.GetHashCode();
      if (Follow != false) hash ^= Follow.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      subject_.WriteTo(output, _repeated_subject_codec);
      offset_.WriteTo(output, _repeated_offset_codec);
      angle_.WriteTo(output, _repeated_angle_codec);
      if (SceneTime != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(SceneTime);
      }
      if (Magnification != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Magnification);
      }
      if (TimeConstant != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(TimeConstant);
      }
      if (PanSensitivity != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(PanSensitivity);
      }
      if (RotationSensitivity != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(RotationSensitivity);
      }
      if (ZoomSensitivity != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(ZoomSensitivity);
      }
      if (Znear != 0F) {
        output.WriteRawTag(85);
        output.WriteFloat(Znear);
      }
      if (Zfar != 0F) {
        output.WriteRawTag(93);
        output.WriteFloat(Zfar);
      }
      if (Aov != 0F) {
        output.WriteRawTag(101);
        output.WriteFloat(Aov);
      }
      resolution_.WriteTo(output, _repeated_resolution_codec);
      if (Perspective != false) {
        output.WriteRawTag(120);
        output.WriteBool(Perspective);
      }
      if (Smooth != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(Smooth);
      }
      if (Orbit != false) {
        output.WriteRawTag(136, 1);
        output.WriteBool(Orbit);
      }
      if (Follow != false) {
        output.WriteRawTag(144, 1);
        output.WriteBool(Follow);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      subject_.WriteTo(ref output, _repeated_subject_codec);
      offset_.WriteTo(ref output, _repeated_offset_codec);
      angle_.WriteTo(ref output, _repeated_angle_codec);
      if (SceneTime != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(SceneTime);
      }
      if (Magnification != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Magnification);
      }
      if (TimeConstant != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(TimeConstant);
      }
      if (PanSensitivity != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(PanSensitivity);
      }
      if (RotationSensitivity != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(RotationSensitivity);
      }
      if (ZoomSensitivity != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(ZoomSensitivity);
      }
      if (Znear != 0F) {
        output.WriteRawTag(85);
        output.WriteFloat(Znear);
      }
      if (Zfar != 0F) {
        output.WriteRawTag(93);
        output.WriteFloat(Zfar);
      }
      if (Aov != 0F) {
        output.WriteRawTag(101);
        output.WriteFloat(Aov);
      }
      resolution_.WriteTo(ref output, _repeated_resolution_codec);
      if (Perspective != false) {
        output.WriteRawTag(120);
        output.WriteBool(Perspective);
      }
      if (Smooth != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(Smooth);
      }
      if (Orbit != false) {
        output.WriteRawTag(136, 1);
        output.WriteBool(Orbit);
      }
      if (Follow != false) {
        output.WriteRawTag(144, 1);
        output.WriteBool(Follow);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += subject_.CalculateSize(_repeated_subject_codec);
      size += offset_.CalculateSize(_repeated_offset_codec);
      size += angle_.CalculateSize(_repeated_angle_codec);
      if (SceneTime != 0F) {
        size += 1 + 4;
      }
      if (Magnification != 0F) {
        size += 1 + 4;
      }
      if (TimeConstant != 0F) {
        size += 1 + 4;
      }
      if (PanSensitivity != 0F) {
        size += 1 + 4;
      }
      if (RotationSensitivity != 0F) {
        size += 1 + 4;
      }
      if (ZoomSensitivity != 0F) {
        size += 1 + 4;
      }
      if (Znear != 0F) {
        size += 1 + 4;
      }
      if (Zfar != 0F) {
        size += 1 + 4;
      }
      if (Aov != 0F) {
        size += 1 + 4;
      }
      size += resolution_.CalculateSize(_repeated_resolution_codec);
      if (Perspective != false) {
        size += 1 + 1;
      }
      if (Smooth != false) {
        size += 2 + 1;
      }
      if (Orbit != false) {
        size += 2 + 1;
      }
      if (Follow != false) {
        size += 2 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CameraControl other) {
      if (other == null) {
        return;
      }
      subject_.Add(other.subject_);
      offset_.Add(other.offset_);
      angle_.Add(other.angle_);
      if (other.SceneTime != 0F) {
        SceneTime = other.SceneTime;
      }
      if (other.Magnification != 0F) {
        Magnification = other.Magnification;
      }
      if (other.TimeConstant != 0F) {
        TimeConstant = other.TimeConstant;
      }
      if (other.PanSensitivity != 0F) {
        PanSensitivity = other.PanSensitivity;
      }
      if (other.RotationSensitivity != 0F) {
        RotationSensitivity = other.RotationSensitivity;
      }
      if (other.ZoomSensitivity != 0F) {
        ZoomSensitivity = other.ZoomSensitivity;
      }
      if (other.Znear != 0F) {
        Znear = other.Znear;
      }
      if (other.Zfar != 0F) {
        Zfar = other.Zfar;
      }
      if (other.Aov != 0F) {
        Aov = other.Aov;
      }
      resolution_.Add(other.resolution_);
      if (other.Perspective != false) {
        Perspective = other.Perspective;
      }
      if (other.Smooth != false) {
        Smooth = other.Smooth;
      }
      if (other.Orbit != false) {
        Orbit = other.Orbit;
      }
      if (other.Follow != false) {
        Follow = other.Follow;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10:
          case 13: {
            subject_.AddEntriesFrom(input, _repeated_subject_codec);
            break;
          }
          case 18:
          case 21: {
            offset_.AddEntriesFrom(input, _repeated_offset_codec);
            break;
          }
          case 26:
          case 29: {
            angle_.AddEntriesFrom(input, _repeated_angle_codec);
            break;
          }
          case 37: {
            SceneTime = input.ReadFloat();
            break;
          }
          case 45: {
            Magnification = input.ReadFloat();
            break;
          }
          case 53: {
            TimeConstant = input.ReadFloat();
            break;
          }
          case 61: {
            PanSensitivity = input.ReadFloat();
            break;
          }
          case 69: {
            RotationSensitivity = input.ReadFloat();
            break;
          }
          case 77: {
            ZoomSensitivity = input.ReadFloat();
            break;
          }
          case 85: {
            Znear = input.ReadFloat();
            break;
          }
          case 93: {
            Zfar = input.ReadFloat();
            break;
          }
          case 101: {
            Aov = input.ReadFloat();
            break;
          }
          case 106:
          case 104: {
            resolution_.AddEntriesFrom(input, _repeated_resolution_codec);
            break;
          }
          case 120: {
            Perspective = input.ReadBool();
            break;
          }
          case 128: {
            Smooth = input.ReadBool();
            break;
          }
          case 136: {
            Orbit = input.ReadBool();
            break;
          }
          case 144: {
            Follow = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10:
          case 13: {
            subject_.AddEntriesFrom(ref input, _repeated_subject_codec);
            break;
          }
          case 18:
          case 21: {
            offset_.AddEntriesFrom(ref input, _repeated_offset_codec);
            break;
          }
          case 26:
          case 29: {
            angle_.AddEntriesFrom(ref input, _repeated_angle_codec);
            break;
          }
          case 37: {
            SceneTime = input.ReadFloat();
            break;
          }
          case 45: {
            Magnification = input.ReadFloat();
            break;
          }
          case 53: {
            TimeConstant = input.ReadFloat();
            break;
          }
          case 61: {
            PanSensitivity = input.ReadFloat();
            break;
          }
          case 69: {
            RotationSensitivity = input.ReadFloat();
            break;
          }
          case 77: {
            ZoomSensitivity = input.ReadFloat();
            break;
          }
          case 85: {
            Znear = input.ReadFloat();
            break;
          }
          case 93: {
            Zfar = input.ReadFloat();
            break;
          }
          case 101: {
            Aov = input.ReadFloat();
            break;
          }
          case 106:
          case 104: {
            resolution_.AddEntriesFrom(ref input, _repeated_resolution_codec);
            break;
          }
          case 120: {
            Perspective = input.ReadBool();
            break;
          }
          case 128: {
            Smooth = input.ReadBool();
            break;
          }
          case 136: {
            Orbit = input.ReadBool();
            break;
          }
          case 144: {
            Follow = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
