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

#include "concept.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>

PROTOBUF_PRAGMA_INIT_SEG

namespace _pb = ::PROTOBUF_NAMESPACE_ID;
namespace _pbi = _pb::internal;

namespace Messages {
PROTOBUF_CONSTEXPR Variables::Variables(
    ::_pbi::ConstantInitialized)
  : int_names_()
  , int_values_()
  , _int_values_cached_byte_size_(0)
  , int_descriptions_()
  , bool_names_()
  , bool_values_()
  , bool_descriptions_()
  , double_names_()
  , double_values_()
  , double_descriptions_()
  , string_names_()
  , string_values_()
  , string_descriptions_(){}
struct VariablesDefaultTypeInternal {
  PROTOBUF_CONSTEXPR VariablesDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~VariablesDefaultTypeInternal() {}
  union {
    Variables _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 VariablesDefaultTypeInternal _Variables_default_instance_;
PROTOBUF_CONSTEXPR Function::Function(
    ::_pbi::ConstantInitialized)
  : argument_types_()
  , argument_descriptions_()
  , inputs_()
  , outputs_()
  , constants_()
  , to_be_defined_()
  , data_()
  , name_(&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{})
  , cpu_capable_(false)
  , gpu_capable_(false)
  , include_as_preprocessor_(false)
  , omit_from_main_loop_(false)
  , include_as_postprocessor_(false)
  , mutually_exclusive_(false)
  , only_once_(false)
  , push_front_(false)
  , dont_flatten_(false){}
struct FunctionDefaultTypeInternal {
  PROTOBUF_CONSTEXPR FunctionDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~FunctionDefaultTypeInternal() {}
  union {
    Function _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 FunctionDefaultTypeInternal _Function_default_instance_;
PROTOBUF_CONSTEXPR Command::Command(
    ::_pbi::ConstantInitialized)
  : before_()
  , after_()
  , msg_(&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{})
  , function_(nullptr)
  , data_(nullptr)
  , exec_count_(uint64_t{0u})
  , args_are_set_(false)
  , is_ready_(false)
  , progress_(0)
  , simd_size_(uint64_t{0u})
  , version_(uint64_t{0u})
  , id_(int64_t{0})
  , n_kernel_(uint64_t{0u})
  , region_type_(0u)
  , region_id_(0){}
struct CommandDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CommandDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CommandDefaultTypeInternal() {}
  union {
    Command _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CommandDefaultTypeInternal _Command_default_instance_;
PROTOBUF_CONSTEXPR Script::Script(
    ::_pbi::ConstantInitialized)
  : sequence_()
  , name_(&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{})
  , msg_(&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{})
  , source_code_(&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{})
  , variables_(nullptr)
  , before_(nullptr)
  , after_(nullptr)
  , uid_(int64_t{0})
  , device_(0u)
  , status_(0u)
  , order_(0u)
  , progress_(0){}
struct ScriptDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ScriptDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ScriptDefaultTypeInternal() {}
  union {
    Script _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ScriptDefaultTypeInternal _Script_default_instance_;
PROTOBUF_CONSTEXPR Model::Model(
    ::_pbi::ConstantInitialized)
  : dofs_()
  , algorithms_()
  , available_outputs_()
  , extra_properties_()
  , compatible_conditions_()
  , sub_models_()
  , rules_()
  , mutex_stack_()
  , name_(&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{})
  , default_data_(nullptr)
  , markov_matrix_(nullptr){}
struct ModelDefaultTypeInternal {
  PROTOBUF_CONSTEXPR ModelDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~ModelDefaultTypeInternal() {}
  union {
    Model _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ModelDefaultTypeInternal _Model_default_instance_;
PROTOBUF_CONSTEXPR Coupling::Coupling(
    ::_pbi::ConstantInitialized)
  : dofs_()
  , source_system_(&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{})
  , target_system_(&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{})
  , name_(&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{})
  , source_region_(nullptr)
  , target_region_(nullptr)
  , representation_(nullptr)
  , source_uid_(int64_t{0})
  , target_uid_(int64_t{0})
  , sampling_mode_(0u)
  , enabled_(false)
  , forward_(false)
  , reverse_(false){}
struct CouplingDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CouplingDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CouplingDefaultTypeInternal() {}
  union {
    Coupling _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CouplingDefaultTypeInternal _Coupling_default_instance_;
PROTOBUF_CONSTEXPR System::System(
    ::_pbi::ConstantInitialized)
  : script_()
  , local_transform_()
  , local_rate_()
  , local_accel_()
  , children_()
  , referenced_files_()
  , embedded_files_()
  , notes_()
  , couplings_()
  , models_()
  , conditions_()
  , meta_(nullptr)
  , physical_constants_(nullptr){}
struct SystemDefaultTypeInternal {
  PROTOBUF_CONSTEXPR SystemDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~SystemDefaultTypeInternal() {}
  union {
    System _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 SystemDefaultTypeInternal _System_default_instance_;
}  // namespace Messages
static ::_pb::Metadata file_level_metadata_concept_2eproto[7];
static constexpr ::_pb::EnumDescriptor const** file_level_enum_descriptors_concept_2eproto = nullptr;
static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_concept_2eproto = nullptr;

const uint32_t TableStruct_concept_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, int_names_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, int_values_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, int_descriptions_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, bool_names_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, bool_values_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, bool_descriptions_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, double_names_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, double_values_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, double_descriptions_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, string_names_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, string_values_),
  PROTOBUF_FIELD_OFFSET(::Messages::Variables, string_descriptions_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Messages::Function, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::Messages::Function, name_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, argument_types_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, argument_descriptions_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, inputs_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, outputs_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, constants_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, to_be_defined_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, data_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, cpu_capable_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, gpu_capable_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, include_as_preprocessor_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, omit_from_main_loop_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, include_as_postprocessor_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, mutually_exclusive_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, only_once_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, push_front_),
  PROTOBUF_FIELD_OFFSET(::Messages::Function, dont_flatten_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Messages::Command, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::Messages::Command, function_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, args_are_set_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, is_ready_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, exec_count_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, simd_size_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, version_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, id_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, n_kernel_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, progress_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, msg_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, data_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, before_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, after_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, region_type_),
  PROTOBUF_FIELD_OFFSET(::Messages::Command, region_id_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Messages::Script, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::Messages::Script, name_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, msg_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, source_code_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, uid_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, device_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, status_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, order_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, progress_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, variables_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, sequence_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, before_),
  PROTOBUF_FIELD_OFFSET(::Messages::Script, after_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Messages::Model, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::Messages::Model, name_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, dofs_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, algorithms_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, available_outputs_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, extra_properties_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, compatible_conditions_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, sub_models_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, default_data_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, rules_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, mutex_stack_),
  PROTOBUF_FIELD_OFFSET(::Messages::Model, markov_matrix_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, source_system_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, target_system_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, source_uid_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, target_uid_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, source_region_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, target_region_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, sampling_mode_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, name_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, dofs_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, representation_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, enabled_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, forward_),
  PROTOBUF_FIELD_OFFSET(::Messages::Coupling, reverse_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::Messages::System, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::Messages::System, meta_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, script_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, local_transform_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, local_rate_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, local_accel_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, children_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, referenced_files_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, embedded_files_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, notes_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, couplings_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, models_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, physical_constants_),
  PROTOBUF_FIELD_OFFSET(::Messages::System, conditions_),
};
static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::Messages::Variables)},
  { 18, -1, -1, sizeof(::Messages::Function)},
  { 41, -1, -1, sizeof(::Messages::Command)},
  { 62, -1, -1, sizeof(::Messages::Script)},
  { 80, -1, -1, sizeof(::Messages::Model)},
  { 97, -1, -1, sizeof(::Messages::Coupling)},
  { 116, -1, -1, sizeof(::Messages::System)},
};

static const ::_pb::Message* const file_default_instances[] = {
  &::Messages::_Variables_default_instance_._instance,
  &::Messages::_Function_default_instance_._instance,
  &::Messages::_Command_default_instance_._instance,
  &::Messages::_Script_default_instance_._instance,
  &::Messages::_Model_default_instance_._instance,
  &::Messages::_Coupling_default_instance_._instance,
  &::Messages::_System_default_instance_._instance,
};

const char descriptor_table_protodef_concept_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\rconcept.proto\022\010Messages\032\014vector.proto\032"
  "\rspatial.proto\032\nmeta.proto\"\244\002\n\tVariables"
  "\022\021\n\tint_names\030\002 \003(\t\022\022\n\nint_values\030\003 \003(\005\022"
  "\030\n\020int_descriptions\030\004 \003(\t\022\022\n\nbool_names\030"
  "\006 \003(\t\022\023\n\013bool_values\030\007 \003(\010\022\031\n\021bool_descr"
  "iptions\030\010 \003(\t\022\024\n\014double_names\030\n \003(\t\022\025\n\rd"
  "ouble_values\030\013 \003(\001\022\033\n\023double_description"
  "s\030\014 \003(\t\022\024\n\014string_names\030\016 \003(\t\022\025\n\rstring_"
  "values\030\017 \003(\t\022\033\n\023string_descriptions\030\020 \003("
  "\t\"\237\003\n\010Function\022\014\n\004name\030\001 \001(\t\022\026\n\016argument"
  "_types\030\002 \003(\t\022\035\n\025argument_descriptions\030\003 "
  "\003(\t\022\016\n\006inputs\030\004 \003(\t\022\017\n\007outputs\030\005 \003(\t\022\021\n\t"
  "constants\030\006 \003(\t\022\025\n\rto_be_defined\030\007 \003(\t\022 "
  "\n\004data\030\010 \003(\0132\022.Messages.Vector64\022\023\n\013cpu_"
  "capable\030\n \001(\010\022\023\n\013gpu_capable\030\013 \001(\010\022\037\n\027in"
  "clude_as_preprocessor\030\014 \001(\010\022\033\n\023omit_from"
  "_main_loop\030\r \001(\010\022 \n\030include_as_postproce"
  "ssor\030\016 \001(\010\022\032\n\022mutually_exclusive\030\017 \001(\010\022\021"
  "\n\tonly_once\030\020 \001(\010\022\022\n\npush_front\030\021 \001(\010\022\024\n"
  "\014dont_flatten\030\022 \001(\010\"\333\002\n\007Command\022$\n\010funct"
  "ion\030\001 \001(\0132\022.Messages.Function\022\024\n\014args_ar"
  "e_set\030\002 \001(\010\022\020\n\010is_ready\030\003 \001(\010\022\022\n\nexec_co"
  "unt\030\004 \001(\004\022\021\n\tsimd_size\030\005 \001(\004\022\017\n\007version\030"
  "\006 \001(\004\022\n\n\002id\030\007 \001(\003\022\020\n\010n_kernel\030\010 \001(\004\022\020\n\010p"
  "rogress\030\t \001(\002\022\013\n\003msg\030\n \001(\t\022 \n\004data\030\014 \001(\013"
  "2\022.Messages.Record64\022!\n\006before\030\r \003(\0132\021.M"
  "essages.Command\022 \n\005after\030\016 \003(\0132\021.Message"
  "s.Command\022\023\n\013region_type\030\017 \001(\r\022\021\n\tregion"
  "_id\030\020 \001(\005\"\226\002\n\006Script\022\014\n\004name\030\001 \001(\t\022\013\n\003ms"
  "g\030\002 \001(\t\022\023\n\013source_code\030\003 \001(\t\022\013\n\003uid\030\004 \001("
  "\003\022\016\n\006device\030\005 \001(\r\022\016\n\006status\030\006 \001(\r\022\r\n\005ord"
  "er\030\007 \001(\r\022\020\n\010progress\030\010 \001(\002\022&\n\tvariables\030"
  "\n \001(\0132\023.Messages.Variables\022#\n\010Sequence\030\014"
  " \003(\0132\021.Messages.Command\022 \n\006before\030\016 \001(\0132"
  "\020.Messages.Script\022\037\n\005after\030\017 \001(\0132\020.Messa"
  "ges.Script\"\315\002\n\005Model\022\014\n\004name\030\001 \001(\t\022\014\n\004do"
  "fs\030\003 \003(\t\022\022\n\nalgorithms\030\004 \003(\t\022\031\n\021availabl"
  "e_outputs\030\005 \003(\t\022\030\n\020extra_properties\030\006 \003("
  "\t\022\035\n\025compatible_conditions\030\007 \003(\t\022#\n\nsub_"
  "models\030\t \003(\0132\017.Messages.Model\022(\n\014default"
  "_data\030\n \001(\0132\022.Messages.Record64\022\035\n\005rules"
  "\030\013 \003(\0132\016.Messages.Rule\022#\n\013mutex_stack\030\014 "
  "\003(\0132\016.Messages.Rule\022-\n\rmarkov_matrix\030\017 \001"
  "(\0132\026.Messages.SparseMatrix\"\306\002\n\010Coupling\022"
  "\025\n\rsource_system\030\001 \001(\t\022\025\n\rtarget_system\030"
  "\002 \001(\t\022\022\n\nsource_uid\030\003 \001(\003\022\022\n\ntarget_uid\030"
  "\004 \001(\003\022%\n\rsource_region\030\005 \001(\0132\016.Messages."
  "Zone\022%\n\rtarget_region\030\006 \001(\0132\016.Messages.Z"
  "one\022\025\n\rsampling_mode\030\t \001(\r\022\014\n\004name\030\n \001(\t"
  "\022\014\n\004dofs\030\013 \003(\t\0220\n\016representation\030\014 \001(\0132\030"
  ".Messages.Representation\022\017\n\007enabled\030\r \001("
  "\010\022\017\n\007forward\030\016 \001(\010\022\017\n\007reverse\030\017 \001(\010\"\214\003\n\006"
  "System\022\034\n\004meta\030\001 \001(\0132\016.Messages.Meta\022 \n\006"
  "script\030\002 \003(\0132\020.Messages.Script\022\027\n\017local_"
  "transform\030\003 \003(\001\022\022\n\nlocal_rate\030\004 \003(\001\022\023\n\013l"
  "ocal_accel\030\005 \003(\001\022\020\n\010children\030\006 \003(\t\022\030\n\020re"
  "ferenced_files\030\007 \003(\t\022&\n\016embedded_files\030\010"
  " \003(\0132\016.Messages.File\022\r\n\005notes\030\t \003(\t\022%\n\tc"
  "ouplings\030\n \003(\0132\022.Messages.Coupling\022\037\n\006mo"
  "dels\030\013 \003(\0132\017.Messages.Model\022.\n\022physical_"
  "constants\030\014 \001(\0132\022.Messages.Record64\022%\n\nc"
  "onditions\030\r \003(\0132\021.Messages.Commandb\006prot"
  "o3"
  ;
static const ::_pbi::DescriptorTable* const descriptor_table_concept_2eproto_deps[3] = {
  &::descriptor_table_meta_2eproto,
  &::descriptor_table_spatial_2eproto,
  &::descriptor_table_vector_2eproto,
};
static ::_pbi::once_flag descriptor_table_concept_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_concept_2eproto = {
    false, false, 2482, descriptor_table_protodef_concept_2eproto,
    "concept.proto",
    &descriptor_table_concept_2eproto_once, descriptor_table_concept_2eproto_deps, 3, 7,
    schemas, file_default_instances, TableStruct_concept_2eproto::offsets,
    file_level_metadata_concept_2eproto, file_level_enum_descriptors_concept_2eproto,
    file_level_service_descriptors_concept_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_concept_2eproto_getter() {
  return &descriptor_table_concept_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::_pbi::AddDescriptorsRunner dynamic_init_dummy_concept_2eproto(&descriptor_table_concept_2eproto);
namespace Messages {

// ===================================================================

class Variables::_Internal {
 public:
};

Variables::Variables(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  int_names_(arena),
  int_values_(arena),
  int_descriptions_(arena),
  bool_names_(arena),
  bool_values_(arena),
  bool_descriptions_(arena),
  double_names_(arena),
  double_values_(arena),
  double_descriptions_(arena),
  string_names_(arena),
  string_values_(arena),
  string_descriptions_(arena) {
  SharedCtor();
  // @@protoc_insertion_point(arena_constructor:Messages.Variables)
}
Variables::Variables(const Variables& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      int_names_(from.int_names_),
      int_values_(from.int_values_),
      int_descriptions_(from.int_descriptions_),
      bool_names_(from.bool_names_),
      bool_values_(from.bool_values_),
      bool_descriptions_(from.bool_descriptions_),
      double_names_(from.double_names_),
      double_values_(from.double_values_),
      double_descriptions_(from.double_descriptions_),
      string_names_(from.string_names_),
      string_values_(from.string_values_),
      string_descriptions_(from.string_descriptions_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:Messages.Variables)
}

inline void Variables::SharedCtor() {
}

Variables::~Variables() {
  // @@protoc_insertion_point(destructor:Messages.Variables)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Variables::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void Variables::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Variables::Clear() {
// @@protoc_insertion_point(message_clear_start:Messages.Variables)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  int_names_.Clear();
  int_values_.Clear();
  int_descriptions_.Clear();
  bool_names_.Clear();
  bool_values_.Clear();
  bool_descriptions_.Clear();
  double_names_.Clear();
  double_values_.Clear();
  double_descriptions_.Clear();
  string_names_.Clear();
  string_values_.Clear();
  string_descriptions_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Variables::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // repeated string int_names = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_int_names();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Variables.int_names"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated int32 int_values = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_int_values(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 24) {
          _internal_add_int_values(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string int_descriptions = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_int_descriptions();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Variables.int_descriptions"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string bool_names = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_bool_names();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Variables.bool_names"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated bool bool_values = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedBoolParser(_internal_mutable_bool_values(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 56) {
          _internal_add_bool_values(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated string bool_descriptions = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_bool_descriptions();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Variables.bool_descriptions"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string double_names = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_double_names();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Variables.double_names"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated double double_values = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedDoubleParser(_internal_mutable_double_values(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 89) {
          _internal_add_double_values(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr));
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      // repeated string double_descriptions = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_double_descriptions();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Variables.double_descriptions"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<98>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string string_names = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_string_names();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Variables.string_names"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<114>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string string_values = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 122)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_string_values();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Variables.string_values"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<122>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string string_descriptions = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 130)) {
          ptr -= 2;
          do {
            ptr += 2;
            auto str = _internal_add_string_descriptions();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Variables.string_descriptions"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<130>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Variables::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Messages.Variables)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string int_names = 2;
  for (int i = 0, n = this->_internal_int_names_size(); i < n; i++) {
    const auto& s = this->_internal_int_names(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Variables.int_names");
    target = stream->WriteString(2, s, target);
  }

  // repeated int32 int_values = 3;
  {
    int byte_size = _int_values_cached_byte_size_.load(std::memory_order_relaxed);
    if (byte_size > 0) {
      target = stream->WriteInt32Packed(
          3, _internal_int_values(), byte_size, target);
    }
  }

  // repeated string int_descriptions = 4;
  for (int i = 0, n = this->_internal_int_descriptions_size(); i < n; i++) {
    const auto& s = this->_internal_int_descriptions(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Variables.int_descriptions");
    target = stream->WriteString(4, s, target);
  }

  // repeated string bool_names = 6;
  for (int i = 0, n = this->_internal_bool_names_size(); i < n; i++) {
    const auto& s = this->_internal_bool_names(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Variables.bool_names");
    target = stream->WriteString(6, s, target);
  }

  // repeated bool bool_values = 7;
  if (this->_internal_bool_values_size() > 0) {
    target = stream->WriteFixedPacked(7, _internal_bool_values(), target);
  }

  // repeated string bool_descriptions = 8;
  for (int i = 0, n = this->_internal_bool_descriptions_size(); i < n; i++) {
    const auto& s = this->_internal_bool_descriptions(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Variables.bool_descriptions");
    target = stream->WriteString(8, s, target);
  }

  // repeated string double_names = 10;
  for (int i = 0, n = this->_internal_double_names_size(); i < n; i++) {
    const auto& s = this->_internal_double_names(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Variables.double_names");
    target = stream->WriteString(10, s, target);
  }

  // repeated double double_values = 11;
  if (this->_internal_double_values_size() > 0) {
    target = stream->WriteFixedPacked(11, _internal_double_values(), target);
  }

  // repeated string double_descriptions = 12;
  for (int i = 0, n = this->_internal_double_descriptions_size(); i < n; i++) {
    const auto& s = this->_internal_double_descriptions(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Variables.double_descriptions");
    target = stream->WriteString(12, s, target);
  }

  // repeated string string_names = 14;
  for (int i = 0, n = this->_internal_string_names_size(); i < n; i++) {
    const auto& s = this->_internal_string_names(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Variables.string_names");
    target = stream->WriteString(14, s, target);
  }

  // repeated string string_values = 15;
  for (int i = 0, n = this->_internal_string_values_size(); i < n; i++) {
    const auto& s = this->_internal_string_values(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Variables.string_values");
    target = stream->WriteString(15, s, target);
  }

  // repeated string string_descriptions = 16;
  for (int i = 0, n = this->_internal_string_descriptions_size(); i < n; i++) {
    const auto& s = this->_internal_string_descriptions(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Variables.string_descriptions");
    target = stream->WriteString(16, s, target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Messages.Variables)
  return target;
}

size_t Variables::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Messages.Variables)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string int_names = 2;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(int_names_.size());
  for (int i = 0, n = int_names_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      int_names_.Get(i));
  }

  // repeated int32 int_values = 3;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->int_values_);
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    int cached_size = ::_pbi::ToCachedSize(data_size);
    _int_values_cached_byte_size_.store(cached_size,
                                    std::memory_order_relaxed);
    total_size += data_size;
  }

  // repeated string int_descriptions = 4;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(int_descriptions_.size());
  for (int i = 0, n = int_descriptions_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      int_descriptions_.Get(i));
  }

  // repeated string bool_names = 6;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(bool_names_.size());
  for (int i = 0, n = bool_names_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      bool_names_.Get(i));
  }

  // repeated bool bool_values = 7;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_bool_values_size());
    size_t data_size = 1UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated string bool_descriptions = 8;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(bool_descriptions_.size());
  for (int i = 0, n = bool_descriptions_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      bool_descriptions_.Get(i));
  }

  // repeated string double_names = 10;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(double_names_.size());
  for (int i = 0, n = double_names_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      double_names_.Get(i));
  }

  // repeated double double_values = 11;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_double_values_size());
    size_t data_size = 8UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated string double_descriptions = 12;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(double_descriptions_.size());
  for (int i = 0, n = double_descriptions_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      double_descriptions_.Get(i));
  }

  // repeated string string_names = 14;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(string_names_.size());
  for (int i = 0, n = string_names_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      string_names_.Get(i));
  }

  // repeated string string_values = 15;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(string_values_.size());
  for (int i = 0, n = string_values_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      string_values_.Get(i));
  }

  // repeated string string_descriptions = 16;
  total_size += 2 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(string_descriptions_.size());
  for (int i = 0, n = string_descriptions_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      string_descriptions_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Variables::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Variables::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Variables::GetClassData() const { return &_class_data_; }

void Variables::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Variables *>(to)->MergeFrom(
      static_cast<const Variables &>(from));
}


void Variables::MergeFrom(const Variables& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Messages.Variables)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  int_names_.MergeFrom(from.int_names_);
  int_values_.MergeFrom(from.int_values_);
  int_descriptions_.MergeFrom(from.int_descriptions_);
  bool_names_.MergeFrom(from.bool_names_);
  bool_values_.MergeFrom(from.bool_values_);
  bool_descriptions_.MergeFrom(from.bool_descriptions_);
  double_names_.MergeFrom(from.double_names_);
  double_values_.MergeFrom(from.double_values_);
  double_descriptions_.MergeFrom(from.double_descriptions_);
  string_names_.MergeFrom(from.string_names_);
  string_values_.MergeFrom(from.string_values_);
  string_descriptions_.MergeFrom(from.string_descriptions_);
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Variables::CopyFrom(const Variables& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Messages.Variables)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Variables::IsInitialized() const {
  return true;
}

void Variables::InternalSwap(Variables* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  int_names_.InternalSwap(&other->int_names_);
  int_values_.InternalSwap(&other->int_values_);
  int_descriptions_.InternalSwap(&other->int_descriptions_);
  bool_names_.InternalSwap(&other->bool_names_);
  bool_values_.InternalSwap(&other->bool_values_);
  bool_descriptions_.InternalSwap(&other->bool_descriptions_);
  double_names_.InternalSwap(&other->double_names_);
  double_values_.InternalSwap(&other->double_values_);
  double_descriptions_.InternalSwap(&other->double_descriptions_);
  string_names_.InternalSwap(&other->string_names_);
  string_values_.InternalSwap(&other->string_values_);
  string_descriptions_.InternalSwap(&other->string_descriptions_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Variables::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_concept_2eproto_getter, &descriptor_table_concept_2eproto_once,
      file_level_metadata_concept_2eproto[0]);
}

// ===================================================================

class Function::_Internal {
 public:
};

void Function::clear_data() {
  data_.Clear();
}
Function::Function(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  argument_types_(arena),
  argument_descriptions_(arena),
  inputs_(arena),
  outputs_(arena),
  constants_(arena),
  to_be_defined_(arena),
  data_(arena) {
  SharedCtor();
  // @@protoc_insertion_point(arena_constructor:Messages.Function)
}
Function::Function(const Function& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      argument_types_(from.argument_types_),
      argument_descriptions_(from.argument_descriptions_),
      inputs_(from.inputs_),
      outputs_(from.outputs_),
      constants_(from.constants_),
      to_be_defined_(from.to_be_defined_),
      data_(from.data_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    name_.Set(from._internal_name(), 
      GetArenaForAllocation());
  }
  ::memcpy(&cpu_capable_, &from.cpu_capable_,
    static_cast<size_t>(reinterpret_cast<char*>(&dont_flatten_) -
    reinterpret_cast<char*>(&cpu_capable_)) + sizeof(dont_flatten_));
  // @@protoc_insertion_point(copy_constructor:Messages.Function)
}

inline void Function::SharedCtor() {
name_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  name_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&cpu_capable_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&dont_flatten_) -
    reinterpret_cast<char*>(&cpu_capable_)) + sizeof(dont_flatten_));
}

Function::~Function() {
  // @@protoc_insertion_point(destructor:Messages.Function)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Function::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.Destroy();
}

void Function::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Function::Clear() {
// @@protoc_insertion_point(message_clear_start:Messages.Function)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  argument_types_.Clear();
  argument_descriptions_.Clear();
  inputs_.Clear();
  outputs_.Clear();
  constants_.Clear();
  to_be_defined_.Clear();
  data_.Clear();
  name_.ClearToEmpty();
  ::memset(&cpu_capable_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&dont_flatten_) -
      reinterpret_cast<char*>(&cpu_capable_)) + sizeof(dont_flatten_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Function::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "Messages.Function.name"));
        } else
          goto handle_unusual;
        continue;
      // repeated string argument_types = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_argument_types();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Function.argument_types"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string argument_descriptions = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_argument_descriptions();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Function.argument_descriptions"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string inputs = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_inputs();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Function.inputs"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string outputs = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_outputs();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Function.outputs"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string constants = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_constants();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Function.constants"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string to_be_defined = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_to_be_defined();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Function.to_be_defined"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Vector64 data = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_data(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr));
        } else
          goto handle_unusual;
        continue;
      // bool cpu_capable = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 80)) {
          cpu_capable_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool gpu_capable = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 88)) {
          gpu_capable_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool include_as_preprocessor = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
          include_as_preprocessor_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool omit_from_main_loop = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
          omit_from_main_loop_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool include_as_postprocessor = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 112)) {
          include_as_postprocessor_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool mutually_exclusive = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
          mutually_exclusive_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool only_once = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 128)) {
          only_once_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool push_front = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 136)) {
          push_front_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool dont_flatten = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 144)) {
          dont_flatten_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Function::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Messages.Function)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Function.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // repeated string argument_types = 2;
  for (int i = 0, n = this->_internal_argument_types_size(); i < n; i++) {
    const auto& s = this->_internal_argument_types(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Function.argument_types");
    target = stream->WriteString(2, s, target);
  }

  // repeated string argument_descriptions = 3;
  for (int i = 0, n = this->_internal_argument_descriptions_size(); i < n; i++) {
    const auto& s = this->_internal_argument_descriptions(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Function.argument_descriptions");
    target = stream->WriteString(3, s, target);
  }

  // repeated string inputs = 4;
  for (int i = 0, n = this->_internal_inputs_size(); i < n; i++) {
    const auto& s = this->_internal_inputs(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Function.inputs");
    target = stream->WriteString(4, s, target);
  }

  // repeated string outputs = 5;
  for (int i = 0, n = this->_internal_outputs_size(); i < n; i++) {
    const auto& s = this->_internal_outputs(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Function.outputs");
    target = stream->WriteString(5, s, target);
  }

  // repeated string constants = 6;
  for (int i = 0, n = this->_internal_constants_size(); i < n; i++) {
    const auto& s = this->_internal_constants(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Function.constants");
    target = stream->WriteString(6, s, target);
  }

  // repeated string to_be_defined = 7;
  for (int i = 0, n = this->_internal_to_be_defined_size(); i < n; i++) {
    const auto& s = this->_internal_to_be_defined(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Function.to_be_defined");
    target = stream->WriteString(7, s, target);
  }

  // repeated .Messages.Vector64 data = 8;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_data_size()); i < n; i++) {
    const auto& repfield = this->_internal_data(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream);
  }

  // bool cpu_capable = 10;
  if (this->_internal_cpu_capable() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(10, this->_internal_cpu_capable(), target);
  }

  // bool gpu_capable = 11;
  if (this->_internal_gpu_capable() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(11, this->_internal_gpu_capable(), target);
  }

  // bool include_as_preprocessor = 12;
  if (this->_internal_include_as_preprocessor() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(12, this->_internal_include_as_preprocessor(), target);
  }

  // bool omit_from_main_loop = 13;
  if (this->_internal_omit_from_main_loop() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(13, this->_internal_omit_from_main_loop(), target);
  }

  // bool include_as_postprocessor = 14;
  if (this->_internal_include_as_postprocessor() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(14, this->_internal_include_as_postprocessor(), target);
  }

  // bool mutually_exclusive = 15;
  if (this->_internal_mutually_exclusive() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(15, this->_internal_mutually_exclusive(), target);
  }

  // bool only_once = 16;
  if (this->_internal_only_once() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(16, this->_internal_only_once(), target);
  }

  // bool push_front = 17;
  if (this->_internal_push_front() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(17, this->_internal_push_front(), target);
  }

  // bool dont_flatten = 18;
  if (this->_internal_dont_flatten() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(18, this->_internal_dont_flatten(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Messages.Function)
  return target;
}

size_t Function::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Messages.Function)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string argument_types = 2;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(argument_types_.size());
  for (int i = 0, n = argument_types_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      argument_types_.Get(i));
  }

  // repeated string argument_descriptions = 3;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(argument_descriptions_.size());
  for (int i = 0, n = argument_descriptions_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      argument_descriptions_.Get(i));
  }

  // repeated string inputs = 4;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(inputs_.size());
  for (int i = 0, n = inputs_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      inputs_.Get(i));
  }

  // repeated string outputs = 5;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(outputs_.size());
  for (int i = 0, n = outputs_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      outputs_.Get(i));
  }

  // repeated string constants = 6;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(constants_.size());
  for (int i = 0, n = constants_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      constants_.Get(i));
  }

  // repeated string to_be_defined = 7;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(to_be_defined_.size());
  for (int i = 0, n = to_be_defined_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      to_be_defined_.Get(i));
  }

  // repeated .Messages.Vector64 data = 8;
  total_size += 1UL * this->_internal_data_size();
  for (const auto& msg : this->data_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // string name = 1;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // bool cpu_capable = 10;
  if (this->_internal_cpu_capable() != 0) {
    total_size += 1 + 1;
  }

  // bool gpu_capable = 11;
  if (this->_internal_gpu_capable() != 0) {
    total_size += 1 + 1;
  }

  // bool include_as_preprocessor = 12;
  if (this->_internal_include_as_preprocessor() != 0) {
    total_size += 1 + 1;
  }

  // bool omit_from_main_loop = 13;
  if (this->_internal_omit_from_main_loop() != 0) {
    total_size += 1 + 1;
  }

  // bool include_as_postprocessor = 14;
  if (this->_internal_include_as_postprocessor() != 0) {
    total_size += 1 + 1;
  }

  // bool mutually_exclusive = 15;
  if (this->_internal_mutually_exclusive() != 0) {
    total_size += 1 + 1;
  }

  // bool only_once = 16;
  if (this->_internal_only_once() != 0) {
    total_size += 2 + 1;
  }

  // bool push_front = 17;
  if (this->_internal_push_front() != 0) {
    total_size += 2 + 1;
  }

  // bool dont_flatten = 18;
  if (this->_internal_dont_flatten() != 0) {
    total_size += 2 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Function::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Function::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Function::GetClassData() const { return &_class_data_; }

void Function::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Function *>(to)->MergeFrom(
      static_cast<const Function &>(from));
}


void Function::MergeFrom(const Function& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Messages.Function)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  argument_types_.MergeFrom(from.argument_types_);
  argument_descriptions_.MergeFrom(from.argument_descriptions_);
  inputs_.MergeFrom(from.inputs_);
  outputs_.MergeFrom(from.outputs_);
  constants_.MergeFrom(from.constants_);
  to_be_defined_.MergeFrom(from.to_be_defined_);
  data_.MergeFrom(from.data_);
  if (!from._internal_name().empty()) {
    _internal_set_name(from._internal_name());
  }
  if (from._internal_cpu_capable() != 0) {
    _internal_set_cpu_capable(from._internal_cpu_capable());
  }
  if (from._internal_gpu_capable() != 0) {
    _internal_set_gpu_capable(from._internal_gpu_capable());
  }
  if (from._internal_include_as_preprocessor() != 0) {
    _internal_set_include_as_preprocessor(from._internal_include_as_preprocessor());
  }
  if (from._internal_omit_from_main_loop() != 0) {
    _internal_set_omit_from_main_loop(from._internal_omit_from_main_loop());
  }
  if (from._internal_include_as_postprocessor() != 0) {
    _internal_set_include_as_postprocessor(from._internal_include_as_postprocessor());
  }
  if (from._internal_mutually_exclusive() != 0) {
    _internal_set_mutually_exclusive(from._internal_mutually_exclusive());
  }
  if (from._internal_only_once() != 0) {
    _internal_set_only_once(from._internal_only_once());
  }
  if (from._internal_push_front() != 0) {
    _internal_set_push_front(from._internal_push_front());
  }
  if (from._internal_dont_flatten() != 0) {
    _internal_set_dont_flatten(from._internal_dont_flatten());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Function::CopyFrom(const Function& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Messages.Function)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Function::IsInitialized() const {
  return true;
}

void Function::InternalSwap(Function* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  argument_types_.InternalSwap(&other->argument_types_);
  argument_descriptions_.InternalSwap(&other->argument_descriptions_);
  inputs_.InternalSwap(&other->inputs_);
  outputs_.InternalSwap(&other->outputs_);
  constants_.InternalSwap(&other->constants_);
  to_be_defined_.InternalSwap(&other->to_be_defined_);
  data_.InternalSwap(&other->data_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Function, dont_flatten_)
      + sizeof(Function::dont_flatten_)
      - PROTOBUF_FIELD_OFFSET(Function, cpu_capable_)>(
          reinterpret_cast<char*>(&cpu_capable_),
          reinterpret_cast<char*>(&other->cpu_capable_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Function::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_concept_2eproto_getter, &descriptor_table_concept_2eproto_once,
      file_level_metadata_concept_2eproto[1]);
}

// ===================================================================

class Command::_Internal {
 public:
  static const ::Messages::Function& function(const Command* msg);
  static const ::Messages::Record64& data(const Command* msg);
};

const ::Messages::Function&
Command::_Internal::function(const Command* msg) {
  return *msg->function_;
}
const ::Messages::Record64&
Command::_Internal::data(const Command* msg) {
  return *msg->data_;
}
void Command::clear_data() {
  if (GetArenaForAllocation() == nullptr && data_ != nullptr) {
    delete data_;
  }
  data_ = nullptr;
}
Command::Command(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  before_(arena),
  after_(arena) {
  SharedCtor();
  // @@protoc_insertion_point(arena_constructor:Messages.Command)
}
Command::Command(const Command& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      before_(from.before_),
      after_(from.after_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  msg_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    msg_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_msg().empty()) {
    msg_.Set(from._internal_msg(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_function()) {
    function_ = new ::Messages::Function(*from.function_);
  } else {
    function_ = nullptr;
  }
  if (from._internal_has_data()) {
    data_ = new ::Messages::Record64(*from.data_);
  } else {
    data_ = nullptr;
  }
  ::memcpy(&exec_count_, &from.exec_count_,
    static_cast<size_t>(reinterpret_cast<char*>(&region_id_) -
    reinterpret_cast<char*>(&exec_count_)) + sizeof(region_id_));
  // @@protoc_insertion_point(copy_constructor:Messages.Command)
}

inline void Command::SharedCtor() {
msg_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  msg_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&function_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&region_id_) -
    reinterpret_cast<char*>(&function_)) + sizeof(region_id_));
}

Command::~Command() {
  // @@protoc_insertion_point(destructor:Messages.Command)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Command::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  msg_.Destroy();
  if (this != internal_default_instance()) delete function_;
  if (this != internal_default_instance()) delete data_;
}

void Command::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Command::Clear() {
// @@protoc_insertion_point(message_clear_start:Messages.Command)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  before_.Clear();
  after_.Clear();
  msg_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && function_ != nullptr) {
    delete function_;
  }
  function_ = nullptr;
  if (GetArenaForAllocation() == nullptr && data_ != nullptr) {
    delete data_;
  }
  data_ = nullptr;
  ::memset(&exec_count_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&region_id_) -
      reinterpret_cast<char*>(&exec_count_)) + sizeof(region_id_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Command::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .Messages.Function function = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_function(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool args_are_set = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          args_are_set_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool is_ready = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          is_ready_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint64 exec_count = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          exec_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint64 simd_size = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          simd_size_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint64 version = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int64 id = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint64 n_kernel = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
          n_kernel_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float progress = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 77)) {
          progress_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // string msg = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          auto str = _internal_mutable_msg();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "Messages.Command.msg"));
        } else
          goto handle_unusual;
        continue;
      // .Messages.Record64 data = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_data(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Command before = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_before(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<106>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Command after = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_after(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<114>(ptr));
        } else
          goto handle_unusual;
        continue;
      // uint32 region_type = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
          region_type_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int32 region_id = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 128)) {
          region_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Command::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Messages.Command)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .Messages.Function function = 1;
  if (this->_internal_has_function()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::function(this),
        _Internal::function(this).GetCachedSize(), target, stream);
  }

  // bool args_are_set = 2;
  if (this->_internal_args_are_set() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(2, this->_internal_args_are_set(), target);
  }

  // bool is_ready = 3;
  if (this->_internal_is_ready() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(3, this->_internal_is_ready(), target);
  }

  // uint64 exec_count = 4;
  if (this->_internal_exec_count() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(4, this->_internal_exec_count(), target);
  }

  // uint64 simd_size = 5;
  if (this->_internal_simd_size() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(5, this->_internal_simd_size(), target);
  }

  // uint64 version = 6;
  if (this->_internal_version() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(6, this->_internal_version(), target);
  }

  // int64 id = 7;
  if (this->_internal_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt64ToArray(7, this->_internal_id(), target);
  }

  // uint64 n_kernel = 8;
  if (this->_internal_n_kernel() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(8, this->_internal_n_kernel(), target);
  }

  // float progress = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_progress = this->_internal_progress();
  uint32_t raw_progress;
  memcpy(&raw_progress, &tmp_progress, sizeof(tmp_progress));
  if (raw_progress != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(9, this->_internal_progress(), target);
  }

  // string msg = 10;
  if (!this->_internal_msg().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_msg().data(), static_cast<int>(this->_internal_msg().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Command.msg");
    target = stream->WriteStringMaybeAliased(
        10, this->_internal_msg(), target);
  }

  // .Messages.Record64 data = 12;
  if (this->_internal_has_data()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(12, _Internal::data(this),
        _Internal::data(this).GetCachedSize(), target, stream);
  }

  // repeated .Messages.Command before = 13;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_before_size()); i < n; i++) {
    const auto& repfield = this->_internal_before(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(13, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated .Messages.Command after = 14;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_after_size()); i < n; i++) {
    const auto& repfield = this->_internal_after(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(14, repfield, repfield.GetCachedSize(), target, stream);
  }

  // uint32 region_type = 15;
  if (this->_internal_region_type() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(15, this->_internal_region_type(), target);
  }

  // int32 region_id = 16;
  if (this->_internal_region_id() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(16, this->_internal_region_id(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Messages.Command)
  return target;
}

size_t Command::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Messages.Command)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .Messages.Command before = 13;
  total_size += 1UL * this->_internal_before_size();
  for (const auto& msg : this->before_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .Messages.Command after = 14;
  total_size += 1UL * this->_internal_after_size();
  for (const auto& msg : this->after_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // string msg = 10;
  if (!this->_internal_msg().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_msg());
  }

  // .Messages.Function function = 1;
  if (this->_internal_has_function()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *function_);
  }

  // .Messages.Record64 data = 12;
  if (this->_internal_has_data()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *data_);
  }

  // uint64 exec_count = 4;
  if (this->_internal_exec_count() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_exec_count());
  }

  // bool args_are_set = 2;
  if (this->_internal_args_are_set() != 0) {
    total_size += 1 + 1;
  }

  // bool is_ready = 3;
  if (this->_internal_is_ready() != 0) {
    total_size += 1 + 1;
  }

  // float progress = 9;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_progress = this->_internal_progress();
  uint32_t raw_progress;
  memcpy(&raw_progress, &tmp_progress, sizeof(tmp_progress));
  if (raw_progress != 0) {
    total_size += 1 + 4;
  }

  // uint64 simd_size = 5;
  if (this->_internal_simd_size() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_simd_size());
  }

  // uint64 version = 6;
  if (this->_internal_version() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_version());
  }

  // int64 id = 7;
  if (this->_internal_id() != 0) {
    total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(this->_internal_id());
  }

  // uint64 n_kernel = 8;
  if (this->_internal_n_kernel() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_n_kernel());
  }

  // uint32 region_type = 15;
  if (this->_internal_region_type() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_region_type());
  }

  // int32 region_id = 16;
  if (this->_internal_region_id() != 0) {
    total_size += 2 +
      ::_pbi::WireFormatLite::Int32Size(
        this->_internal_region_id());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Command::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Command::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Command::GetClassData() const { return &_class_data_; }

void Command::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Command *>(to)->MergeFrom(
      static_cast<const Command &>(from));
}


void Command::MergeFrom(const Command& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Messages.Command)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  before_.MergeFrom(from.before_);
  after_.MergeFrom(from.after_);
  if (!from._internal_msg().empty()) {
    _internal_set_msg(from._internal_msg());
  }
  if (from._internal_has_function()) {
    _internal_mutable_function()->::Messages::Function::MergeFrom(from._internal_function());
  }
  if (from._internal_has_data()) {
    _internal_mutable_data()->::Messages::Record64::MergeFrom(from._internal_data());
  }
  if (from._internal_exec_count() != 0) {
    _internal_set_exec_count(from._internal_exec_count());
  }
  if (from._internal_args_are_set() != 0) {
    _internal_set_args_are_set(from._internal_args_are_set());
  }
  if (from._internal_is_ready() != 0) {
    _internal_set_is_ready(from._internal_is_ready());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_progress = from._internal_progress();
  uint32_t raw_progress;
  memcpy(&raw_progress, &tmp_progress, sizeof(tmp_progress));
  if (raw_progress != 0) {
    _internal_set_progress(from._internal_progress());
  }
  if (from._internal_simd_size() != 0) {
    _internal_set_simd_size(from._internal_simd_size());
  }
  if (from._internal_version() != 0) {
    _internal_set_version(from._internal_version());
  }
  if (from._internal_id() != 0) {
    _internal_set_id(from._internal_id());
  }
  if (from._internal_n_kernel() != 0) {
    _internal_set_n_kernel(from._internal_n_kernel());
  }
  if (from._internal_region_type() != 0) {
    _internal_set_region_type(from._internal_region_type());
  }
  if (from._internal_region_id() != 0) {
    _internal_set_region_id(from._internal_region_id());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Command::CopyFrom(const Command& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Messages.Command)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Command::IsInitialized() const {
  return true;
}

void Command::InternalSwap(Command* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  before_.InternalSwap(&other->before_);
  after_.InternalSwap(&other->after_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &msg_, lhs_arena,
      &other->msg_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Command, region_id_)
      + sizeof(Command::region_id_)
      - PROTOBUF_FIELD_OFFSET(Command, function_)>(
          reinterpret_cast<char*>(&function_),
          reinterpret_cast<char*>(&other->function_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Command::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_concept_2eproto_getter, &descriptor_table_concept_2eproto_once,
      file_level_metadata_concept_2eproto[2]);
}

// ===================================================================

class Script::_Internal {
 public:
  static const ::Messages::Variables& variables(const Script* msg);
  static const ::Messages::Script& before(const Script* msg);
  static const ::Messages::Script& after(const Script* msg);
};

const ::Messages::Variables&
Script::_Internal::variables(const Script* msg) {
  return *msg->variables_;
}
const ::Messages::Script&
Script::_Internal::before(const Script* msg) {
  return *msg->before_;
}
const ::Messages::Script&
Script::_Internal::after(const Script* msg) {
  return *msg->after_;
}
Script::Script(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  sequence_(arena) {
  SharedCtor();
  // @@protoc_insertion_point(arena_constructor:Messages.Script)
}
Script::Script(const Script& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      sequence_(from.sequence_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    name_.Set(from._internal_name(), 
      GetArenaForAllocation());
  }
  msg_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    msg_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_msg().empty()) {
    msg_.Set(from._internal_msg(), 
      GetArenaForAllocation());
  }
  source_code_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    source_code_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_source_code().empty()) {
    source_code_.Set(from._internal_source_code(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_variables()) {
    variables_ = new ::Messages::Variables(*from.variables_);
  } else {
    variables_ = nullptr;
  }
  if (from._internal_has_before()) {
    before_ = new ::Messages::Script(*from.before_);
  } else {
    before_ = nullptr;
  }
  if (from._internal_has_after()) {
    after_ = new ::Messages::Script(*from.after_);
  } else {
    after_ = nullptr;
  }
  ::memcpy(&uid_, &from.uid_,
    static_cast<size_t>(reinterpret_cast<char*>(&progress_) -
    reinterpret_cast<char*>(&uid_)) + sizeof(progress_));
  // @@protoc_insertion_point(copy_constructor:Messages.Script)
}

inline void Script::SharedCtor() {
name_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  name_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
msg_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  msg_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
source_code_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  source_code_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&variables_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&progress_) -
    reinterpret_cast<char*>(&variables_)) + sizeof(progress_));
}

Script::~Script() {
  // @@protoc_insertion_point(destructor:Messages.Script)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Script::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.Destroy();
  msg_.Destroy();
  source_code_.Destroy();
  if (this != internal_default_instance()) delete variables_;
  if (this != internal_default_instance()) delete before_;
  if (this != internal_default_instance()) delete after_;
}

void Script::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Script::Clear() {
// @@protoc_insertion_point(message_clear_start:Messages.Script)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  sequence_.Clear();
  name_.ClearToEmpty();
  msg_.ClearToEmpty();
  source_code_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && variables_ != nullptr) {
    delete variables_;
  }
  variables_ = nullptr;
  if (GetArenaForAllocation() == nullptr && before_ != nullptr) {
    delete before_;
  }
  before_ = nullptr;
  if (GetArenaForAllocation() == nullptr && after_ != nullptr) {
    delete after_;
  }
  after_ = nullptr;
  ::memset(&uid_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&progress_) -
      reinterpret_cast<char*>(&uid_)) + sizeof(progress_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Script::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "Messages.Script.name"));
        } else
          goto handle_unusual;
        continue;
      // string msg = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_msg();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "Messages.Script.msg"));
        } else
          goto handle_unusual;
        continue;
      // string source_code = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_source_code();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "Messages.Script.source_code"));
        } else
          goto handle_unusual;
        continue;
      // int64 uid = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          uid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 device = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          device_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 status = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          status_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 order = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          order_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // float progress = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 69)) {
          progress_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // .Messages.Variables variables = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_variables(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Command Sequence = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_sequence(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<98>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .Messages.Script before = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_before(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .Messages.Script after = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 122)) {
          ptr = ctx->ParseMessage(_internal_mutable_after(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Script::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Messages.Script)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Script.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // string msg = 2;
  if (!this->_internal_msg().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_msg().data(), static_cast<int>(this->_internal_msg().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Script.msg");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_msg(), target);
  }

  // string source_code = 3;
  if (!this->_internal_source_code().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_source_code().data(), static_cast<int>(this->_internal_source_code().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Script.source_code");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_source_code(), target);
  }

  // int64 uid = 4;
  if (this->_internal_uid() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt64ToArray(4, this->_internal_uid(), target);
  }

  // uint32 device = 5;
  if (this->_internal_device() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(5, this->_internal_device(), target);
  }

  // uint32 status = 6;
  if (this->_internal_status() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(6, this->_internal_status(), target);
  }

  // uint32 order = 7;
  if (this->_internal_order() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(7, this->_internal_order(), target);
  }

  // float progress = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_progress = this->_internal_progress();
  uint32_t raw_progress;
  memcpy(&raw_progress, &tmp_progress, sizeof(tmp_progress));
  if (raw_progress != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(8, this->_internal_progress(), target);
  }

  // .Messages.Variables variables = 10;
  if (this->_internal_has_variables()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(10, _Internal::variables(this),
        _Internal::variables(this).GetCachedSize(), target, stream);
  }

  // repeated .Messages.Command Sequence = 12;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_sequence_size()); i < n; i++) {
    const auto& repfield = this->_internal_sequence(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(12, repfield, repfield.GetCachedSize(), target, stream);
  }

  // .Messages.Script before = 14;
  if (this->_internal_has_before()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(14, _Internal::before(this),
        _Internal::before(this).GetCachedSize(), target, stream);
  }

  // .Messages.Script after = 15;
  if (this->_internal_has_after()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(15, _Internal::after(this),
        _Internal::after(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Messages.Script)
  return target;
}

size_t Script::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Messages.Script)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .Messages.Command Sequence = 12;
  total_size += 1UL * this->_internal_sequence_size();
  for (const auto& msg : this->sequence_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // string name = 1;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // string msg = 2;
  if (!this->_internal_msg().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_msg());
  }

  // string source_code = 3;
  if (!this->_internal_source_code().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_source_code());
  }

  // .Messages.Variables variables = 10;
  if (this->_internal_has_variables()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *variables_);
  }

  // .Messages.Script before = 14;
  if (this->_internal_has_before()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *before_);
  }

  // .Messages.Script after = 15;
  if (this->_internal_has_after()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *after_);
  }

  // int64 uid = 4;
  if (this->_internal_uid() != 0) {
    total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(this->_internal_uid());
  }

  // uint32 device = 5;
  if (this->_internal_device() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_device());
  }

  // uint32 status = 6;
  if (this->_internal_status() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_status());
  }

  // uint32 order = 7;
  if (this->_internal_order() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_order());
  }

  // float progress = 8;
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_progress = this->_internal_progress();
  uint32_t raw_progress;
  memcpy(&raw_progress, &tmp_progress, sizeof(tmp_progress));
  if (raw_progress != 0) {
    total_size += 1 + 4;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Script::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Script::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Script::GetClassData() const { return &_class_data_; }

void Script::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Script *>(to)->MergeFrom(
      static_cast<const Script &>(from));
}


void Script::MergeFrom(const Script& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Messages.Script)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  sequence_.MergeFrom(from.sequence_);
  if (!from._internal_name().empty()) {
    _internal_set_name(from._internal_name());
  }
  if (!from._internal_msg().empty()) {
    _internal_set_msg(from._internal_msg());
  }
  if (!from._internal_source_code().empty()) {
    _internal_set_source_code(from._internal_source_code());
  }
  if (from._internal_has_variables()) {
    _internal_mutable_variables()->::Messages::Variables::MergeFrom(from._internal_variables());
  }
  if (from._internal_has_before()) {
    _internal_mutable_before()->::Messages::Script::MergeFrom(from._internal_before());
  }
  if (from._internal_has_after()) {
    _internal_mutable_after()->::Messages::Script::MergeFrom(from._internal_after());
  }
  if (from._internal_uid() != 0) {
    _internal_set_uid(from._internal_uid());
  }
  if (from._internal_device() != 0) {
    _internal_set_device(from._internal_device());
  }
  if (from._internal_status() != 0) {
    _internal_set_status(from._internal_status());
  }
  if (from._internal_order() != 0) {
    _internal_set_order(from._internal_order());
  }
  static_assert(sizeof(uint32_t) == sizeof(float), "Code assumes uint32_t and float are the same size.");
  float tmp_progress = from._internal_progress();
  uint32_t raw_progress;
  memcpy(&raw_progress, &tmp_progress, sizeof(tmp_progress));
  if (raw_progress != 0) {
    _internal_set_progress(from._internal_progress());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Script::CopyFrom(const Script& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Messages.Script)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Script::IsInitialized() const {
  return true;
}

void Script::InternalSwap(Script* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  sequence_.InternalSwap(&other->sequence_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &msg_, lhs_arena,
      &other->msg_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &source_code_, lhs_arena,
      &other->source_code_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Script, progress_)
      + sizeof(Script::progress_)
      - PROTOBUF_FIELD_OFFSET(Script, variables_)>(
          reinterpret_cast<char*>(&variables_),
          reinterpret_cast<char*>(&other->variables_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Script::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_concept_2eproto_getter, &descriptor_table_concept_2eproto_once,
      file_level_metadata_concept_2eproto[3]);
}

// ===================================================================

class Model::_Internal {
 public:
  static const ::Messages::Record64& default_data(const Model* msg);
  static const ::Messages::SparseMatrix& markov_matrix(const Model* msg);
};

const ::Messages::Record64&
Model::_Internal::default_data(const Model* msg) {
  return *msg->default_data_;
}
const ::Messages::SparseMatrix&
Model::_Internal::markov_matrix(const Model* msg) {
  return *msg->markov_matrix_;
}
void Model::clear_default_data() {
  if (GetArenaForAllocation() == nullptr && default_data_ != nullptr) {
    delete default_data_;
  }
  default_data_ = nullptr;
}
void Model::clear_rules() {
  rules_.Clear();
}
void Model::clear_mutex_stack() {
  mutex_stack_.Clear();
}
void Model::clear_markov_matrix() {
  if (GetArenaForAllocation() == nullptr && markov_matrix_ != nullptr) {
    delete markov_matrix_;
  }
  markov_matrix_ = nullptr;
}
Model::Model(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  dofs_(arena),
  algorithms_(arena),
  available_outputs_(arena),
  extra_properties_(arena),
  compatible_conditions_(arena),
  sub_models_(arena),
  rules_(arena),
  mutex_stack_(arena) {
  SharedCtor();
  // @@protoc_insertion_point(arena_constructor:Messages.Model)
}
Model::Model(const Model& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      dofs_(from.dofs_),
      algorithms_(from.algorithms_),
      available_outputs_(from.available_outputs_),
      extra_properties_(from.extra_properties_),
      compatible_conditions_(from.compatible_conditions_),
      sub_models_(from.sub_models_),
      rules_(from.rules_),
      mutex_stack_(from.mutex_stack_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    name_.Set(from._internal_name(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_default_data()) {
    default_data_ = new ::Messages::Record64(*from.default_data_);
  } else {
    default_data_ = nullptr;
  }
  if (from._internal_has_markov_matrix()) {
    markov_matrix_ = new ::Messages::SparseMatrix(*from.markov_matrix_);
  } else {
    markov_matrix_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:Messages.Model)
}

inline void Model::SharedCtor() {
name_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  name_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&default_data_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&markov_matrix_) -
    reinterpret_cast<char*>(&default_data_)) + sizeof(markov_matrix_));
}

Model::~Model() {
  // @@protoc_insertion_point(destructor:Messages.Model)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Model::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  name_.Destroy();
  if (this != internal_default_instance()) delete default_data_;
  if (this != internal_default_instance()) delete markov_matrix_;
}

void Model::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Model::Clear() {
// @@protoc_insertion_point(message_clear_start:Messages.Model)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  dofs_.Clear();
  algorithms_.Clear();
  available_outputs_.Clear();
  extra_properties_.Clear();
  compatible_conditions_.Clear();
  sub_models_.Clear();
  rules_.Clear();
  mutex_stack_.Clear();
  name_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && default_data_ != nullptr) {
    delete default_data_;
  }
  default_data_ = nullptr;
  if (GetArenaForAllocation() == nullptr && markov_matrix_ != nullptr) {
    delete markov_matrix_;
  }
  markov_matrix_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Model::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "Messages.Model.name"));
        } else
          goto handle_unusual;
        continue;
      // repeated string dofs = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_dofs();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Model.dofs"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string algorithms = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_algorithms();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Model.algorithms"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string available_outputs = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_available_outputs();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Model.available_outputs"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string extra_properties = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_extra_properties();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Model.extra_properties"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string compatible_conditions = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_compatible_conditions();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Model.compatible_conditions"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Model sub_models = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_sub_models(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .Messages.Record64 default_data = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr = ctx->ParseMessage(_internal_mutable_default_data(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Rule rules = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_rules(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Rule mutex_stack = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_mutex_stack(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<98>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .Messages.SparseMatrix markov_matrix = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 122)) {
          ptr = ctx->ParseMessage(_internal_mutable_markov_matrix(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Model::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Messages.Model)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string name = 1;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Model.name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_name(), target);
  }

  // repeated string dofs = 3;
  for (int i = 0, n = this->_internal_dofs_size(); i < n; i++) {
    const auto& s = this->_internal_dofs(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Model.dofs");
    target = stream->WriteString(3, s, target);
  }

  // repeated string algorithms = 4;
  for (int i = 0, n = this->_internal_algorithms_size(); i < n; i++) {
    const auto& s = this->_internal_algorithms(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Model.algorithms");
    target = stream->WriteString(4, s, target);
  }

  // repeated string available_outputs = 5;
  for (int i = 0, n = this->_internal_available_outputs_size(); i < n; i++) {
    const auto& s = this->_internal_available_outputs(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Model.available_outputs");
    target = stream->WriteString(5, s, target);
  }

  // repeated string extra_properties = 6;
  for (int i = 0, n = this->_internal_extra_properties_size(); i < n; i++) {
    const auto& s = this->_internal_extra_properties(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Model.extra_properties");
    target = stream->WriteString(6, s, target);
  }

  // repeated string compatible_conditions = 7;
  for (int i = 0, n = this->_internal_compatible_conditions_size(); i < n; i++) {
    const auto& s = this->_internal_compatible_conditions(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Model.compatible_conditions");
    target = stream->WriteString(7, s, target);
  }

  // repeated .Messages.Model sub_models = 9;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_sub_models_size()); i < n; i++) {
    const auto& repfield = this->_internal_sub_models(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(9, repfield, repfield.GetCachedSize(), target, stream);
  }

  // .Messages.Record64 default_data = 10;
  if (this->_internal_has_default_data()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(10, _Internal::default_data(this),
        _Internal::default_data(this).GetCachedSize(), target, stream);
  }

  // repeated .Messages.Rule rules = 11;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_rules_size()); i < n; i++) {
    const auto& repfield = this->_internal_rules(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(11, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated .Messages.Rule mutex_stack = 12;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_mutex_stack_size()); i < n; i++) {
    const auto& repfield = this->_internal_mutex_stack(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(12, repfield, repfield.GetCachedSize(), target, stream);
  }

  // .Messages.SparseMatrix markov_matrix = 15;
  if (this->_internal_has_markov_matrix()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(15, _Internal::markov_matrix(this),
        _Internal::markov_matrix(this).GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Messages.Model)
  return target;
}

size_t Model::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Messages.Model)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string dofs = 3;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(dofs_.size());
  for (int i = 0, n = dofs_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      dofs_.Get(i));
  }

  // repeated string algorithms = 4;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(algorithms_.size());
  for (int i = 0, n = algorithms_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      algorithms_.Get(i));
  }

  // repeated string available_outputs = 5;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(available_outputs_.size());
  for (int i = 0, n = available_outputs_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      available_outputs_.Get(i));
  }

  // repeated string extra_properties = 6;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(extra_properties_.size());
  for (int i = 0, n = extra_properties_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      extra_properties_.Get(i));
  }

  // repeated string compatible_conditions = 7;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(compatible_conditions_.size());
  for (int i = 0, n = compatible_conditions_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      compatible_conditions_.Get(i));
  }

  // repeated .Messages.Model sub_models = 9;
  total_size += 1UL * this->_internal_sub_models_size();
  for (const auto& msg : this->sub_models_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .Messages.Rule rules = 11;
  total_size += 1UL * this->_internal_rules_size();
  for (const auto& msg : this->rules_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .Messages.Rule mutex_stack = 12;
  total_size += 1UL * this->_internal_mutex_stack_size();
  for (const auto& msg : this->mutex_stack_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // string name = 1;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // .Messages.Record64 default_data = 10;
  if (this->_internal_has_default_data()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *default_data_);
  }

  // .Messages.SparseMatrix markov_matrix = 15;
  if (this->_internal_has_markov_matrix()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *markov_matrix_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Model::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Model::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Model::GetClassData() const { return &_class_data_; }

void Model::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Model *>(to)->MergeFrom(
      static_cast<const Model &>(from));
}


void Model::MergeFrom(const Model& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Messages.Model)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  dofs_.MergeFrom(from.dofs_);
  algorithms_.MergeFrom(from.algorithms_);
  available_outputs_.MergeFrom(from.available_outputs_);
  extra_properties_.MergeFrom(from.extra_properties_);
  compatible_conditions_.MergeFrom(from.compatible_conditions_);
  sub_models_.MergeFrom(from.sub_models_);
  rules_.MergeFrom(from.rules_);
  mutex_stack_.MergeFrom(from.mutex_stack_);
  if (!from._internal_name().empty()) {
    _internal_set_name(from._internal_name());
  }
  if (from._internal_has_default_data()) {
    _internal_mutable_default_data()->::Messages::Record64::MergeFrom(from._internal_default_data());
  }
  if (from._internal_has_markov_matrix()) {
    _internal_mutable_markov_matrix()->::Messages::SparseMatrix::MergeFrom(from._internal_markov_matrix());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Model::CopyFrom(const Model& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Messages.Model)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Model::IsInitialized() const {
  return true;
}

void Model::InternalSwap(Model* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  dofs_.InternalSwap(&other->dofs_);
  algorithms_.InternalSwap(&other->algorithms_);
  available_outputs_.InternalSwap(&other->available_outputs_);
  extra_properties_.InternalSwap(&other->extra_properties_);
  compatible_conditions_.InternalSwap(&other->compatible_conditions_);
  sub_models_.InternalSwap(&other->sub_models_);
  rules_.InternalSwap(&other->rules_);
  mutex_stack_.InternalSwap(&other->mutex_stack_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Model, markov_matrix_)
      + sizeof(Model::markov_matrix_)
      - PROTOBUF_FIELD_OFFSET(Model, default_data_)>(
          reinterpret_cast<char*>(&default_data_),
          reinterpret_cast<char*>(&other->default_data_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Model::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_concept_2eproto_getter, &descriptor_table_concept_2eproto_once,
      file_level_metadata_concept_2eproto[4]);
}

// ===================================================================

class Coupling::_Internal {
 public:
  static const ::Messages::Zone& source_region(const Coupling* msg);
  static const ::Messages::Zone& target_region(const Coupling* msg);
  static const ::Messages::Representation& representation(const Coupling* msg);
};

const ::Messages::Zone&
Coupling::_Internal::source_region(const Coupling* msg) {
  return *msg->source_region_;
}
const ::Messages::Zone&
Coupling::_Internal::target_region(const Coupling* msg) {
  return *msg->target_region_;
}
const ::Messages::Representation&
Coupling::_Internal::representation(const Coupling* msg) {
  return *msg->representation_;
}
void Coupling::clear_source_region() {
  if (GetArenaForAllocation() == nullptr && source_region_ != nullptr) {
    delete source_region_;
  }
  source_region_ = nullptr;
}
void Coupling::clear_target_region() {
  if (GetArenaForAllocation() == nullptr && target_region_ != nullptr) {
    delete target_region_;
  }
  target_region_ = nullptr;
}
void Coupling::clear_representation() {
  if (GetArenaForAllocation() == nullptr && representation_ != nullptr) {
    delete representation_;
  }
  representation_ = nullptr;
}
Coupling::Coupling(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  dofs_(arena) {
  SharedCtor();
  // @@protoc_insertion_point(arena_constructor:Messages.Coupling)
}
Coupling::Coupling(const Coupling& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      dofs_(from.dofs_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  source_system_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    source_system_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_source_system().empty()) {
    source_system_.Set(from._internal_source_system(), 
      GetArenaForAllocation());
  }
  target_system_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    target_system_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_target_system().empty()) {
    target_system_.Set(from._internal_target_system(), 
      GetArenaForAllocation());
  }
  name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (!from._internal_name().empty()) {
    name_.Set(from._internal_name(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_source_region()) {
    source_region_ = new ::Messages::Zone(*from.source_region_);
  } else {
    source_region_ = nullptr;
  }
  if (from._internal_has_target_region()) {
    target_region_ = new ::Messages::Zone(*from.target_region_);
  } else {
    target_region_ = nullptr;
  }
  if (from._internal_has_representation()) {
    representation_ = new ::Messages::Representation(*from.representation_);
  } else {
    representation_ = nullptr;
  }
  ::memcpy(&source_uid_, &from.source_uid_,
    static_cast<size_t>(reinterpret_cast<char*>(&reverse_) -
    reinterpret_cast<char*>(&source_uid_)) + sizeof(reverse_));
  // @@protoc_insertion_point(copy_constructor:Messages.Coupling)
}

inline void Coupling::SharedCtor() {
source_system_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  source_system_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
target_system_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  target_system_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
name_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  name_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&source_region_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&reverse_) -
    reinterpret_cast<char*>(&source_region_)) + sizeof(reverse_));
}

Coupling::~Coupling() {
  // @@protoc_insertion_point(destructor:Messages.Coupling)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void Coupling::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  source_system_.Destroy();
  target_system_.Destroy();
  name_.Destroy();
  if (this != internal_default_instance()) delete source_region_;
  if (this != internal_default_instance()) delete target_region_;
  if (this != internal_default_instance()) delete representation_;
}

void Coupling::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Coupling::Clear() {
// @@protoc_insertion_point(message_clear_start:Messages.Coupling)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  dofs_.Clear();
  source_system_.ClearToEmpty();
  target_system_.ClearToEmpty();
  name_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && source_region_ != nullptr) {
    delete source_region_;
  }
  source_region_ = nullptr;
  if (GetArenaForAllocation() == nullptr && target_region_ != nullptr) {
    delete target_region_;
  }
  target_region_ = nullptr;
  if (GetArenaForAllocation() == nullptr && representation_ != nullptr) {
    delete representation_;
  }
  representation_ = nullptr;
  ::memset(&source_uid_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&reverse_) -
      reinterpret_cast<char*>(&source_uid_)) + sizeof(reverse_));
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* Coupling::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string source_system = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_source_system();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "Messages.Coupling.source_system"));
        } else
          goto handle_unusual;
        continue;
      // string target_system = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_target_system();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "Messages.Coupling.target_system"));
        } else
          goto handle_unusual;
        continue;
      // int64 source_uid = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          source_uid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int64 target_uid = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          target_uid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .Messages.Zone source_region = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_source_region(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .Messages.Zone target_region = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_target_region(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // uint32 sampling_mode = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
          sampling_mode_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string name = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          auto str = _internal_mutable_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          CHK_(::_pbi::VerifyUTF8(str, "Messages.Coupling.name"));
        } else
          goto handle_unusual;
        continue;
      // repeated string dofs = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_dofs();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.Coupling.dofs"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .Messages.Representation representation = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_representation(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool enabled = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
          enabled_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool forward = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 112)) {
          forward_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // bool reverse = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
          reverse_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* Coupling::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Messages.Coupling)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // string source_system = 1;
  if (!this->_internal_source_system().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_source_system().data(), static_cast<int>(this->_internal_source_system().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Coupling.source_system");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_source_system(), target);
  }

  // string target_system = 2;
  if (!this->_internal_target_system().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_target_system().data(), static_cast<int>(this->_internal_target_system().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Coupling.target_system");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_target_system(), target);
  }

  // int64 source_uid = 3;
  if (this->_internal_source_uid() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt64ToArray(3, this->_internal_source_uid(), target);
  }

  // int64 target_uid = 4;
  if (this->_internal_target_uid() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt64ToArray(4, this->_internal_target_uid(), target);
  }

  // .Messages.Zone source_region = 5;
  if (this->_internal_has_source_region()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, _Internal::source_region(this),
        _Internal::source_region(this).GetCachedSize(), target, stream);
  }

  // .Messages.Zone target_region = 6;
  if (this->_internal_has_target_region()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::target_region(this),
        _Internal::target_region(this).GetCachedSize(), target, stream);
  }

  // uint32 sampling_mode = 9;
  if (this->_internal_sampling_mode() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(9, this->_internal_sampling_mode(), target);
  }

  // string name = 10;
  if (!this->_internal_name().empty()) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_name().data(), static_cast<int>(this->_internal_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Coupling.name");
    target = stream->WriteStringMaybeAliased(
        10, this->_internal_name(), target);
  }

  // repeated string dofs = 11;
  for (int i = 0, n = this->_internal_dofs_size(); i < n; i++) {
    const auto& s = this->_internal_dofs(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.Coupling.dofs");
    target = stream->WriteString(11, s, target);
  }

  // .Messages.Representation representation = 12;
  if (this->_internal_has_representation()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(12, _Internal::representation(this),
        _Internal::representation(this).GetCachedSize(), target, stream);
  }

  // bool enabled = 13;
  if (this->_internal_enabled() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(13, this->_internal_enabled(), target);
  }

  // bool forward = 14;
  if (this->_internal_forward() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(14, this->_internal_forward(), target);
  }

  // bool reverse = 15;
  if (this->_internal_reverse() != 0) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(15, this->_internal_reverse(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Messages.Coupling)
  return target;
}

size_t Coupling::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Messages.Coupling)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated string dofs = 11;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(dofs_.size());
  for (int i = 0, n = dofs_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      dofs_.Get(i));
  }

  // string source_system = 1;
  if (!this->_internal_source_system().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_source_system());
  }

  // string target_system = 2;
  if (!this->_internal_target_system().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_target_system());
  }

  // string name = 10;
  if (!this->_internal_name().empty()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_name());
  }

  // .Messages.Zone source_region = 5;
  if (this->_internal_has_source_region()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *source_region_);
  }

  // .Messages.Zone target_region = 6;
  if (this->_internal_has_target_region()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *target_region_);
  }

  // .Messages.Representation representation = 12;
  if (this->_internal_has_representation()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *representation_);
  }

  // int64 source_uid = 3;
  if (this->_internal_source_uid() != 0) {
    total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(this->_internal_source_uid());
  }

  // int64 target_uid = 4;
  if (this->_internal_target_uid() != 0) {
    total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(this->_internal_target_uid());
  }

  // uint32 sampling_mode = 9;
  if (this->_internal_sampling_mode() != 0) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_sampling_mode());
  }

  // bool enabled = 13;
  if (this->_internal_enabled() != 0) {
    total_size += 1 + 1;
  }

  // bool forward = 14;
  if (this->_internal_forward() != 0) {
    total_size += 1 + 1;
  }

  // bool reverse = 15;
  if (this->_internal_reverse() != 0) {
    total_size += 1 + 1;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData Coupling::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    Coupling::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*Coupling::GetClassData() const { return &_class_data_; }

void Coupling::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<Coupling *>(to)->MergeFrom(
      static_cast<const Coupling &>(from));
}


void Coupling::MergeFrom(const Coupling& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Messages.Coupling)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  dofs_.MergeFrom(from.dofs_);
  if (!from._internal_source_system().empty()) {
    _internal_set_source_system(from._internal_source_system());
  }
  if (!from._internal_target_system().empty()) {
    _internal_set_target_system(from._internal_target_system());
  }
  if (!from._internal_name().empty()) {
    _internal_set_name(from._internal_name());
  }
  if (from._internal_has_source_region()) {
    _internal_mutable_source_region()->::Messages::Zone::MergeFrom(from._internal_source_region());
  }
  if (from._internal_has_target_region()) {
    _internal_mutable_target_region()->::Messages::Zone::MergeFrom(from._internal_target_region());
  }
  if (from._internal_has_representation()) {
    _internal_mutable_representation()->::Messages::Representation::MergeFrom(from._internal_representation());
  }
  if (from._internal_source_uid() != 0) {
    _internal_set_source_uid(from._internal_source_uid());
  }
  if (from._internal_target_uid() != 0) {
    _internal_set_target_uid(from._internal_target_uid());
  }
  if (from._internal_sampling_mode() != 0) {
    _internal_set_sampling_mode(from._internal_sampling_mode());
  }
  if (from._internal_enabled() != 0) {
    _internal_set_enabled(from._internal_enabled());
  }
  if (from._internal_forward() != 0) {
    _internal_set_forward(from._internal_forward());
  }
  if (from._internal_reverse() != 0) {
    _internal_set_reverse(from._internal_reverse());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void Coupling::CopyFrom(const Coupling& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Messages.Coupling)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Coupling::IsInitialized() const {
  return true;
}

void Coupling::InternalSwap(Coupling* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  dofs_.InternalSwap(&other->dofs_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &source_system_, lhs_arena,
      &other->source_system_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &target_system_, lhs_arena,
      &other->target_system_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &name_, lhs_arena,
      &other->name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Coupling, reverse_)
      + sizeof(Coupling::reverse_)
      - PROTOBUF_FIELD_OFFSET(Coupling, source_region_)>(
          reinterpret_cast<char*>(&source_region_),
          reinterpret_cast<char*>(&other->source_region_));
}

::PROTOBUF_NAMESPACE_ID::Metadata Coupling::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_concept_2eproto_getter, &descriptor_table_concept_2eproto_once,
      file_level_metadata_concept_2eproto[5]);
}

// ===================================================================

class System::_Internal {
 public:
  static const ::Messages::Meta& meta(const System* msg);
  static const ::Messages::Record64& physical_constants(const System* msg);
};

const ::Messages::Meta&
System::_Internal::meta(const System* msg) {
  return *msg->meta_;
}
const ::Messages::Record64&
System::_Internal::physical_constants(const System* msg) {
  return *msg->physical_constants_;
}
void System::clear_meta() {
  if (GetArenaForAllocation() == nullptr && meta_ != nullptr) {
    delete meta_;
  }
  meta_ = nullptr;
}
void System::clear_embedded_files() {
  embedded_files_.Clear();
}
void System::clear_physical_constants() {
  if (GetArenaForAllocation() == nullptr && physical_constants_ != nullptr) {
    delete physical_constants_;
  }
  physical_constants_ = nullptr;
}
System::System(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
  script_(arena),
  local_transform_(arena),
  local_rate_(arena),
  local_accel_(arena),
  children_(arena),
  referenced_files_(arena),
  embedded_files_(arena),
  notes_(arena),
  couplings_(arena),
  models_(arena),
  conditions_(arena) {
  SharedCtor();
  // @@protoc_insertion_point(arena_constructor:Messages.System)
}
System::System(const System& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      script_(from.script_),
      local_transform_(from.local_transform_),
      local_rate_(from.local_rate_),
      local_accel_(from.local_accel_),
      children_(from.children_),
      referenced_files_(from.referenced_files_),
      embedded_files_(from.embedded_files_),
      notes_(from.notes_),
      couplings_(from.couplings_),
      models_(from.models_),
      conditions_(from.conditions_) {
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_meta()) {
    meta_ = new ::Messages::Meta(*from.meta_);
  } else {
    meta_ = nullptr;
  }
  if (from._internal_has_physical_constants()) {
    physical_constants_ = new ::Messages::Record64(*from.physical_constants_);
  } else {
    physical_constants_ = nullptr;
  }
  // @@protoc_insertion_point(copy_constructor:Messages.System)
}

inline void System::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&meta_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&physical_constants_) -
    reinterpret_cast<char*>(&meta_)) + sizeof(physical_constants_));
}

System::~System() {
  // @@protoc_insertion_point(destructor:Messages.System)
  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  (void)arena;
    return;
  }
  SharedDtor();
}

inline void System::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete meta_;
  if (this != internal_default_instance()) delete physical_constants_;
}

void System::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void System::Clear() {
// @@protoc_insertion_point(message_clear_start:Messages.System)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  script_.Clear();
  local_transform_.Clear();
  local_rate_.Clear();
  local_accel_.Clear();
  children_.Clear();
  referenced_files_.Clear();
  embedded_files_.Clear();
  notes_.Clear();
  couplings_.Clear();
  models_.Clear();
  conditions_.Clear();
  if (GetArenaForAllocation() == nullptr && meta_ != nullptr) {
    delete meta_;
  }
  meta_ = nullptr;
  if (GetArenaForAllocation() == nullptr && physical_constants_ != nullptr) {
    delete physical_constants_;
  }
  physical_constants_ = nullptr;
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* System::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // .Messages.Meta meta = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_meta(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Script script = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_script(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated double local_transform = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedDoubleParser(_internal_mutable_local_transform(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 25) {
          _internal_add_local_transform(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr));
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      // repeated double local_rate = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedDoubleParser(_internal_mutable_local_rate(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 33) {
          _internal_add_local_rate(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr));
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      // repeated double local_accel = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedDoubleParser(_internal_mutable_local_accel(), ptr, ctx);
          CHK_(ptr);
        } else if (static_cast<uint8_t>(tag) == 41) {
          _internal_add_local_accel(::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr));
          ptr += sizeof(double);
        } else
          goto handle_unusual;
        continue;
      // repeated string children = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_children();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.System.children"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string referenced_files = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_referenced_files();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.System.referenced_files"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.File embedded_files = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_embedded_files(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated string notes = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_notes();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            CHK_(::_pbi::VerifyUTF8(str, "Messages.System.notes"));
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Coupling couplings = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_couplings(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Model models = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_models(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<90>(ptr));
        } else
          goto handle_unusual;
        continue;
      // .Messages.Record64 physical_constants = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          ptr = ctx->ParseMessage(_internal_mutable_physical_constants(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .Messages.Command conditions = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_conditions(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<106>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

uint8_t* System::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:Messages.System)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // .Messages.Meta meta = 1;
  if (this->_internal_has_meta()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::meta(this),
        _Internal::meta(this).GetCachedSize(), target, stream);
  }

  // repeated .Messages.Script script = 2;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_script_size()); i < n; i++) {
    const auto& repfield = this->_internal_script(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated double local_transform = 3;
  if (this->_internal_local_transform_size() > 0) {
    target = stream->WriteFixedPacked(3, _internal_local_transform(), target);
  }

  // repeated double local_rate = 4;
  if (this->_internal_local_rate_size() > 0) {
    target = stream->WriteFixedPacked(4, _internal_local_rate(), target);
  }

  // repeated double local_accel = 5;
  if (this->_internal_local_accel_size() > 0) {
    target = stream->WriteFixedPacked(5, _internal_local_accel(), target);
  }

  // repeated string children = 6;
  for (int i = 0, n = this->_internal_children_size(); i < n; i++) {
    const auto& s = this->_internal_children(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.System.children");
    target = stream->WriteString(6, s, target);
  }

  // repeated string referenced_files = 7;
  for (int i = 0, n = this->_internal_referenced_files_size(); i < n; i++) {
    const auto& s = this->_internal_referenced_files(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.System.referenced_files");
    target = stream->WriteString(7, s, target);
  }

  // repeated .Messages.File embedded_files = 8;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_embedded_files_size()); i < n; i++) {
    const auto& repfield = this->_internal_embedded_files(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(8, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated string notes = 9;
  for (int i = 0, n = this->_internal_notes_size(); i < n; i++) {
    const auto& s = this->_internal_notes(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
      "Messages.System.notes");
    target = stream->WriteString(9, s, target);
  }

  // repeated .Messages.Coupling couplings = 10;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_couplings_size()); i < n; i++) {
    const auto& repfield = this->_internal_couplings(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(10, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated .Messages.Model models = 11;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_models_size()); i < n; i++) {
    const auto& repfield = this->_internal_models(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(11, repfield, repfield.GetCachedSize(), target, stream);
  }

  // .Messages.Record64 physical_constants = 12;
  if (this->_internal_has_physical_constants()) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(12, _Internal::physical_constants(this),
        _Internal::physical_constants(this).GetCachedSize(), target, stream);
  }

  // repeated .Messages.Command conditions = 13;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_conditions_size()); i < n; i++) {
    const auto& repfield = this->_internal_conditions(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(13, repfield, repfield.GetCachedSize(), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Messages.System)
  return target;
}

size_t System::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Messages.System)
  size_t total_size = 0;

  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // repeated .Messages.Script script = 2;
  total_size += 1UL * this->_internal_script_size();
  for (const auto& msg : this->script_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated double local_transform = 3;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_local_transform_size());
    size_t data_size = 8UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated double local_rate = 4;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_local_rate_size());
    size_t data_size = 8UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated double local_accel = 5;
  {
    unsigned int count = static_cast<unsigned int>(this->_internal_local_accel_size());
    size_t data_size = 8UL * count;
    if (data_size > 0) {
      total_size += 1 +
        ::_pbi::WireFormatLite::Int32Size(static_cast<int32_t>(data_size));
    }
    total_size += data_size;
  }

  // repeated string children = 6;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(children_.size());
  for (int i = 0, n = children_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      children_.Get(i));
  }

  // repeated string referenced_files = 7;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(referenced_files_.size());
  for (int i = 0, n = referenced_files_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      referenced_files_.Get(i));
  }

  // repeated .Messages.File embedded_files = 8;
  total_size += 1UL * this->_internal_embedded_files_size();
  for (const auto& msg : this->embedded_files_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated string notes = 9;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(notes_.size());
  for (int i = 0, n = notes_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      notes_.Get(i));
  }

  // repeated .Messages.Coupling couplings = 10;
  total_size += 1UL * this->_internal_couplings_size();
  for (const auto& msg : this->couplings_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .Messages.Model models = 11;
  total_size += 1UL * this->_internal_models_size();
  for (const auto& msg : this->models_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .Messages.Command conditions = 13;
  total_size += 1UL * this->_internal_conditions_size();
  for (const auto& msg : this->conditions_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // .Messages.Meta meta = 1;
  if (this->_internal_has_meta()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *meta_);
  }

  // .Messages.Record64 physical_constants = 12;
  if (this->_internal_has_physical_constants()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *physical_constants_);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::PROTOBUF_NAMESPACE_ID::Message::ClassData System::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
    System::MergeImpl
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*System::GetClassData() const { return &_class_data_; }

void System::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
                      const ::PROTOBUF_NAMESPACE_ID::Message& from) {
  static_cast<System *>(to)->MergeFrom(
      static_cast<const System &>(from));
}


void System::MergeFrom(const System& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Messages.System)
  GOOGLE_DCHECK_NE(&from, this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  script_.MergeFrom(from.script_);
  local_transform_.MergeFrom(from.local_transform_);
  local_rate_.MergeFrom(from.local_rate_);
  local_accel_.MergeFrom(from.local_accel_);
  children_.MergeFrom(from.children_);
  referenced_files_.MergeFrom(from.referenced_files_);
  embedded_files_.MergeFrom(from.embedded_files_);
  notes_.MergeFrom(from.notes_);
  couplings_.MergeFrom(from.couplings_);
  models_.MergeFrom(from.models_);
  conditions_.MergeFrom(from.conditions_);
  if (from._internal_has_meta()) {
    _internal_mutable_meta()->::Messages::Meta::MergeFrom(from._internal_meta());
  }
  if (from._internal_has_physical_constants()) {
    _internal_mutable_physical_constants()->::Messages::Record64::MergeFrom(from._internal_physical_constants());
  }
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void System::CopyFrom(const System& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Messages.System)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool System::IsInitialized() const {
  return true;
}

void System::InternalSwap(System* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  script_.InternalSwap(&other->script_);
  local_transform_.InternalSwap(&other->local_transform_);
  local_rate_.InternalSwap(&other->local_rate_);
  local_accel_.InternalSwap(&other->local_accel_);
  children_.InternalSwap(&other->children_);
  referenced_files_.InternalSwap(&other->referenced_files_);
  embedded_files_.InternalSwap(&other->embedded_files_);
  notes_.InternalSwap(&other->notes_);
  couplings_.InternalSwap(&other->couplings_);
  models_.InternalSwap(&other->models_);
  conditions_.InternalSwap(&other->conditions_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(System, physical_constants_)
      + sizeof(System::physical_constants_)
      - PROTOBUF_FIELD_OFFSET(System, meta_)>(
          reinterpret_cast<char*>(&meta_),
          reinterpret_cast<char*>(&other->meta_));
}

::PROTOBUF_NAMESPACE_ID::Metadata System::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_concept_2eproto_getter, &descriptor_table_concept_2eproto_once,
      file_level_metadata_concept_2eproto[6]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace Messages
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::Messages::Variables*
Arena::CreateMaybeMessage< ::Messages::Variables >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Messages::Variables >(arena);
}
template<> PROTOBUF_NOINLINE ::Messages::Function*
Arena::CreateMaybeMessage< ::Messages::Function >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Messages::Function >(arena);
}
template<> PROTOBUF_NOINLINE ::Messages::Command*
Arena::CreateMaybeMessage< ::Messages::Command >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Messages::Command >(arena);
}
template<> PROTOBUF_NOINLINE ::Messages::Script*
Arena::CreateMaybeMessage< ::Messages::Script >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Messages::Script >(arena);
}
template<> PROTOBUF_NOINLINE ::Messages::Model*
Arena::CreateMaybeMessage< ::Messages::Model >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Messages::Model >(arena);
}
template<> PROTOBUF_NOINLINE ::Messages::Coupling*
Arena::CreateMaybeMessage< ::Messages::Coupling >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Messages::Coupling >(arena);
}
template<> PROTOBUF_NOINLINE ::Messages::System*
Arena::CreateMaybeMessage< ::Messages::System >(Arena* arena) {
  return Arena::CreateMessageInternal< ::Messages::System >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
