// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: circuits_v1/circuit_node_data.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#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 RecRoom.CircuitsV1.Protobuf {

  /// <summary>Holder for reflection information generated from circuits_v1/circuit_node_data.proto</summary>
  public static partial class CircuitNodeDataReflection {

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

    static CircuitNodeDataReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiNjaXJjdWl0c192MS9jaXJjdWl0X25vZGVfZGF0YS5wcm90bxILY2lyY3Vp",
            "dHNfdjEaI2NpcmN1aXRzX3YxL2NpcmN1aXRfbGlua19kYXRhLnByb3RvGiVj",
            "aXJjdWl0c192MS9ub2RlX3RyYW5zZm9ybV9kYXRhLnByb3RvGhtjaXJjdWl0",
            "c192MS9zbG90X2RhdGEucHJvdG8i1gQKD0NpcmN1aXROb2RlRGF0YRIRCglu",
            "b2RlX25hbWUYASABKAkSDwoHbm9kZV9pZBgCIAEoBRIWCg5wYWlyZWRfbm9k",
            "ZV9pZBgDIAEoBRIRCglub2RlX3R5cGUYBCABKAwSMwoNY2lyY3VpdF9saW5r",
            "cxgGIAMoCzIcLmNpcmN1aXRzX3YxLkNpcmN1aXRMaW5rRGF0YRI2Cg50cmFu",
            "c2Zvcm1fZGF0YRgHIAEoCzIeLmNpcmN1aXRzX3YxLk5vZGVUcmFuc2Zvcm1E",
            "YXRhEjsKE2ludGVybmFsX2dyYXBoX2RhdGEYCCABKAsyHi5jaXJjdWl0c192",
            "MS5JbnRlcm5hbEdyYXBoRGF0YRInCghzbG90RGF0YRgJIAMoCzIVLmNpcmN1",
            "aXRzX3YxLlNsb3REYXRhEgwKBG1vZGUYCiABKAUSOQoSc2VsZWN0b3Jfbm9k",
            "ZV9kYXRhGAsgASgLMh0uY2lyY3VpdHNfdjEuU2VsZWN0b3JOb2RlRGF0YRIV",
            "Cg1hZHZhbmNlZF9tb2RlGAwgASgIEhEKCXRpbWVfdW5pdBgNIAEoBRIPCgdy",
            "b2xlX2lkGA4gASgFEj4KEnN0YXRlX21hY2hpbmVfZGF0YRgPIAMoCzIiLmNp",
            "cmN1aXRzX3YxLlN0YXRlTWFjaGluZVN0YXRlRGF0YRIVCg1kZWZhdWx0X2lu",
            "ZGV4GBAgASgFEjMKFGRlZmF1bHRJbnB1dFNsb3REYXRhGBEgAygLMhUuY2ly",
            "Y3VpdHNfdjEuU2xvdERhdGESEQoJcm9sZV9ndWlkGBIgASgJImQKEFNlbGVj",
            "dG9yTm9kZURhdGESEQoJZXZhbF9tb2RlGAEgASgFEj0KFHNlbGVjdG9yX2Nv",
            "bmZpZ19kYXRhGAIgAygLMh8uY2lyY3VpdHNfdjEuU2VsZWN0b3JDb25maWdE",
            "YXRhIoIBChFJbnRlcm5hbEdyYXBoRGF0YRIVCg1pbnB1dF9ub2RlX2lkGAEg",
            "ASgFEhYKDm91dHB1dF9ub2RlX2lkGAIgASgFEj4KE2ludGVybmFsX25vZGVf",
            "Z3JhcGgYAyABKAsyIS5jaXJjdWl0c192MS5DaXJjdWl0Tm9kZUdyYXBoRGF0",
            "YSK1AQoUQ2lyY3VpdE5vZGVHcmFwaERhdGESFwoPbm9kZV9ncmFwaF9ndWlk",
            "GAEgASgMEhkKEWlzX2ludGVybmFsX2dyYXBoGAIgASgIEjQKDnJvb3Rfbm9k",
            "ZV9kYXRhGAMgASgLMhwuY2lyY3VpdHNfdjEuQ2lyY3VpdE5vZGVEYXRhEjMK",
            "DWNpcmN1aXRfbm9kZXMYBCADKAsyHC5jaXJjdWl0c192MS5DaXJjdWl0Tm9k",
            "ZURhdGEiUwoeQ2lyY3VpdE5vZGVHcmFwaENvbGxlY3Rpb25EYXRhEjEKBmdy",
            "YXBocxgBIAMoCzIhLmNpcmN1aXRzX3YxLkNpcmN1aXROb2RlR3JhcGhEYXRh",
            "IkEKElNlbGVjdG9yQ29uZmlnRGF0YRIUCgxjb21wYXJlX21vZGUYASABKAUS",
            "FQoNY29tcGFyZV92YWx1ZRgCIAEoBSK1AQoVU3RhdGVNYWNoaW5lU3RhdGVE",
            "YXRhEgwKBHZhbDEYASABKAUSDAoEdmFsMhgCIAEoBRIMCgR2YWwzGAMgASgF",
            "EkYKFXN0YXRlX3RyYW5zaXRpb25fZGF0YRgEIAMoCzInLmNpcmN1aXRzX3Yx",
            "LlN0YXRlTWFjaGluZVRyYW5zaXRpb25EYXRhEhkKEW1pbl90aW1lX2luX3N0",
            "YXRlGAUgASgFEg8KB3JlbW92ZWQYBiABKAUiRgoaU3RhdGVNYWNoaW5lVHJh",
            "bnNpdGlvbkRhdGESEwoLaW5wdXRfaW5kZXgYASABKAUSEwoLc3RhdGVfaW5k",
            "ZXgYAiABKAVCHqoCG1JlY1Jvb20uQ2lyY3VpdHNWMS5Qcm90b2J1ZmIGcHJv",
            "dG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::RecRoom.CircuitsV1.Protobuf.CircuitLinkDataReflection.Descriptor, global::RecRoom.CircuitsV1.Protobuf.NodeTransformDataReflection.Descriptor, global::RecRoom.CircuitsV1.Protobuf.SlotDataReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData), global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData.Parser, new[]{ "NodeName", "NodeId", "PairedNodeId", "NodeType", "CircuitLinks", "TransformData", "InternalGraphData", "SlotData", "Mode", "SelectorNodeData", "AdvancedMode", "TimeUnit", "RoleId", "StateMachineData", "DefaultIndex", "DefaultInputSlotData", "RoleGuid" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.CircuitsV1.Protobuf.SelectorNodeData), global::RecRoom.CircuitsV1.Protobuf.SelectorNodeData.Parser, new[]{ "EvalMode", "SelectorConfigData" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.CircuitsV1.Protobuf.InternalGraphData), global::RecRoom.CircuitsV1.Protobuf.InternalGraphData.Parser, new[]{ "InputNodeId", "OutputNodeId", "InternalNodeGraph" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData), global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData.Parser, new[]{ "NodeGraphGuid", "IsInternalGraph", "RootNodeData", "CircuitNodes" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphCollectionData), global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphCollectionData.Parser, new[]{ "Graphs" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.CircuitsV1.Protobuf.SelectorConfigData), global::RecRoom.CircuitsV1.Protobuf.SelectorConfigData.Parser, new[]{ "CompareMode", "CompareValue" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.CircuitsV1.Protobuf.StateMachineStateData), global::RecRoom.CircuitsV1.Protobuf.StateMachineStateData.Parser, new[]{ "Val1", "Val2", "Val3", "StateTransitionData", "MinTimeInState", "Removed" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::RecRoom.CircuitsV1.Protobuf.StateMachineTransitionData), global::RecRoom.CircuitsV1.Protobuf.StateMachineTransitionData.Parser, new[]{ "InputIndex", "StateIndex" }, null, null, null, null)
          }));
    }
    #endregion

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.CircuitsV1.Protobuf.CircuitNodeDataReflection.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 CircuitNodeData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitNodeData(CircuitNodeData other) : this() {
      nodeName_ = other.nodeName_;
      nodeId_ = other.nodeId_;
      pairedNodeId_ = other.pairedNodeId_;
      nodeType_ = other.nodeType_;
      circuitLinks_ = other.circuitLinks_.Clone();
      transformData_ = other.transformData_ != null ? other.transformData_.Clone() : null;
      internalGraphData_ = other.internalGraphData_ != null ? other.internalGraphData_.Clone() : null;
      slotData_ = other.slotData_.Clone();
      mode_ = other.mode_;
      selectorNodeData_ = other.selectorNodeData_ != null ? other.selectorNodeData_.Clone() : null;
      advancedMode_ = other.advancedMode_;
      timeUnit_ = other.timeUnit_;
      roleId_ = other.roleId_;
      stateMachineData_ = other.stateMachineData_.Clone();
      defaultIndex_ = other.defaultIndex_;
      defaultInputSlotData_ = other.defaultInputSlotData_.Clone();
      roleGuid_ = other.roleGuid_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

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

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

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

    /// <summary>Field number for the "node_type" field.</summary>
    public const int NodeTypeFieldNumber = 4;
    private pb::ByteString nodeType_ = pb::ByteString.Empty;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString NodeType {
      get { return nodeType_; }
      set {
        nodeType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "circuit_links" field.</summary>
    public const int CircuitLinksFieldNumber = 6;
    private static readonly pb::FieldCodec<global::RecRoom.CircuitsV1.Protobuf.CircuitLinkData> _repeated_circuitLinks_codec
        = pb::FieldCodec.ForMessage(50, global::RecRoom.CircuitsV1.Protobuf.CircuitLinkData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.CircuitLinkData> circuitLinks_ = new pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.CircuitLinkData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.CircuitLinkData> CircuitLinks {
      get { return circuitLinks_; }
    }

    /// <summary>Field number for the "transform_data" field.</summary>
    public const int TransformDataFieldNumber = 7;
    private global::RecRoom.CircuitsV1.Protobuf.NodeTransformData transformData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.CircuitsV1.Protobuf.NodeTransformData TransformData {
      get { return transformData_; }
      set {
        transformData_ = value;
      }
    }

    /// <summary>Field number for the "internal_graph_data" field.</summary>
    public const int InternalGraphDataFieldNumber = 8;
    private global::RecRoom.CircuitsV1.Protobuf.InternalGraphData internalGraphData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.CircuitsV1.Protobuf.InternalGraphData InternalGraphData {
      get { return internalGraphData_; }
      set {
        internalGraphData_ = value;
      }
    }

    /// <summary>Field number for the "slotData" field.</summary>
    public const int SlotDataFieldNumber = 9;
    private static readonly pb::FieldCodec<global::RecRoom.CircuitsV1.Protobuf.SlotData> _repeated_slotData_codec
        = pb::FieldCodec.ForMessage(74, global::RecRoom.CircuitsV1.Protobuf.SlotData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.SlotData> slotData_ = new pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.SlotData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.SlotData> SlotData {
      get { return slotData_; }
    }

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

    /// <summary>Field number for the "selector_node_data" field.</summary>
    public const int SelectorNodeDataFieldNumber = 11;
    private global::RecRoom.CircuitsV1.Protobuf.SelectorNodeData selectorNodeData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.CircuitsV1.Protobuf.SelectorNodeData SelectorNodeData {
      get { return selectorNodeData_; }
      set {
        selectorNodeData_ = value;
      }
    }

    /// <summary>Field number for the "advanced_mode" field.</summary>
    public const int AdvancedModeFieldNumber = 12;
    private bool advancedMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool AdvancedMode {
      get { return advancedMode_; }
      set {
        advancedMode_ = value;
      }
    }

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

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

    /// <summary>Field number for the "state_machine_data" field.</summary>
    public const int StateMachineDataFieldNumber = 15;
    private static readonly pb::FieldCodec<global::RecRoom.CircuitsV1.Protobuf.StateMachineStateData> _repeated_stateMachineData_codec
        = pb::FieldCodec.ForMessage(122, global::RecRoom.CircuitsV1.Protobuf.StateMachineStateData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.StateMachineStateData> stateMachineData_ = new pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.StateMachineStateData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.StateMachineStateData> StateMachineData {
      get { return stateMachineData_; }
    }

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

    /// <summary>Field number for the "defaultInputSlotData" field.</summary>
    public const int DefaultInputSlotDataFieldNumber = 17;
    private static readonly pb::FieldCodec<global::RecRoom.CircuitsV1.Protobuf.SlotData> _repeated_defaultInputSlotData_codec
        = pb::FieldCodec.ForMessage(138, global::RecRoom.CircuitsV1.Protobuf.SlotData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.SlotData> defaultInputSlotData_ = new pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.SlotData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.SlotData> DefaultInputSlotData {
      get { return defaultInputSlotData_; }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CircuitNodeData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (NodeName != other.NodeName) return false;
      if (NodeId != other.NodeId) return false;
      if (PairedNodeId != other.PairedNodeId) return false;
      if (NodeType != other.NodeType) return false;
      if(!circuitLinks_.Equals(other.circuitLinks_)) return false;
      if (!object.Equals(TransformData, other.TransformData)) return false;
      if (!object.Equals(InternalGraphData, other.InternalGraphData)) return false;
      if(!slotData_.Equals(other.slotData_)) return false;
      if (Mode != other.Mode) return false;
      if (!object.Equals(SelectorNodeData, other.SelectorNodeData)) return false;
      if (AdvancedMode != other.AdvancedMode) return false;
      if (TimeUnit != other.TimeUnit) return false;
      if (RoleId != other.RoleId) return false;
      if(!stateMachineData_.Equals(other.stateMachineData_)) return false;
      if (DefaultIndex != other.DefaultIndex) return false;
      if(!defaultInputSlotData_.Equals(other.defaultInputSlotData_)) return false;
      if (RoleGuid != other.RoleGuid) 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 (NodeName.Length != 0) hash ^= NodeName.GetHashCode();
      if (NodeId != 0) hash ^= NodeId.GetHashCode();
      if (PairedNodeId != 0) hash ^= PairedNodeId.GetHashCode();
      if (NodeType.Length != 0) hash ^= NodeType.GetHashCode();
      hash ^= circuitLinks_.GetHashCode();
      if (transformData_ != null) hash ^= TransformData.GetHashCode();
      if (internalGraphData_ != null) hash ^= InternalGraphData.GetHashCode();
      hash ^= slotData_.GetHashCode();
      if (Mode != 0) hash ^= Mode.GetHashCode();
      if (selectorNodeData_ != null) hash ^= SelectorNodeData.GetHashCode();
      if (AdvancedMode != false) hash ^= AdvancedMode.GetHashCode();
      if (TimeUnit != 0) hash ^= TimeUnit.GetHashCode();
      if (RoleId != 0) hash ^= RoleId.GetHashCode();
      hash ^= stateMachineData_.GetHashCode();
      if (DefaultIndex != 0) hash ^= DefaultIndex.GetHashCode();
      hash ^= defaultInputSlotData_.GetHashCode();
      if (RoleGuid.Length != 0) hash ^= RoleGuid.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 (NodeName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(NodeName);
      }
      if (NodeId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(NodeId);
      }
      if (PairedNodeId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(PairedNodeId);
      }
      if (NodeType.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(NodeType);
      }
      circuitLinks_.WriteTo(output, _repeated_circuitLinks_codec);
      if (transformData_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(TransformData);
      }
      if (internalGraphData_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(InternalGraphData);
      }
      slotData_.WriteTo(output, _repeated_slotData_codec);
      if (Mode != 0) {
        output.WriteRawTag(80);
        output.WriteInt32(Mode);
      }
      if (selectorNodeData_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(SelectorNodeData);
      }
      if (AdvancedMode != false) {
        output.WriteRawTag(96);
        output.WriteBool(AdvancedMode);
      }
      if (TimeUnit != 0) {
        output.WriteRawTag(104);
        output.WriteInt32(TimeUnit);
      }
      if (RoleId != 0) {
        output.WriteRawTag(112);
        output.WriteInt32(RoleId);
      }
      stateMachineData_.WriteTo(output, _repeated_stateMachineData_codec);
      if (DefaultIndex != 0) {
        output.WriteRawTag(128, 1);
        output.WriteInt32(DefaultIndex);
      }
      defaultInputSlotData_.WriteTo(output, _repeated_defaultInputSlotData_codec);
      if (RoleGuid.Length != 0) {
        output.WriteRawTag(146, 1);
        output.WriteString(RoleGuid);
      }
      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 (NodeName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(NodeName);
      }
      if (NodeId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(NodeId);
      }
      if (PairedNodeId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(PairedNodeId);
      }
      if (NodeType.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(NodeType);
      }
      circuitLinks_.WriteTo(ref output, _repeated_circuitLinks_codec);
      if (transformData_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(TransformData);
      }
      if (internalGraphData_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(InternalGraphData);
      }
      slotData_.WriteTo(ref output, _repeated_slotData_codec);
      if (Mode != 0) {
        output.WriteRawTag(80);
        output.WriteInt32(Mode);
      }
      if (selectorNodeData_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(SelectorNodeData);
      }
      if (AdvancedMode != false) {
        output.WriteRawTag(96);
        output.WriteBool(AdvancedMode);
      }
      if (TimeUnit != 0) {
        output.WriteRawTag(104);
        output.WriteInt32(TimeUnit);
      }
      if (RoleId != 0) {
        output.WriteRawTag(112);
        output.WriteInt32(RoleId);
      }
      stateMachineData_.WriteTo(ref output, _repeated_stateMachineData_codec);
      if (DefaultIndex != 0) {
        output.WriteRawTag(128, 1);
        output.WriteInt32(DefaultIndex);
      }
      defaultInputSlotData_.WriteTo(ref output, _repeated_defaultInputSlotData_codec);
      if (RoleGuid.Length != 0) {
        output.WriteRawTag(146, 1);
        output.WriteString(RoleGuid);
      }
      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 (NodeName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(NodeName);
      }
      if (NodeId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(NodeId);
      }
      if (PairedNodeId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(PairedNodeId);
      }
      if (NodeType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(NodeType);
      }
      size += circuitLinks_.CalculateSize(_repeated_circuitLinks_codec);
      if (transformData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TransformData);
      }
      if (internalGraphData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InternalGraphData);
      }
      size += slotData_.CalculateSize(_repeated_slotData_codec);
      if (Mode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Mode);
      }
      if (selectorNodeData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SelectorNodeData);
      }
      if (AdvancedMode != false) {
        size += 1 + 1;
      }
      if (TimeUnit != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(TimeUnit);
      }
      if (RoleId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoleId);
      }
      size += stateMachineData_.CalculateSize(_repeated_stateMachineData_codec);
      if (DefaultIndex != 0) {
        size += 2 + pb::CodedOutputStream.ComputeInt32Size(DefaultIndex);
      }
      size += defaultInputSlotData_.CalculateSize(_repeated_defaultInputSlotData_codec);
      if (RoleGuid.Length != 0) {
        size += 2 + pb::CodedOutputStream.ComputeStringSize(RoleGuid);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CircuitNodeData other) {
      if (other == null) {
        return;
      }
      if (other.NodeName.Length != 0) {
        NodeName = other.NodeName;
      }
      if (other.NodeId != 0) {
        NodeId = other.NodeId;
      }
      if (other.PairedNodeId != 0) {
        PairedNodeId = other.PairedNodeId;
      }
      if (other.NodeType.Length != 0) {
        NodeType = other.NodeType;
      }
      circuitLinks_.Add(other.circuitLinks_);
      if (other.transformData_ != null) {
        if (transformData_ == null) {
          TransformData = new global::RecRoom.CircuitsV1.Protobuf.NodeTransformData();
        }
        TransformData.MergeFrom(other.TransformData);
      }
      if (other.internalGraphData_ != null) {
        if (internalGraphData_ == null) {
          InternalGraphData = new global::RecRoom.CircuitsV1.Protobuf.InternalGraphData();
        }
        InternalGraphData.MergeFrom(other.InternalGraphData);
      }
      slotData_.Add(other.slotData_);
      if (other.Mode != 0) {
        Mode = other.Mode;
      }
      if (other.selectorNodeData_ != null) {
        if (selectorNodeData_ == null) {
          SelectorNodeData = new global::RecRoom.CircuitsV1.Protobuf.SelectorNodeData();
        }
        SelectorNodeData.MergeFrom(other.SelectorNodeData);
      }
      if (other.AdvancedMode != false) {
        AdvancedMode = other.AdvancedMode;
      }
      if (other.TimeUnit != 0) {
        TimeUnit = other.TimeUnit;
      }
      if (other.RoleId != 0) {
        RoleId = other.RoleId;
      }
      stateMachineData_.Add(other.stateMachineData_);
      if (other.DefaultIndex != 0) {
        DefaultIndex = other.DefaultIndex;
      }
      defaultInputSlotData_.Add(other.defaultInputSlotData_);
      if (other.RoleGuid.Length != 0) {
        RoleGuid = other.RoleGuid;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            NodeName = input.ReadString();
            break;
          }
          case 16: {
            NodeId = input.ReadInt32();
            break;
          }
          case 24: {
            PairedNodeId = input.ReadInt32();
            break;
          }
          case 34: {
            NodeType = input.ReadBytes();
            break;
          }
          case 50: {
            circuitLinks_.AddEntriesFrom(input, _repeated_circuitLinks_codec);
            break;
          }
          case 58: {
            if (transformData_ == null) {
              TransformData = new global::RecRoom.CircuitsV1.Protobuf.NodeTransformData();
            }
            input.ReadMessage(TransformData);
            break;
          }
          case 66: {
            if (internalGraphData_ == null) {
              InternalGraphData = new global::RecRoom.CircuitsV1.Protobuf.InternalGraphData();
            }
            input.ReadMessage(InternalGraphData);
            break;
          }
          case 74: {
            slotData_.AddEntriesFrom(input, _repeated_slotData_codec);
            break;
          }
          case 80: {
            Mode = input.ReadInt32();
            break;
          }
          case 90: {
            if (selectorNodeData_ == null) {
              SelectorNodeData = new global::RecRoom.CircuitsV1.Protobuf.SelectorNodeData();
            }
            input.ReadMessage(SelectorNodeData);
            break;
          }
          case 96: {
            AdvancedMode = input.ReadBool();
            break;
          }
          case 104: {
            TimeUnit = input.ReadInt32();
            break;
          }
          case 112: {
            RoleId = input.ReadInt32();
            break;
          }
          case 122: {
            stateMachineData_.AddEntriesFrom(input, _repeated_stateMachineData_codec);
            break;
          }
          case 128: {
            DefaultIndex = input.ReadInt32();
            break;
          }
          case 138: {
            defaultInputSlotData_.AddEntriesFrom(input, _repeated_defaultInputSlotData_codec);
            break;
          }
          case 146: {
            RoleGuid = input.ReadString();
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            NodeName = input.ReadString();
            break;
          }
          case 16: {
            NodeId = input.ReadInt32();
            break;
          }
          case 24: {
            PairedNodeId = input.ReadInt32();
            break;
          }
          case 34: {
            NodeType = input.ReadBytes();
            break;
          }
          case 50: {
            circuitLinks_.AddEntriesFrom(ref input, _repeated_circuitLinks_codec);
            break;
          }
          case 58: {
            if (transformData_ == null) {
              TransformData = new global::RecRoom.CircuitsV1.Protobuf.NodeTransformData();
            }
            input.ReadMessage(TransformData);
            break;
          }
          case 66: {
            if (internalGraphData_ == null) {
              InternalGraphData = new global::RecRoom.CircuitsV1.Protobuf.InternalGraphData();
            }
            input.ReadMessage(InternalGraphData);
            break;
          }
          case 74: {
            slotData_.AddEntriesFrom(ref input, _repeated_slotData_codec);
            break;
          }
          case 80: {
            Mode = input.ReadInt32();
            break;
          }
          case 90: {
            if (selectorNodeData_ == null) {
              SelectorNodeData = new global::RecRoom.CircuitsV1.Protobuf.SelectorNodeData();
            }
            input.ReadMessage(SelectorNodeData);
            break;
          }
          case 96: {
            AdvancedMode = input.ReadBool();
            break;
          }
          case 104: {
            TimeUnit = input.ReadInt32();
            break;
          }
          case 112: {
            RoleId = input.ReadInt32();
            break;
          }
          case 122: {
            stateMachineData_.AddEntriesFrom(ref input, _repeated_stateMachineData_codec);
            break;
          }
          case 128: {
            DefaultIndex = input.ReadInt32();
            break;
          }
          case 138: {
            defaultInputSlotData_.AddEntriesFrom(ref input, _repeated_defaultInputSlotData_codec);
            break;
          }
          case 146: {
            RoleGuid = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.CircuitsV1.Protobuf.CircuitNodeDataReflection.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 SelectorNodeData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SelectorNodeData(SelectorNodeData other) : this() {
      evalMode_ = other.evalMode_;
      selectorConfigData_ = other.selectorConfigData_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "eval_mode" field.</summary>
    public const int EvalModeFieldNumber = 1;
    private int evalMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int EvalMode {
      get { return evalMode_; }
      set {
        evalMode_ = value;
      }
    }

    /// <summary>Field number for the "selector_config_data" field.</summary>
    public const int SelectorConfigDataFieldNumber = 2;
    private static readonly pb::FieldCodec<global::RecRoom.CircuitsV1.Protobuf.SelectorConfigData> _repeated_selectorConfigData_codec
        = pb::FieldCodec.ForMessage(18, global::RecRoom.CircuitsV1.Protobuf.SelectorConfigData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.SelectorConfigData> selectorConfigData_ = new pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.SelectorConfigData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.SelectorConfigData> SelectorConfigData {
      get { return selectorConfigData_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SelectorNodeData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (EvalMode != other.EvalMode) return false;
      if(!selectorConfigData_.Equals(other.selectorConfigData_)) 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 (EvalMode != 0) hash ^= EvalMode.GetHashCode();
      hash ^= selectorConfigData_.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 (EvalMode != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(EvalMode);
      }
      selectorConfigData_.WriteTo(output, _repeated_selectorConfigData_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 (EvalMode != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(EvalMode);
      }
      selectorConfigData_.WriteTo(ref output, _repeated_selectorConfigData_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 (EvalMode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EvalMode);
      }
      size += selectorConfigData_.CalculateSize(_repeated_selectorConfigData_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SelectorNodeData other) {
      if (other == null) {
        return;
      }
      if (other.EvalMode != 0) {
        EvalMode = other.EvalMode;
      }
      selectorConfigData_.Add(other.selectorConfigData_);
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            EvalMode = input.ReadInt32();
            break;
          }
          case 18: {
            selectorConfigData_.AddEntriesFrom(input, _repeated_selectorConfigData_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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            EvalMode = input.ReadInt32();
            break;
          }
          case 18: {
            selectorConfigData_.AddEntriesFrom(ref input, _repeated_selectorConfigData_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.CircuitsV1.Protobuf.CircuitNodeDataReflection.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 InternalGraphData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public InternalGraphData(InternalGraphData other) : this() {
      inputNodeId_ = other.inputNodeId_;
      outputNodeId_ = other.outputNodeId_;
      internalNodeGraph_ = other.internalNodeGraph_ != null ? other.internalNodeGraph_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "input_node_id" field.</summary>
    public const int InputNodeIdFieldNumber = 1;
    private int inputNodeId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int InputNodeId {
      get { return inputNodeId_; }
      set {
        inputNodeId_ = value;
      }
    }

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

    /// <summary>Field number for the "internal_node_graph" field.</summary>
    public const int InternalNodeGraphFieldNumber = 3;
    private global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData internalNodeGraph_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData InternalNodeGraph {
      get { return internalNodeGraph_; }
      set {
        internalNodeGraph_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(InternalGraphData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (InputNodeId != other.InputNodeId) return false;
      if (OutputNodeId != other.OutputNodeId) return false;
      if (!object.Equals(InternalNodeGraph, other.InternalNodeGraph)) 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 (InputNodeId != 0) hash ^= InputNodeId.GetHashCode();
      if (OutputNodeId != 0) hash ^= OutputNodeId.GetHashCode();
      if (internalNodeGraph_ != null) hash ^= InternalNodeGraph.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 (InputNodeId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(InputNodeId);
      }
      if (OutputNodeId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(OutputNodeId);
      }
      if (internalNodeGraph_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(InternalNodeGraph);
      }
      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 (InputNodeId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(InputNodeId);
      }
      if (OutputNodeId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(OutputNodeId);
      }
      if (internalNodeGraph_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(InternalNodeGraph);
      }
      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 (InputNodeId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(InputNodeId);
      }
      if (OutputNodeId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(OutputNodeId);
      }
      if (internalNodeGraph_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(InternalNodeGraph);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(InternalGraphData other) {
      if (other == null) {
        return;
      }
      if (other.InputNodeId != 0) {
        InputNodeId = other.InputNodeId;
      }
      if (other.OutputNodeId != 0) {
        OutputNodeId = other.OutputNodeId;
      }
      if (other.internalNodeGraph_ != null) {
        if (internalNodeGraph_ == null) {
          InternalNodeGraph = new global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData();
        }
        InternalNodeGraph.MergeFrom(other.InternalNodeGraph);
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            InputNodeId = input.ReadInt32();
            break;
          }
          case 16: {
            OutputNodeId = input.ReadInt32();
            break;
          }
          case 26: {
            if (internalNodeGraph_ == null) {
              InternalNodeGraph = new global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData();
            }
            input.ReadMessage(InternalNodeGraph);
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            InputNodeId = input.ReadInt32();
            break;
          }
          case 16: {
            OutputNodeId = input.ReadInt32();
            break;
          }
          case 26: {
            if (internalNodeGraph_ == null) {
              InternalNodeGraph = new global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData();
            }
            input.ReadMessage(InternalNodeGraph);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.CircuitsV1.Protobuf.CircuitNodeDataReflection.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 CircuitNodeGraphData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitNodeGraphData(CircuitNodeGraphData other) : this() {
      nodeGraphGuid_ = other.nodeGraphGuid_;
      isInternalGraph_ = other.isInternalGraph_;
      rootNodeData_ = other.rootNodeData_ != null ? other.rootNodeData_.Clone() : null;
      circuitNodes_ = other.circuitNodes_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "node_graph_guid" field.</summary>
    public const int NodeGraphGuidFieldNumber = 1;
    private pb::ByteString nodeGraphGuid_ = pb::ByteString.Empty;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString NodeGraphGuid {
      get { return nodeGraphGuid_; }
      set {
        nodeGraphGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "is_internal_graph" field.</summary>
    public const int IsInternalGraphFieldNumber = 2;
    private bool isInternalGraph_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsInternalGraph {
      get { return isInternalGraph_; }
      set {
        isInternalGraph_ = value;
      }
    }

    /// <summary>Field number for the "root_node_data" field.</summary>
    public const int RootNodeDataFieldNumber = 3;
    private global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData rootNodeData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData RootNodeData {
      get { return rootNodeData_; }
      set {
        rootNodeData_ = value;
      }
    }

    /// <summary>Field number for the "circuit_nodes" field.</summary>
    public const int CircuitNodesFieldNumber = 4;
    private static readonly pb::FieldCodec<global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData> _repeated_circuitNodes_codec
        = pb::FieldCodec.ForMessage(34, global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData> circuitNodes_ = new pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData> CircuitNodes {
      get { return circuitNodes_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CircuitNodeGraphData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (NodeGraphGuid != other.NodeGraphGuid) return false;
      if (IsInternalGraph != other.IsInternalGraph) return false;
      if (!object.Equals(RootNodeData, other.RootNodeData)) return false;
      if(!circuitNodes_.Equals(other.circuitNodes_)) 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 (NodeGraphGuid.Length != 0) hash ^= NodeGraphGuid.GetHashCode();
      if (IsInternalGraph != false) hash ^= IsInternalGraph.GetHashCode();
      if (rootNodeData_ != null) hash ^= RootNodeData.GetHashCode();
      hash ^= circuitNodes_.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 (NodeGraphGuid.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(NodeGraphGuid);
      }
      if (IsInternalGraph != false) {
        output.WriteRawTag(16);
        output.WriteBool(IsInternalGraph);
      }
      if (rootNodeData_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(RootNodeData);
      }
      circuitNodes_.WriteTo(output, _repeated_circuitNodes_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 (NodeGraphGuid.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(NodeGraphGuid);
      }
      if (IsInternalGraph != false) {
        output.WriteRawTag(16);
        output.WriteBool(IsInternalGraph);
      }
      if (rootNodeData_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(RootNodeData);
      }
      circuitNodes_.WriteTo(ref output, _repeated_circuitNodes_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 (NodeGraphGuid.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(NodeGraphGuid);
      }
      if (IsInternalGraph != false) {
        size += 1 + 1;
      }
      if (rootNodeData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RootNodeData);
      }
      size += circuitNodes_.CalculateSize(_repeated_circuitNodes_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CircuitNodeGraphData other) {
      if (other == null) {
        return;
      }
      if (other.NodeGraphGuid.Length != 0) {
        NodeGraphGuid = other.NodeGraphGuid;
      }
      if (other.IsInternalGraph != false) {
        IsInternalGraph = other.IsInternalGraph;
      }
      if (other.rootNodeData_ != null) {
        if (rootNodeData_ == null) {
          RootNodeData = new global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData();
        }
        RootNodeData.MergeFrom(other.RootNodeData);
      }
      circuitNodes_.Add(other.circuitNodes_);
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            NodeGraphGuid = input.ReadBytes();
            break;
          }
          case 16: {
            IsInternalGraph = input.ReadBool();
            break;
          }
          case 26: {
            if (rootNodeData_ == null) {
              RootNodeData = new global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData();
            }
            input.ReadMessage(RootNodeData);
            break;
          }
          case 34: {
            circuitNodes_.AddEntriesFrom(input, _repeated_circuitNodes_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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            NodeGraphGuid = input.ReadBytes();
            break;
          }
          case 16: {
            IsInternalGraph = input.ReadBool();
            break;
          }
          case 26: {
            if (rootNodeData_ == null) {
              RootNodeData = new global::RecRoom.CircuitsV1.Protobuf.CircuitNodeData();
            }
            input.ReadMessage(RootNodeData);
            break;
          }
          case 34: {
            circuitNodes_.AddEntriesFrom(ref input, _repeated_circuitNodes_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.CircuitsV1.Protobuf.CircuitNodeDataReflection.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 CircuitNodeGraphCollectionData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CircuitNodeGraphCollectionData(CircuitNodeGraphCollectionData other) : this() {
      graphs_ = other.graphs_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "graphs" field.</summary>
    public const int GraphsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData> _repeated_graphs_codec
        = pb::FieldCodec.ForMessage(10, global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData> graphs_ = new pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.CircuitNodeGraphData> Graphs {
      get { return graphs_; }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CircuitNodeGraphCollectionData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!graphs_.Equals(other.graphs_)) 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 ^= graphs_.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
      graphs_.WriteTo(output, _repeated_graphs_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) {
      graphs_.WriteTo(ref output, _repeated_graphs_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;
      size += graphs_.CalculateSize(_repeated_graphs_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CircuitNodeGraphCollectionData other) {
      if (other == null) {
        return;
      }
      graphs_.Add(other.graphs_);
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            graphs_.AddEntriesFrom(input, _repeated_graphs_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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            graphs_.AddEntriesFrom(ref input, _repeated_graphs_codec);
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.CircuitsV1.Protobuf.CircuitNodeDataReflection.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 SelectorConfigData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SelectorConfigData(SelectorConfigData other) : this() {
      compareMode_ = other.compareMode_;
      compareValue_ = other.compareValue_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "compare_mode" field.</summary>
    public const int CompareModeFieldNumber = 1;
    private int compareMode_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CompareMode {
      get { return compareMode_; }
      set {
        compareMode_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SelectorConfigData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (CompareMode != other.CompareMode) return false;
      if (CompareValue != other.CompareValue) 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 (CompareMode != 0) hash ^= CompareMode.GetHashCode();
      if (CompareValue != 0) hash ^= CompareValue.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 (CompareMode != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(CompareMode);
      }
      if (CompareValue != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(CompareValue);
      }
      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 (CompareMode != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(CompareMode);
      }
      if (CompareValue != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(CompareValue);
      }
      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 (CompareMode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CompareMode);
      }
      if (CompareValue != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CompareValue);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SelectorConfigData other) {
      if (other == null) {
        return;
      }
      if (other.CompareMode != 0) {
        CompareMode = other.CompareMode;
      }
      if (other.CompareValue != 0) {
        CompareValue = other.CompareValue;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            CompareMode = input.ReadInt32();
            break;
          }
          case 16: {
            CompareValue = input.ReadInt32();
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            CompareMode = input.ReadInt32();
            break;
          }
          case 16: {
            CompareValue = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.CircuitsV1.Protobuf.CircuitNodeDataReflection.Descriptor.MessageTypes[6]; }
    }

    [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 StateMachineStateData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StateMachineStateData(StateMachineStateData other) : this() {
      val1_ = other.val1_;
      val2_ = other.val2_;
      val3_ = other.val3_;
      stateTransitionData_ = other.stateTransitionData_.Clone();
      minTimeInState_ = other.minTimeInState_;
      removed_ = other.removed_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "val1" field.</summary>
    public const int Val1FieldNumber = 1;
    private int val1_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Val1 {
      get { return val1_; }
      set {
        val1_ = value;
      }
    }

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

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

    /// <summary>Field number for the "state_transition_data" field.</summary>
    public const int StateTransitionDataFieldNumber = 4;
    private static readonly pb::FieldCodec<global::RecRoom.CircuitsV1.Protobuf.StateMachineTransitionData> _repeated_stateTransitionData_codec
        = pb::FieldCodec.ForMessage(34, global::RecRoom.CircuitsV1.Protobuf.StateMachineTransitionData.Parser);
    private readonly pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.StateMachineTransitionData> stateTransitionData_ = new pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.StateMachineTransitionData>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::RecRoom.CircuitsV1.Protobuf.StateMachineTransitionData> StateTransitionData {
      get { return stateTransitionData_; }
    }

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(StateMachineStateData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Val1 != other.Val1) return false;
      if (Val2 != other.Val2) return false;
      if (Val3 != other.Val3) return false;
      if(!stateTransitionData_.Equals(other.stateTransitionData_)) return false;
      if (MinTimeInState != other.MinTimeInState) return false;
      if (Removed != other.Removed) 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 (Val1 != 0) hash ^= Val1.GetHashCode();
      if (Val2 != 0) hash ^= Val2.GetHashCode();
      if (Val3 != 0) hash ^= Val3.GetHashCode();
      hash ^= stateTransitionData_.GetHashCode();
      if (MinTimeInState != 0) hash ^= MinTimeInState.GetHashCode();
      if (Removed != 0) hash ^= Removed.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 (Val1 != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Val1);
      }
      if (Val2 != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Val2);
      }
      if (Val3 != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Val3);
      }
      stateTransitionData_.WriteTo(output, _repeated_stateTransitionData_codec);
      if (MinTimeInState != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(MinTimeInState);
      }
      if (Removed != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(Removed);
      }
      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 (Val1 != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Val1);
      }
      if (Val2 != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(Val2);
      }
      if (Val3 != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Val3);
      }
      stateTransitionData_.WriteTo(ref output, _repeated_stateTransitionData_codec);
      if (MinTimeInState != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(MinTimeInState);
      }
      if (Removed != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(Removed);
      }
      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 (Val1 != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Val1);
      }
      if (Val2 != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Val2);
      }
      if (Val3 != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Val3);
      }
      size += stateTransitionData_.CalculateSize(_repeated_stateTransitionData_codec);
      if (MinTimeInState != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(MinTimeInState);
      }
      if (Removed != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Removed);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(StateMachineStateData other) {
      if (other == null) {
        return;
      }
      if (other.Val1 != 0) {
        Val1 = other.Val1;
      }
      if (other.Val2 != 0) {
        Val2 = other.Val2;
      }
      if (other.Val3 != 0) {
        Val3 = other.Val3;
      }
      stateTransitionData_.Add(other.stateTransitionData_);
      if (other.MinTimeInState != 0) {
        MinTimeInState = other.MinTimeInState;
      }
      if (other.Removed != 0) {
        Removed = other.Removed;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Val1 = input.ReadInt32();
            break;
          }
          case 16: {
            Val2 = input.ReadInt32();
            break;
          }
          case 24: {
            Val3 = input.ReadInt32();
            break;
          }
          case 34: {
            stateTransitionData_.AddEntriesFrom(input, _repeated_stateTransitionData_codec);
            break;
          }
          case 40: {
            MinTimeInState = input.ReadInt32();
            break;
          }
          case 48: {
            Removed = input.ReadInt32();
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Val1 = input.ReadInt32();
            break;
          }
          case 16: {
            Val2 = input.ReadInt32();
            break;
          }
          case 24: {
            Val3 = input.ReadInt32();
            break;
          }
          case 34: {
            stateTransitionData_.AddEntriesFrom(ref input, _repeated_stateTransitionData_codec);
            break;
          }
          case 40: {
            MinTimeInState = input.ReadInt32();
            break;
          }
          case 48: {
            Removed = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::RecRoom.CircuitsV1.Protobuf.CircuitNodeDataReflection.Descriptor.MessageTypes[7]; }
    }

    [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 StateMachineTransitionData() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StateMachineTransitionData(StateMachineTransitionData other) : this() {
      inputIndex_ = other.inputIndex_;
      stateIndex_ = other.stateIndex_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "input_index" field.</summary>
    public const int InputIndexFieldNumber = 1;
    private int inputIndex_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int InputIndex {
      get { return inputIndex_; }
      set {
        inputIndex_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(StateMachineTransitionData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (InputIndex != other.InputIndex) return false;
      if (StateIndex != other.StateIndex) 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 (InputIndex != 0) hash ^= InputIndex.GetHashCode();
      if (StateIndex != 0) hash ^= StateIndex.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 (InputIndex != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(InputIndex);
      }
      if (StateIndex != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(StateIndex);
      }
      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 (InputIndex != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(InputIndex);
      }
      if (StateIndex != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(StateIndex);
      }
      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 (InputIndex != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(InputIndex);
      }
      if (StateIndex != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(StateIndex);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(StateMachineTransitionData other) {
      if (other == null) {
        return;
      }
      if (other.InputIndex != 0) {
        InputIndex = other.InputIndex;
      }
      if (other.StateIndex != 0) {
        StateIndex = other.StateIndex;
      }
      _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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            InputIndex = input.ReadInt32();
            break;
          }
          case 16: {
            StateIndex = input.ReadInt32();
            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) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            InputIndex = input.ReadInt32();
            break;
          }
          case 16: {
            StateIndex = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
