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

#include "demo.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;

PROTOBUF_CONSTEXPR CDemoFileHeader::CDemoFileHeader(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.demo_file_stamp_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.server_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.client_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.map_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.game_directory_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.addons_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.demo_version_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.demo_version_guid_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.game_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.patch_version_)*/0
  , /*decltype(_impl_.fullpackets_version_)*/0
  , /*decltype(_impl_.allow_clientside_entities_)*/false
  , /*decltype(_impl_.allow_clientside_particles_)*/false
  , /*decltype(_impl_.build_num_)*/0
  , /*decltype(_impl_.server_start_tick_)*/0} {}
struct CDemoFileHeaderDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoFileHeaderDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoFileHeaderDefaultTypeInternal() {}
  union {
    CDemoFileHeader _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoFileHeaderDefaultTypeInternal _CDemoFileHeader_default_instance_;
PROTOBUF_CONSTEXPR CGameInfo_CDotaGameInfo_CPlayerInfo::CGameInfo_CDotaGameInfo_CPlayerInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.hero_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.player_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.steamid_)*/uint64_t{0u}
  , /*decltype(_impl_.is_fake_client_)*/false
  , /*decltype(_impl_.game_team_)*/0} {}
struct CGameInfo_CDotaGameInfo_CPlayerInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CGameInfo_CDotaGameInfo_CPlayerInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CGameInfo_CDotaGameInfo_CPlayerInfoDefaultTypeInternal() {}
  union {
    CGameInfo_CDotaGameInfo_CPlayerInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CGameInfo_CDotaGameInfo_CPlayerInfoDefaultTypeInternal _CGameInfo_CDotaGameInfo_CPlayerInfo_default_instance_;
PROTOBUF_CONSTEXPR CGameInfo_CDotaGameInfo_CHeroSelectEvent::CGameInfo_CDotaGameInfo_CHeroSelectEvent(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.is_pick_)*/false
  , /*decltype(_impl_.team_)*/0u
  , /*decltype(_impl_.hero_id_)*/0} {}
struct CGameInfo_CDotaGameInfo_CHeroSelectEventDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CGameInfo_CDotaGameInfo_CHeroSelectEventDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CGameInfo_CDotaGameInfo_CHeroSelectEventDefaultTypeInternal() {}
  union {
    CGameInfo_CDotaGameInfo_CHeroSelectEvent _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CGameInfo_CDotaGameInfo_CHeroSelectEventDefaultTypeInternal _CGameInfo_CDotaGameInfo_CHeroSelectEvent_default_instance_;
PROTOBUF_CONSTEXPR CGameInfo_CDotaGameInfo::CGameInfo_CDotaGameInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.player_info_)*/{}
  , /*decltype(_impl_.picks_bans_)*/{}
  , /*decltype(_impl_.radiant_team_tag_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.dire_team_tag_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.match_id_)*/uint64_t{0u}
  , /*decltype(_impl_.game_mode_)*/0
  , /*decltype(_impl_.game_winner_)*/0
  , /*decltype(_impl_.leagueid_)*/0u
  , /*decltype(_impl_.radiant_team_id_)*/0u
  , /*decltype(_impl_.dire_team_id_)*/0u
  , /*decltype(_impl_.end_time_)*/0u} {}
struct CGameInfo_CDotaGameInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CGameInfo_CDotaGameInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CGameInfo_CDotaGameInfoDefaultTypeInternal() {}
  union {
    CGameInfo_CDotaGameInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CGameInfo_CDotaGameInfoDefaultTypeInternal _CGameInfo_CDotaGameInfo_default_instance_;
PROTOBUF_CONSTEXPR CGameInfo_CCSGameInfo::CGameInfo_CCSGameInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.round_start_ticks_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct CGameInfo_CCSGameInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CGameInfo_CCSGameInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CGameInfo_CCSGameInfoDefaultTypeInternal() {}
  union {
    CGameInfo_CCSGameInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CGameInfo_CCSGameInfoDefaultTypeInternal _CGameInfo_CCSGameInfo_default_instance_;
PROTOBUF_CONSTEXPR CGameInfo::CGameInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.dota_)*/nullptr
  , /*decltype(_impl_.cs_)*/nullptr} {}
struct CGameInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CGameInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CGameInfoDefaultTypeInternal() {}
  union {
    CGameInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CGameInfoDefaultTypeInternal _CGameInfo_default_instance_;
PROTOBUF_CONSTEXPR CDemoFileInfo::CDemoFileInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.game_info_)*/nullptr
  , /*decltype(_impl_.playback_time_)*/0
  , /*decltype(_impl_.playback_ticks_)*/0
  , /*decltype(_impl_.playback_frames_)*/0} {}
struct CDemoFileInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoFileInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoFileInfoDefaultTypeInternal() {}
  union {
    CDemoFileInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoFileInfoDefaultTypeInternal _CDemoFileInfo_default_instance_;
PROTOBUF_CONSTEXPR CDemoPacket::CDemoPacket(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct CDemoPacketDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoPacketDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoPacketDefaultTypeInternal() {}
  union {
    CDemoPacket _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoPacketDefaultTypeInternal _CDemoPacket_default_instance_;
PROTOBUF_CONSTEXPR CDemoFullPacket::CDemoFullPacket(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.string_table_)*/nullptr
  , /*decltype(_impl_.packet_)*/nullptr} {}
struct CDemoFullPacketDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoFullPacketDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoFullPacketDefaultTypeInternal() {}
  union {
    CDemoFullPacket _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoFullPacketDefaultTypeInternal _CDemoFullPacket_default_instance_;
PROTOBUF_CONSTEXPR CDemoSaveGame::CDemoSaveGame(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.steam_id_)*/uint64_t{0u}
  , /*decltype(_impl_.signature_)*/uint64_t{0u}
  , /*decltype(_impl_.version_)*/0} {}
struct CDemoSaveGameDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoSaveGameDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoSaveGameDefaultTypeInternal() {}
  union {
    CDemoSaveGame _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoSaveGameDefaultTypeInternal _CDemoSaveGame_default_instance_;
PROTOBUF_CONSTEXPR CDemoSyncTick::CDemoSyncTick(
    ::_pbi::ConstantInitialized) {}
struct CDemoSyncTickDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoSyncTickDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoSyncTickDefaultTypeInternal() {}
  union {
    CDemoSyncTick _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoSyncTickDefaultTypeInternal _CDemoSyncTick_default_instance_;
PROTOBUF_CONSTEXPR CDemoConsoleCmd::CDemoConsoleCmd(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.cmdstring_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct CDemoConsoleCmdDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoConsoleCmdDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoConsoleCmdDefaultTypeInternal() {}
  union {
    CDemoConsoleCmd _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoConsoleCmdDefaultTypeInternal _CDemoConsoleCmd_default_instance_;
PROTOBUF_CONSTEXPR CDemoSendTables::CDemoSendTables(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct CDemoSendTablesDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoSendTablesDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoSendTablesDefaultTypeInternal() {}
  union {
    CDemoSendTables _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoSendTablesDefaultTypeInternal _CDemoSendTables_default_instance_;
PROTOBUF_CONSTEXPR CDemoClassInfo_class_t::CDemoClassInfo_class_t(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.network_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.table_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.class_id_)*/0} {}
struct CDemoClassInfo_class_tDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoClassInfo_class_tDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoClassInfo_class_tDefaultTypeInternal() {}
  union {
    CDemoClassInfo_class_t _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoClassInfo_class_tDefaultTypeInternal _CDemoClassInfo_class_t_default_instance_;
PROTOBUF_CONSTEXPR CDemoClassInfo::CDemoClassInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.classes_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct CDemoClassInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoClassInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoClassInfoDefaultTypeInternal() {}
  union {
    CDemoClassInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoClassInfoDefaultTypeInternal _CDemoClassInfo_default_instance_;
PROTOBUF_CONSTEXPR CDemoCustomData::CDemoCustomData(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.callback_index_)*/0} {}
struct CDemoCustomDataDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoCustomDataDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoCustomDataDefaultTypeInternal() {}
  union {
    CDemoCustomData _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoCustomDataDefaultTypeInternal _CDemoCustomData_default_instance_;
PROTOBUF_CONSTEXPR CDemoCustomDataCallbacks::CDemoCustomDataCallbacks(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.save_id_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct CDemoCustomDataCallbacksDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoCustomDataCallbacksDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoCustomDataCallbacksDefaultTypeInternal() {}
  union {
    CDemoCustomDataCallbacks _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoCustomDataCallbacksDefaultTypeInternal _CDemoCustomDataCallbacks_default_instance_;
PROTOBUF_CONSTEXPR CDemoAnimationHeader::CDemoAnimationHeader(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.entity_id_)*/0
  , /*decltype(_impl_.tick_)*/0} {}
struct CDemoAnimationHeaderDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoAnimationHeaderDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoAnimationHeaderDefaultTypeInternal() {}
  union {
    CDemoAnimationHeader _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoAnimationHeaderDefaultTypeInternal _CDemoAnimationHeader_default_instance_;
PROTOBUF_CONSTEXPR CDemoAnimationData::CDemoAnimationData(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.entity_id_)*/0
  , /*decltype(_impl_.start_tick_)*/0
  , /*decltype(_impl_.data_checksum_)*/int64_t{0}
  , /*decltype(_impl_.end_tick_)*/0} {}
struct CDemoAnimationDataDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoAnimationDataDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoAnimationDataDefaultTypeInternal() {}
  union {
    CDemoAnimationData _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoAnimationDataDefaultTypeInternal _CDemoAnimationData_default_instance_;
PROTOBUF_CONSTEXPR CDemoStringTables_items_t::CDemoStringTables_items_t(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.str_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct CDemoStringTables_items_tDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoStringTables_items_tDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoStringTables_items_tDefaultTypeInternal() {}
  union {
    CDemoStringTables_items_t _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoStringTables_items_tDefaultTypeInternal _CDemoStringTables_items_t_default_instance_;
PROTOBUF_CONSTEXPR CDemoStringTables_table_t::CDemoStringTables_table_t(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.items_)*/{}
  , /*decltype(_impl_.items_clientside_)*/{}
  , /*decltype(_impl_.table_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.table_flags_)*/0} {}
struct CDemoStringTables_table_tDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoStringTables_table_tDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoStringTables_table_tDefaultTypeInternal() {}
  union {
    CDemoStringTables_table_t _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoStringTables_table_tDefaultTypeInternal _CDemoStringTables_table_t_default_instance_;
PROTOBUF_CONSTEXPR CDemoStringTables::CDemoStringTables(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.tables_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct CDemoStringTablesDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoStringTablesDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoStringTablesDefaultTypeInternal() {}
  union {
    CDemoStringTables _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoStringTablesDefaultTypeInternal _CDemoStringTables_default_instance_;
PROTOBUF_CONSTEXPR CDemoStop::CDemoStop(
    ::_pbi::ConstantInitialized) {}
struct CDemoStopDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoStopDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoStopDefaultTypeInternal() {}
  union {
    CDemoStop _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoStopDefaultTypeInternal _CDemoStop_default_instance_;
PROTOBUF_CONSTEXPR CDemoUserCmd::CDemoUserCmd(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.cmd_number_)*/0} {}
struct CDemoUserCmdDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoUserCmdDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoUserCmdDefaultTypeInternal() {}
  union {
    CDemoUserCmd _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoUserCmdDefaultTypeInternal _CDemoUserCmd_default_instance_;
PROTOBUF_CONSTEXPR CDemoSpawnGroups::CDemoSpawnGroups(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_.msgs_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}} {}
struct CDemoSpawnGroupsDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoSpawnGroupsDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoSpawnGroupsDefaultTypeInternal() {}
  union {
    CDemoSpawnGroups _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoSpawnGroupsDefaultTypeInternal _CDemoSpawnGroups_default_instance_;
PROTOBUF_CONSTEXPR CDemoSpawnGroupsHLTVBroadcast::CDemoSpawnGroupsHLTVBroadcast(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct CDemoSpawnGroupsHLTVBroadcastDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoSpawnGroupsHLTVBroadcastDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoSpawnGroupsHLTVBroadcastDefaultTypeInternal() {}
  union {
    CDemoSpawnGroupsHLTVBroadcast _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoSpawnGroupsHLTVBroadcastDefaultTypeInternal _CDemoSpawnGroupsHLTVBroadcast_default_instance_;
PROTOBUF_CONSTEXPR CDemoRecovery_DemoInitialSpawnGroupEntry::CDemoRecovery_DemoInitialSpawnGroupEntry(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.spawngrouphandle_)*/0u
  , /*decltype(_impl_.was_created_)*/false} {}
struct CDemoRecovery_DemoInitialSpawnGroupEntryDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoRecovery_DemoInitialSpawnGroupEntryDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoRecovery_DemoInitialSpawnGroupEntryDefaultTypeInternal() {}
  union {
    CDemoRecovery_DemoInitialSpawnGroupEntry _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoRecovery_DemoInitialSpawnGroupEntryDefaultTypeInternal _CDemoRecovery_DemoInitialSpawnGroupEntry_default_instance_;
PROTOBUF_CONSTEXPR CDemoRecovery::CDemoRecovery(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.spawn_group_message_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.initial_spawn_group_)*/nullptr} {}
struct CDemoRecoveryDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CDemoRecoveryDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CDemoRecoveryDefaultTypeInternal() {}
  union {
    CDemoRecovery _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CDemoRecoveryDefaultTypeInternal _CDemoRecovery_default_instance_;
static ::_pb::Metadata file_level_metadata_demo_2eproto[28];
static const ::_pb::EnumDescriptor* file_level_enum_descriptors_demo_2eproto[1];
static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_demo_2eproto = nullptr;

const uint32_t TableStruct_demo_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.demo_file_stamp_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.patch_version_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.server_name_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.client_name_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.map_name_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.game_directory_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.fullpackets_version_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.allow_clientside_entities_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.allow_clientside_particles_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.addons_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.demo_version_name_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.demo_version_guid_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.build_num_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.game_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileHeader, _impl_.server_start_tick_),
  0,
  9,
  1,
  2,
  3,
  4,
  10,
  11,
  12,
  5,
  6,
  7,
  13,
  8,
  14,
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CPlayerInfo, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CPlayerInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CPlayerInfo, _impl_.hero_name_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CPlayerInfo, _impl_.player_name_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CPlayerInfo, _impl_.is_fake_client_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CPlayerInfo, _impl_.steamid_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CPlayerInfo, _impl_.game_team_),
  0,
  1,
  3,
  2,
  4,
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CHeroSelectEvent, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CHeroSelectEvent, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CHeroSelectEvent, _impl_.is_pick_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CHeroSelectEvent, _impl_.team_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo_CHeroSelectEvent, _impl_.hero_id_),
  0,
  1,
  2,
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.match_id_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.game_mode_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.game_winner_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.player_info_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.leagueid_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.picks_bans_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.radiant_team_id_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.dire_team_id_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.radiant_team_tag_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.dire_team_tag_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CDotaGameInfo, _impl_.end_time_),
  2,
  3,
  4,
  ~0u,
  5,
  ~0u,
  6,
  7,
  0,
  1,
  8,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CCSGameInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CGameInfo_CCSGameInfo, _impl_.round_start_ticks_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CGameInfo, _impl_.dota_),
  PROTOBUF_FIELD_OFFSET(::CGameInfo, _impl_.cs_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::CDemoFileInfo, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoFileInfo, _impl_.playback_time_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileInfo, _impl_.playback_ticks_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileInfo, _impl_.playback_frames_),
  PROTOBUF_FIELD_OFFSET(::CDemoFileInfo, _impl_.game_info_),
  1,
  2,
  3,
  0,
  PROTOBUF_FIELD_OFFSET(::CDemoPacket, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoPacket, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoPacket, _impl_.data_),
  0,
  PROTOBUF_FIELD_OFFSET(::CDemoFullPacket, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoFullPacket, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoFullPacket, _impl_.string_table_),
  PROTOBUF_FIELD_OFFSET(::CDemoFullPacket, _impl_.packet_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::CDemoSaveGame, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoSaveGame, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoSaveGame, _impl_.data_),
  PROTOBUF_FIELD_OFFSET(::CDemoSaveGame, _impl_.steam_id_),
  PROTOBUF_FIELD_OFFSET(::CDemoSaveGame, _impl_.signature_),
  PROTOBUF_FIELD_OFFSET(::CDemoSaveGame, _impl_.version_),
  0,
  1,
  2,
  3,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::CDemoSyncTick, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoConsoleCmd, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoConsoleCmd, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoConsoleCmd, _impl_.cmdstring_),
  0,
  PROTOBUF_FIELD_OFFSET(::CDemoSendTables, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoSendTables, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoSendTables, _impl_.data_),
  0,
  PROTOBUF_FIELD_OFFSET(::CDemoClassInfo_class_t, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoClassInfo_class_t, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoClassInfo_class_t, _impl_.class_id_),
  PROTOBUF_FIELD_OFFSET(::CDemoClassInfo_class_t, _impl_.network_name_),
  PROTOBUF_FIELD_OFFSET(::CDemoClassInfo_class_t, _impl_.table_name_),
  2,
  0,
  1,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::CDemoClassInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoClassInfo, _impl_.classes_),
  PROTOBUF_FIELD_OFFSET(::CDemoCustomData, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoCustomData, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoCustomData, _impl_.callback_index_),
  PROTOBUF_FIELD_OFFSET(::CDemoCustomData, _impl_.data_),
  1,
  0,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::CDemoCustomDataCallbacks, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoCustomDataCallbacks, _impl_.save_id_),
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationHeader, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationHeader, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationHeader, _impl_.entity_id_),
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationHeader, _impl_.tick_),
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationHeader, _impl_.data_),
  1,
  2,
  0,
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationData, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationData, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationData, _impl_.entity_id_),
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationData, _impl_.start_tick_),
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationData, _impl_.end_tick_),
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationData, _impl_.data_),
  PROTOBUF_FIELD_OFFSET(::CDemoAnimationData, _impl_.data_checksum_),
  1,
  2,
  4,
  0,
  3,
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_items_t, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_items_t, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_items_t, _impl_.str_),
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_items_t, _impl_.data_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_table_t, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_table_t, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_table_t, _impl_.table_name_),
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_table_t, _impl_.items_),
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_table_t, _impl_.items_clientside_),
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables_table_t, _impl_.table_flags_),
  0,
  ~0u,
  ~0u,
  1,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoStringTables, _impl_.tables_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::CDemoStop, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoUserCmd, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoUserCmd, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoUserCmd, _impl_.cmd_number_),
  PROTOBUF_FIELD_OFFSET(::CDemoUserCmd, _impl_.data_),
  1,
  0,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::CDemoSpawnGroups, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoSpawnGroups, _impl_.msgs_),
  PROTOBUF_FIELD_OFFSET(::CDemoSpawnGroupsHLTVBroadcast, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoSpawnGroupsHLTVBroadcast, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoSpawnGroupsHLTVBroadcast, _impl_.data_),
  0,
  PROTOBUF_FIELD_OFFSET(::CDemoRecovery_DemoInitialSpawnGroupEntry, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoRecovery_DemoInitialSpawnGroupEntry, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoRecovery_DemoInitialSpawnGroupEntry, _impl_.spawngrouphandle_),
  PROTOBUF_FIELD_OFFSET(::CDemoRecovery_DemoInitialSpawnGroupEntry, _impl_.was_created_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::CDemoRecovery, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CDemoRecovery, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CDemoRecovery, _impl_.initial_spawn_group_),
  PROTOBUF_FIELD_OFFSET(::CDemoRecovery, _impl_.spawn_group_message_),
  1,
  0,
};
static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 21, -1, sizeof(::CDemoFileHeader)},
  { 36, 47, -1, sizeof(::CGameInfo_CDotaGameInfo_CPlayerInfo)},
  { 52, 61, -1, sizeof(::CGameInfo_CDotaGameInfo_CHeroSelectEvent)},
  { 64, 81, -1, sizeof(::CGameInfo_CDotaGameInfo)},
  { 92, -1, -1, sizeof(::CGameInfo_CCSGameInfo)},
  { 99, 107, -1, sizeof(::CGameInfo)},
  { 109, 119, -1, sizeof(::CDemoFileInfo)},
  { 123, 130, -1, sizeof(::CDemoPacket)},
  { 131, 139, -1, sizeof(::CDemoFullPacket)},
  { 141, 151, -1, sizeof(::CDemoSaveGame)},
  { 155, -1, -1, sizeof(::CDemoSyncTick)},
  { 161, 168, -1, sizeof(::CDemoConsoleCmd)},
  { 169, 176, -1, sizeof(::CDemoSendTables)},
  { 177, 186, -1, sizeof(::CDemoClassInfo_class_t)},
  { 189, -1, -1, sizeof(::CDemoClassInfo)},
  { 196, 204, -1, sizeof(::CDemoCustomData)},
  { 206, -1, -1, sizeof(::CDemoCustomDataCallbacks)},
  { 213, 222, -1, sizeof(::CDemoAnimationHeader)},
  { 225, 236, -1, sizeof(::CDemoAnimationData)},
  { 241, 249, -1, sizeof(::CDemoStringTables_items_t)},
  { 251, 261, -1, sizeof(::CDemoStringTables_table_t)},
  { 265, -1, -1, sizeof(::CDemoStringTables)},
  { 272, -1, -1, sizeof(::CDemoStop)},
  { 278, 286, -1, sizeof(::CDemoUserCmd)},
  { 288, -1, -1, sizeof(::CDemoSpawnGroups)},
  { 295, 302, -1, sizeof(::CDemoSpawnGroupsHLTVBroadcast)},
  { 303, 311, -1, sizeof(::CDemoRecovery_DemoInitialSpawnGroupEntry)},
  { 313, 321, -1, sizeof(::CDemoRecovery)},
};

static const ::_pb::Message* const file_default_instances[] = {
  &::_CDemoFileHeader_default_instance_._instance,
  &::_CGameInfo_CDotaGameInfo_CPlayerInfo_default_instance_._instance,
  &::_CGameInfo_CDotaGameInfo_CHeroSelectEvent_default_instance_._instance,
  &::_CGameInfo_CDotaGameInfo_default_instance_._instance,
  &::_CGameInfo_CCSGameInfo_default_instance_._instance,
  &::_CGameInfo_default_instance_._instance,
  &::_CDemoFileInfo_default_instance_._instance,
  &::_CDemoPacket_default_instance_._instance,
  &::_CDemoFullPacket_default_instance_._instance,
  &::_CDemoSaveGame_default_instance_._instance,
  &::_CDemoSyncTick_default_instance_._instance,
  &::_CDemoConsoleCmd_default_instance_._instance,
  &::_CDemoSendTables_default_instance_._instance,
  &::_CDemoClassInfo_class_t_default_instance_._instance,
  &::_CDemoClassInfo_default_instance_._instance,
  &::_CDemoCustomData_default_instance_._instance,
  &::_CDemoCustomDataCallbacks_default_instance_._instance,
  &::_CDemoAnimationHeader_default_instance_._instance,
  &::_CDemoAnimationData_default_instance_._instance,
  &::_CDemoStringTables_items_t_default_instance_._instance,
  &::_CDemoStringTables_table_t_default_instance_._instance,
  &::_CDemoStringTables_default_instance_._instance,
  &::_CDemoStop_default_instance_._instance,
  &::_CDemoUserCmd_default_instance_._instance,
  &::_CDemoSpawnGroups_default_instance_._instance,
  &::_CDemoSpawnGroupsHLTVBroadcast_default_instance_._instance,
  &::_CDemoRecovery_DemoInitialSpawnGroupEntry_default_instance_._instance,
  &::_CDemoRecovery_default_instance_._instance,
};

const char descriptor_table_protodef_demo_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\ndemo.proto\"\373\002\n\017CDemoFileHeader\022\027\n\017demo"
  "_file_stamp\030\001 \002(\t\022\025\n\rpatch_version\030\002 \001(\005"
  "\022\023\n\013server_name\030\003 \001(\t\022\023\n\013client_name\030\004 \001"
  "(\t\022\020\n\010map_name\030\005 \001(\t\022\026\n\016game_directory\030\006"
  " \001(\t\022\033\n\023fullpackets_version\030\007 \001(\005\022!\n\031all"
  "ow_clientside_entities\030\010 \001(\010\022\"\n\032allow_cl"
  "ientside_particles\030\t \001(\010\022\016\n\006addons\030\n \001(\t"
  "\022\031\n\021demo_version_name\030\013 \001(\t\022\031\n\021demo_vers"
  "ion_guid\030\014 \001(\t\022\021\n\tbuild_num\030\r \001(\005\022\014\n\004gam"
  "e\030\016 \001(\t\022\031\n\021server_start_tick\030\017 \001(\005\"\202\005\n\tC"
  "GameInfo\022&\n\004dota\030\004 \001(\0132\030.CGameInfo.CDota"
  "GameInfo\022\"\n\002cs\030\005 \001(\0132\026.CGameInfo.CCSGame"
  "Info\032\376\003\n\rCDotaGameInfo\022\020\n\010match_id\030\001 \001(\004"
  "\022\021\n\tgame_mode\030\002 \001(\005\022\023\n\013game_winner\030\003 \001(\005"
  "\0229\n\013player_info\030\004 \003(\0132$.CGameInfo.CDotaG"
  "ameInfo.CPlayerInfo\022\020\n\010leagueid\030\005 \001(\r\022=\n"
  "\npicks_bans\030\006 \003(\0132).CGameInfo.CDotaGameI"
  "nfo.CHeroSelectEvent\022\027\n\017radiant_team_id\030"
  "\007 \001(\r\022\024\n\014dire_team_id\030\010 \001(\r\022\030\n\020radiant_t"
  "eam_tag\030\t \001(\t\022\025\n\rdire_team_tag\030\n \001(\t\022\020\n\010"
  "end_time\030\013 \001(\r\032q\n\013CPlayerInfo\022\021\n\thero_na"
  "me\030\001 \001(\t\022\023\n\013player_name\030\002 \001(\t\022\026\n\016is_fake"
  "_client\030\003 \001(\010\022\017\n\007steamid\030\004 \001(\004\022\021\n\tgame_t"
  "eam\030\005 \001(\005\032B\n\020CHeroSelectEvent\022\017\n\007is_pick"
  "\030\001 \001(\010\022\014\n\004team\030\002 \001(\r\022\017\n\007hero_id\030\003 \001(\005\032(\n"
  "\013CCSGameInfo\022\031\n\021round_start_ticks\030\001 \003(\005\""
  "v\n\rCDemoFileInfo\022\025\n\rplayback_time\030\001 \001(\002\022"
  "\026\n\016playback_ticks\030\002 \001(\005\022\027\n\017playback_fram"
  "es\030\003 \001(\005\022\035\n\tgame_info\030\004 \001(\0132\n.CGameInfo\""
  "\033\n\013CDemoPacket\022\014\n\004data\030\003 \001(\014\"Y\n\017CDemoFul"
  "lPacket\022(\n\014string_table\030\001 \001(\0132\022.CDemoStr"
  "ingTables\022\034\n\006packet\030\002 \001(\0132\014.CDemoPacket\""
  "S\n\rCDemoSaveGame\022\014\n\004data\030\001 \001(\014\022\020\n\010steam_"
  "id\030\002 \001(\006\022\021\n\tsignature\030\003 \001(\006\022\017\n\007version\030\004"
  " \001(\005\"\017\n\rCDemoSyncTick\"$\n\017CDemoConsoleCmd"
  "\022\021\n\tcmdstring\030\001 \001(\t\"\037\n\017CDemoSendTables\022\014"
  "\n\004data\030\001 \001(\014\"\201\001\n\016CDemoClassInfo\022(\n\007class"
  "es\030\001 \003(\0132\027.CDemoClassInfo.class_t\032E\n\007cla"
  "ss_t\022\020\n\010class_id\030\001 \001(\005\022\024\n\014network_name\030\002"
  " \001(\t\022\022\n\ntable_name\030\003 \001(\t\"7\n\017CDemoCustomD"
  "ata\022\026\n\016callback_index\030\001 \001(\005\022\014\n\004data\030\002 \001("
  "\014\"+\n\030CDemoCustomDataCallbacks\022\017\n\007save_id"
  "\030\001 \003(\t\"E\n\024CDemoAnimationHeader\022\021\n\tentity"
  "_id\030\001 \001(\021\022\014\n\004tick\030\002 \001(\005\022\014\n\004data\030\003 \001(\014\"r\n"
  "\022CDemoAnimationData\022\021\n\tentity_id\030\001 \001(\021\022\022"
  "\n\nstart_tick\030\002 \001(\005\022\020\n\010end_tick\030\003 \001(\005\022\014\n\004"
  "data\030\004 \001(\014\022\025\n\rdata_checksum\030\005 \001(\003\"\373\001\n\021CD"
  "emoStringTables\022*\n\006tables\030\001 \003(\0132\032.CDemoS"
  "tringTables.table_t\032$\n\007items_t\022\013\n\003str\030\001 "
  "\001(\t\022\014\n\004data\030\002 \001(\014\032\223\001\n\007table_t\022\022\n\ntable_n"
  "ame\030\001 \001(\t\022)\n\005items\030\002 \003(\0132\032.CDemoStringTa"
  "bles.items_t\0224\n\020items_clientside\030\003 \003(\0132\032"
  ".CDemoStringTables.items_t\022\023\n\013table_flag"
  "s\030\004 \001(\005\"\013\n\tCDemoStop\"0\n\014CDemoUserCmd\022\022\n\n"
  "cmd_number\030\001 \001(\005\022\014\n\004data\030\002 \001(\014\" \n\020CDemoS"
  "pawnGroups\022\014\n\004msgs\030\003 \003(\014\"-\n\035CDemoSpawnGr"
  "oupsHLTVBroadcast\022\014\n\004data\030\001 \001(\014\"\301\001\n\rCDem"
  "oRecovery\022F\n\023initial_spawn_group\030\001 \001(\0132)"
  ".CDemoRecovery.DemoInitialSpawnGroupEntr"
  "y\022\033\n\023spawn_group_message\030\002 \001(\014\032K\n\032DemoIn"
  "itialSpawnGroupEntry\022\030\n\020spawngrouphandle"
  "\030\001 \001(\r\022\023\n\013was_created\030\002 \001(\010*\306\003\n\rEDemoCom"
  "mands\022\026\n\tDEM_Error\020\377\377\377\377\377\377\377\377\377\001\022\014\n\010DEM_Sto"
  "p\020\000\022\022\n\016DEM_FileHeader\020\001\022\020\n\014DEM_FileInfo\020"
  "\002\022\020\n\014DEM_SyncTick\020\003\022\022\n\016DEM_SendTables\020\004\022"
  "\021\n\rDEM_ClassInfo\020\005\022\024\n\020DEM_StringTables\020\006"
  "\022\016\n\nDEM_Packet\020\007\022\024\n\020DEM_SignonPacket\020\010\022\022"
  "\n\016DEM_ConsoleCmd\020\t\022\022\n\016DEM_CustomData\020\n\022\033"
  "\n\027DEM_CustomDataCallbacks\020\013\022\017\n\013DEM_UserC"
  "md\020\014\022\022\n\016DEM_FullPacket\020\r\022\020\n\014DEM_SaveGame"
  "\020\016\022\023\n\017DEM_SpawnGroups\020\017\022\025\n\021DEM_Animation"
  "Data\020\020\022\027\n\023DEM_AnimationHeader\020\021\022\020\n\014DEM_R"
  "ecovery\020\022\022\013\n\007DEM_Max\020\023\022\024\n\020DEM_IsCompress"
  "ed\020@"
  ;
static ::_pbi::once_flag descriptor_table_demo_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_demo_2eproto = {
    false, false, 2924, descriptor_table_protodef_demo_2eproto,
    "demo.proto",
    &descriptor_table_demo_2eproto_once, nullptr, 0, 28,
    schemas, file_default_instances, TableStruct_demo_2eproto::offsets,
    file_level_metadata_demo_2eproto, file_level_enum_descriptors_demo_2eproto,
    file_level_service_descriptors_demo_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_demo_2eproto_getter() {
  return &descriptor_table_demo_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::_pbi::AddDescriptorsRunner dynamic_init_dummy_demo_2eproto(&descriptor_table_demo_2eproto);
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* EDemoCommands_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_demo_2eproto);
  return file_level_enum_descriptors_demo_2eproto[0];
}
bool EDemoCommands_IsValid(int value) {
  switch (value) {
    case -1:
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 64:
      return true;
    default:
      return false;
  }
}


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

class CDemoFileHeader::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoFileHeader>()._impl_._has_bits_);
  static void set_has_demo_file_stamp(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_patch_version(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_server_name(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_client_name(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_map_name(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_game_directory(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_fullpackets_version(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_allow_clientside_entities(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_allow_clientside_particles(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static void set_has_addons(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_demo_version_name(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_demo_version_guid(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_build_num(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_game(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_server_start_tick(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static bool MissingRequiredFields(const HasBits& has_bits) {
    return ((has_bits[0] & 0x00000001) ^ 0x00000001) != 0;
  }
};

CDemoFileHeader::CDemoFileHeader(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoFileHeader)
}
CDemoFileHeader::CDemoFileHeader(const CDemoFileHeader& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoFileHeader* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.demo_file_stamp_){}
    , decltype(_impl_.server_name_){}
    , decltype(_impl_.client_name_){}
    , decltype(_impl_.map_name_){}
    , decltype(_impl_.game_directory_){}
    , decltype(_impl_.addons_){}
    , decltype(_impl_.demo_version_name_){}
    , decltype(_impl_.demo_version_guid_){}
    , decltype(_impl_.game_){}
    , decltype(_impl_.patch_version_){}
    , decltype(_impl_.fullpackets_version_){}
    , decltype(_impl_.allow_clientside_entities_){}
    , decltype(_impl_.allow_clientside_particles_){}
    , decltype(_impl_.build_num_){}
    , decltype(_impl_.server_start_tick_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.demo_file_stamp_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.demo_file_stamp_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_demo_file_stamp()) {
    _this->_impl_.demo_file_stamp_.Set(from._internal_demo_file_stamp(), 
      _this->GetArenaForAllocation());
  }
  _impl_.server_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.server_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_server_name()) {
    _this->_impl_.server_name_.Set(from._internal_server_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.client_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.client_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_client_name()) {
    _this->_impl_.client_name_.Set(from._internal_client_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.map_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.map_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_map_name()) {
    _this->_impl_.map_name_.Set(from._internal_map_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.game_directory_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.game_directory_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_game_directory()) {
    _this->_impl_.game_directory_.Set(from._internal_game_directory(), 
      _this->GetArenaForAllocation());
  }
  _impl_.addons_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.addons_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_addons()) {
    _this->_impl_.addons_.Set(from._internal_addons(), 
      _this->GetArenaForAllocation());
  }
  _impl_.demo_version_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.demo_version_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_demo_version_name()) {
    _this->_impl_.demo_version_name_.Set(from._internal_demo_version_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.demo_version_guid_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.demo_version_guid_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_demo_version_guid()) {
    _this->_impl_.demo_version_guid_.Set(from._internal_demo_version_guid(), 
      _this->GetArenaForAllocation());
  }
  _impl_.game_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.game_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_game()) {
    _this->_impl_.game_.Set(from._internal_game(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.patch_version_, &from._impl_.patch_version_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.server_start_tick_) -
    reinterpret_cast<char*>(&_impl_.patch_version_)) + sizeof(_impl_.server_start_tick_));
  // @@protoc_insertion_point(copy_constructor:CDemoFileHeader)
}

inline void CDemoFileHeader::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.demo_file_stamp_){}
    , decltype(_impl_.server_name_){}
    , decltype(_impl_.client_name_){}
    , decltype(_impl_.map_name_){}
    , decltype(_impl_.game_directory_){}
    , decltype(_impl_.addons_){}
    , decltype(_impl_.demo_version_name_){}
    , decltype(_impl_.demo_version_guid_){}
    , decltype(_impl_.game_){}
    , decltype(_impl_.patch_version_){0}
    , decltype(_impl_.fullpackets_version_){0}
    , decltype(_impl_.allow_clientside_entities_){false}
    , decltype(_impl_.allow_clientside_particles_){false}
    , decltype(_impl_.build_num_){0}
    , decltype(_impl_.server_start_tick_){0}
  };
  _impl_.demo_file_stamp_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.demo_file_stamp_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.server_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.server_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.client_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.client_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.map_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.map_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.game_directory_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.game_directory_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.addons_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.addons_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.demo_version_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.demo_version_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.demo_version_guid_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.demo_version_guid_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.game_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.game_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoFileHeader::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.demo_file_stamp_.Destroy();
  _impl_.server_name_.Destroy();
  _impl_.client_name_.Destroy();
  _impl_.map_name_.Destroy();
  _impl_.game_directory_.Destroy();
  _impl_.addons_.Destroy();
  _impl_.demo_version_name_.Destroy();
  _impl_.demo_version_guid_.Destroy();
  _impl_.game_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.demo_file_stamp_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.server_name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      _impl_.client_name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      _impl_.map_name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000010u) {
      _impl_.game_directory_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000020u) {
      _impl_.addons_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000040u) {
      _impl_.demo_version_name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000080u) {
      _impl_.demo_version_guid_.ClearNonDefaultToEmpty();
    }
  }
  if (cached_has_bits & 0x00000100u) {
    _impl_.game_.ClearNonDefaultToEmpty();
  }
  if (cached_has_bits & 0x00007e00u) {
    ::memset(&_impl_.patch_version_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.server_start_tick_) -
        reinterpret_cast<char*>(&_impl_.patch_version_)) + sizeof(_impl_.server_start_tick_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoFileHeader::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // required string demo_file_stamp = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_demo_file_stamp();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoFileHeader.demo_file_stamp");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional int32 patch_version = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_patch_version(&has_bits);
          _impl_.patch_version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string server_name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_server_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoFileHeader.server_name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string client_name = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_client_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoFileHeader.client_name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string map_name = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_map_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoFileHeader.map_name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string game_directory = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          auto str = _internal_mutable_game_directory();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoFileHeader.game_directory");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional int32 fullpackets_version = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _Internal::set_has_fullpackets_version(&has_bits);
          _impl_.fullpackets_version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool allow_clientside_entities = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
          _Internal::set_has_allow_clientside_entities(&has_bits);
          _impl_.allow_clientside_entities_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool allow_clientside_particles = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
          _Internal::set_has_allow_clientside_particles(&has_bits);
          _impl_.allow_clientside_particles_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string addons = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          auto str = _internal_mutable_addons();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoFileHeader.addons");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string demo_version_name = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          auto str = _internal_mutable_demo_version_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoFileHeader.demo_version_name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string demo_version_guid = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 98)) {
          auto str = _internal_mutable_demo_version_guid();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoFileHeader.demo_version_guid");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional int32 build_num = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
          _Internal::set_has_build_num(&has_bits);
          _impl_.build_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string game = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          auto str = _internal_mutable_game();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoFileHeader.game");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional int32 server_start_tick = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
          _Internal::set_has_server_start_tick(&has_bits);
          _impl_.server_start_tick_ = ::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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // required string demo_file_stamp = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_demo_file_stamp().data(), static_cast<int>(this->_internal_demo_file_stamp().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoFileHeader.demo_file_stamp");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_demo_file_stamp(), target);
  }

  // optional int32 patch_version = 2;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_patch_version(), target);
  }

  // optional string server_name = 3;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_server_name().data(), static_cast<int>(this->_internal_server_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoFileHeader.server_name");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_server_name(), target);
  }

  // optional string client_name = 4;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_client_name().data(), static_cast<int>(this->_internal_client_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoFileHeader.client_name");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_client_name(), target);
  }

  // optional string map_name = 5;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_map_name().data(), static_cast<int>(this->_internal_map_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoFileHeader.map_name");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_map_name(), target);
  }

  // optional string game_directory = 6;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_game_directory().data(), static_cast<int>(this->_internal_game_directory().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoFileHeader.game_directory");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_game_directory(), target);
  }

  // optional int32 fullpackets_version = 7;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(7, this->_internal_fullpackets_version(), target);
  }

  // optional bool allow_clientside_entities = 8;
  if (cached_has_bits & 0x00000800u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(8, this->_internal_allow_clientside_entities(), target);
  }

  // optional bool allow_clientside_particles = 9;
  if (cached_has_bits & 0x00001000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(9, this->_internal_allow_clientside_particles(), target);
  }

  // optional string addons = 10;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_addons().data(), static_cast<int>(this->_internal_addons().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoFileHeader.addons");
    target = stream->WriteStringMaybeAliased(
        10, this->_internal_addons(), target);
  }

  // optional string demo_version_name = 11;
  if (cached_has_bits & 0x00000040u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_demo_version_name().data(), static_cast<int>(this->_internal_demo_version_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoFileHeader.demo_version_name");
    target = stream->WriteStringMaybeAliased(
        11, this->_internal_demo_version_name(), target);
  }

  // optional string demo_version_guid = 12;
  if (cached_has_bits & 0x00000080u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_demo_version_guid().data(), static_cast<int>(this->_internal_demo_version_guid().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoFileHeader.demo_version_guid");
    target = stream->WriteStringMaybeAliased(
        12, this->_internal_demo_version_guid(), target);
  }

  // optional int32 build_num = 13;
  if (cached_has_bits & 0x00002000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(13, this->_internal_build_num(), target);
  }

  // optional string game = 14;
  if (cached_has_bits & 0x00000100u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_game().data(), static_cast<int>(this->_internal_game().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoFileHeader.game");
    target = stream->WriteStringMaybeAliased(
        14, this->_internal_game(), target);
  }

  // optional int32 server_start_tick = 15;
  if (cached_has_bits & 0x00004000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(15, this->_internal_server_start_tick(), 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:CDemoFileHeader)
  return target;
}

size_t CDemoFileHeader::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoFileHeader)
  size_t total_size = 0;

  // required string demo_file_stamp = 1;
  if (_internal_has_demo_file_stamp()) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_demo_file_stamp());
  }
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000feu) {
    // optional string server_name = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_server_name());
    }

    // optional string client_name = 4;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_client_name());
    }

    // optional string map_name = 5;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_map_name());
    }

    // optional string game_directory = 6;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_game_directory());
    }

    // optional string addons = 10;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_addons());
    }

    // optional string demo_version_name = 11;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_demo_version_name());
    }

    // optional string demo_version_guid = 12;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_demo_version_guid());
    }

  }
  if (cached_has_bits & 0x00007f00u) {
    // optional string game = 14;
    if (cached_has_bits & 0x00000100u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_game());
    }

    // optional int32 patch_version = 2;
    if (cached_has_bits & 0x00000200u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_patch_version());
    }

    // optional int32 fullpackets_version = 7;
    if (cached_has_bits & 0x00000400u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_fullpackets_version());
    }

    // optional bool allow_clientside_entities = 8;
    if (cached_has_bits & 0x00000800u) {
      total_size += 1 + 1;
    }

    // optional bool allow_clientside_particles = 9;
    if (cached_has_bits & 0x00001000u) {
      total_size += 1 + 1;
    }

    // optional int32 build_num = 13;
    if (cached_has_bits & 0x00002000u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_build_num());
    }

    // optional int32 server_start_tick = 15;
    if (cached_has_bits & 0x00004000u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_server_start_tick());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoFileHeader::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoFileHeader*>(&to_msg);
  auto& from = static_cast<const CDemoFileHeader&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoFileHeader)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_demo_file_stamp(from._internal_demo_file_stamp());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_server_name(from._internal_server_name());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_set_client_name(from._internal_client_name());
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_internal_set_map_name(from._internal_map_name());
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_internal_set_game_directory(from._internal_game_directory());
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_internal_set_addons(from._internal_addons());
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_internal_set_demo_version_name(from._internal_demo_version_name());
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_internal_set_demo_version_guid(from._internal_demo_version_guid());
    }
  }
  if (cached_has_bits & 0x00007f00u) {
    if (cached_has_bits & 0x00000100u) {
      _this->_internal_set_game(from._internal_game());
    }
    if (cached_has_bits & 0x00000200u) {
      _this->_impl_.patch_version_ = from._impl_.patch_version_;
    }
    if (cached_has_bits & 0x00000400u) {
      _this->_impl_.fullpackets_version_ = from._impl_.fullpackets_version_;
    }
    if (cached_has_bits & 0x00000800u) {
      _this->_impl_.allow_clientside_entities_ = from._impl_.allow_clientside_entities_;
    }
    if (cached_has_bits & 0x00001000u) {
      _this->_impl_.allow_clientside_particles_ = from._impl_.allow_clientside_particles_;
    }
    if (cached_has_bits & 0x00002000u) {
      _this->_impl_.build_num_ = from._impl_.build_num_;
    }
    if (cached_has_bits & 0x00004000u) {
      _this->_impl_.server_start_tick_ = from._impl_.server_start_tick_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

bool CDemoFileHeader::IsInitialized() const {
  if (_Internal::MissingRequiredFields(_impl_._has_bits_)) return false;
  return true;
}

void CDemoFileHeader::InternalSwap(CDemoFileHeader* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.demo_file_stamp_, lhs_arena,
      &other->_impl_.demo_file_stamp_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.server_name_, lhs_arena,
      &other->_impl_.server_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.client_name_, lhs_arena,
      &other->_impl_.client_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.map_name_, lhs_arena,
      &other->_impl_.map_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.game_directory_, lhs_arena,
      &other->_impl_.game_directory_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.addons_, lhs_arena,
      &other->_impl_.addons_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.demo_version_name_, lhs_arena,
      &other->_impl_.demo_version_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.demo_version_guid_, lhs_arena,
      &other->_impl_.demo_version_guid_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.game_, lhs_arena,
      &other->_impl_.game_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CDemoFileHeader, _impl_.server_start_tick_)
      + sizeof(CDemoFileHeader::_impl_.server_start_tick_)
      - PROTOBUF_FIELD_OFFSET(CDemoFileHeader, _impl_.patch_version_)>(
          reinterpret_cast<char*>(&_impl_.patch_version_),
          reinterpret_cast<char*>(&other->_impl_.patch_version_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoFileHeader::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[0]);
}

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

class CGameInfo_CDotaGameInfo_CPlayerInfo::_Internal {
 public:
  using HasBits = decltype(std::declval<CGameInfo_CDotaGameInfo_CPlayerInfo>()._impl_._has_bits_);
  static void set_has_hero_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_player_name(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_is_fake_client(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_steamid(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_game_team(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
};

CGameInfo_CDotaGameInfo_CPlayerInfo::CGameInfo_CDotaGameInfo_CPlayerInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CGameInfo.CDotaGameInfo.CPlayerInfo)
}
CGameInfo_CDotaGameInfo_CPlayerInfo::CGameInfo_CDotaGameInfo_CPlayerInfo(const CGameInfo_CDotaGameInfo_CPlayerInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CGameInfo_CDotaGameInfo_CPlayerInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.hero_name_){}
    , decltype(_impl_.player_name_){}
    , decltype(_impl_.steamid_){}
    , decltype(_impl_.is_fake_client_){}
    , decltype(_impl_.game_team_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.hero_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.hero_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_hero_name()) {
    _this->_impl_.hero_name_.Set(from._internal_hero_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.player_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.player_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_player_name()) {
    _this->_impl_.player_name_.Set(from._internal_player_name(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.steamid_, &from._impl_.steamid_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.game_team_) -
    reinterpret_cast<char*>(&_impl_.steamid_)) + sizeof(_impl_.game_team_));
  // @@protoc_insertion_point(copy_constructor:CGameInfo.CDotaGameInfo.CPlayerInfo)
}

inline void CGameInfo_CDotaGameInfo_CPlayerInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.hero_name_){}
    , decltype(_impl_.player_name_){}
    , decltype(_impl_.steamid_){uint64_t{0u}}
    , decltype(_impl_.is_fake_client_){false}
    , decltype(_impl_.game_team_){0}
  };
  _impl_.hero_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.hero_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.player_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.player_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CGameInfo_CDotaGameInfo_CPlayerInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.hero_name_.Destroy();
  _impl_.player_name_.Destroy();
}

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

void CGameInfo_CDotaGameInfo_CPlayerInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:CGameInfo.CDotaGameInfo.CPlayerInfo)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.hero_name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.player_name_.ClearNonDefaultToEmpty();
    }
  }
  if (cached_has_bits & 0x0000001cu) {
    ::memset(&_impl_.steamid_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.game_team_) -
        reinterpret_cast<char*>(&_impl_.steamid_)) + sizeof(_impl_.game_team_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CGameInfo_CDotaGameInfo_CPlayerInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string hero_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_hero_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CGameInfo.CDotaGameInfo.CPlayerInfo.hero_name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string player_name = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_player_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CGameInfo.CDotaGameInfo.CPlayerInfo.player_name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional bool is_fake_client = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_is_fake_client(&has_bits);
          _impl_.is_fake_client_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 steamid = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _Internal::set_has_steamid(&has_bits);
          _impl_.steamid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 game_team = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _Internal::set_has_game_team(&has_bits);
          _impl_.game_team_ = ::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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional string hero_name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_hero_name().data(), static_cast<int>(this->_internal_hero_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CGameInfo.CDotaGameInfo.CPlayerInfo.hero_name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_hero_name(), target);
  }

  // optional string player_name = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_player_name().data(), static_cast<int>(this->_internal_player_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CGameInfo.CDotaGameInfo.CPlayerInfo.player_name");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_player_name(), target);
  }

  // optional bool is_fake_client = 3;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(3, this->_internal_is_fake_client(), target);
  }

  // optional uint64 steamid = 4;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(4, this->_internal_steamid(), target);
  }

  // optional int32 game_team = 5;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(5, this->_internal_game_team(), 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:CGameInfo.CDotaGameInfo.CPlayerInfo)
  return target;
}

size_t CGameInfo_CDotaGameInfo_CPlayerInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CGameInfo.CDotaGameInfo.CPlayerInfo)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    // optional string hero_name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_hero_name());
    }

    // optional string player_name = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_player_name());
    }

    // optional uint64 steamid = 4;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_steamid());
    }

    // optional bool is_fake_client = 3;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 + 1;
    }

    // optional int32 game_team = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_game_team());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CGameInfo_CDotaGameInfo_CPlayerInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CGameInfo_CDotaGameInfo_CPlayerInfo*>(&to_msg);
  auto& from = static_cast<const CGameInfo_CDotaGameInfo_CPlayerInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CGameInfo.CDotaGameInfo.CPlayerInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_hero_name(from._internal_hero_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_player_name(from._internal_player_name());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.steamid_ = from._impl_.steamid_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.is_fake_client_ = from._impl_.is_fake_client_;
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.game_team_ = from._impl_.game_team_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void CGameInfo_CDotaGameInfo_CPlayerInfo::CopyFrom(const CGameInfo_CDotaGameInfo_CPlayerInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:CGameInfo.CDotaGameInfo.CPlayerInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void CGameInfo_CDotaGameInfo_CPlayerInfo::InternalSwap(CGameInfo_CDotaGameInfo_CPlayerInfo* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.hero_name_, lhs_arena,
      &other->_impl_.hero_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.player_name_, lhs_arena,
      &other->_impl_.player_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CGameInfo_CDotaGameInfo_CPlayerInfo, _impl_.game_team_)
      + sizeof(CGameInfo_CDotaGameInfo_CPlayerInfo::_impl_.game_team_)
      - PROTOBUF_FIELD_OFFSET(CGameInfo_CDotaGameInfo_CPlayerInfo, _impl_.steamid_)>(
          reinterpret_cast<char*>(&_impl_.steamid_),
          reinterpret_cast<char*>(&other->_impl_.steamid_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CGameInfo_CDotaGameInfo_CPlayerInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[1]);
}

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

class CGameInfo_CDotaGameInfo_CHeroSelectEvent::_Internal {
 public:
  using HasBits = decltype(std::declval<CGameInfo_CDotaGameInfo_CHeroSelectEvent>()._impl_._has_bits_);
  static void set_has_is_pick(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_team(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_hero_id(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

CGameInfo_CDotaGameInfo_CHeroSelectEvent::CGameInfo_CDotaGameInfo_CHeroSelectEvent(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CGameInfo.CDotaGameInfo.CHeroSelectEvent)
}
CGameInfo_CDotaGameInfo_CHeroSelectEvent::CGameInfo_CDotaGameInfo_CHeroSelectEvent(const CGameInfo_CDotaGameInfo_CHeroSelectEvent& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CGameInfo_CDotaGameInfo_CHeroSelectEvent* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.is_pick_){}
    , decltype(_impl_.team_){}
    , decltype(_impl_.hero_id_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.is_pick_, &from._impl_.is_pick_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.hero_id_) -
    reinterpret_cast<char*>(&_impl_.is_pick_)) + sizeof(_impl_.hero_id_));
  // @@protoc_insertion_point(copy_constructor:CGameInfo.CDotaGameInfo.CHeroSelectEvent)
}

inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.is_pick_){false}
    , decltype(_impl_.team_){0u}
    , decltype(_impl_.hero_id_){0}
  };
}

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

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

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

void CGameInfo_CDotaGameInfo_CHeroSelectEvent::Clear() {
// @@protoc_insertion_point(message_clear_start:CGameInfo.CDotaGameInfo.CHeroSelectEvent)
  uint32_t cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    ::memset(&_impl_.is_pick_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.hero_id_) -
        reinterpret_cast<char*>(&_impl_.is_pick_)) + sizeof(_impl_.hero_id_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CGameInfo_CDotaGameInfo_CHeroSelectEvent::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bool is_pick = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_is_pick(&has_bits);
          _impl_.is_pick_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 team = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_team(&has_bits);
          _impl_.team_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 hero_id = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_hero_id(&has_bits);
          _impl_.hero_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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional bool is_pick = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(1, this->_internal_is_pick(), target);
  }

  // optional uint32 team = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(2, this->_internal_team(), target);
  }

  // optional int32 hero_id = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_hero_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:CGameInfo.CDotaGameInfo.CHeroSelectEvent)
  return target;
}

size_t CGameInfo_CDotaGameInfo_CHeroSelectEvent::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CGameInfo.CDotaGameInfo.CHeroSelectEvent)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional bool is_pick = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 + 1;
    }

    // optional uint32 team = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_team());
    }

    // optional int32 hero_id = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_hero_id());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CGameInfo_CDotaGameInfo_CHeroSelectEvent::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CGameInfo_CDotaGameInfo_CHeroSelectEvent*>(&to_msg);
  auto& from = static_cast<const CGameInfo_CDotaGameInfo_CHeroSelectEvent&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CGameInfo.CDotaGameInfo.CHeroSelectEvent)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_impl_.is_pick_ = from._impl_.is_pick_;
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.team_ = from._impl_.team_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.hero_id_ = from._impl_.hero_id_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

void CGameInfo_CDotaGameInfo_CHeroSelectEvent::CopyFrom(const CGameInfo_CDotaGameInfo_CHeroSelectEvent& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:CGameInfo.CDotaGameInfo.CHeroSelectEvent)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void CGameInfo_CDotaGameInfo_CHeroSelectEvent::InternalSwap(CGameInfo_CDotaGameInfo_CHeroSelectEvent* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CGameInfo_CDotaGameInfo_CHeroSelectEvent, _impl_.hero_id_)
      + sizeof(CGameInfo_CDotaGameInfo_CHeroSelectEvent::_impl_.hero_id_)
      - PROTOBUF_FIELD_OFFSET(CGameInfo_CDotaGameInfo_CHeroSelectEvent, _impl_.is_pick_)>(
          reinterpret_cast<char*>(&_impl_.is_pick_),
          reinterpret_cast<char*>(&other->_impl_.is_pick_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CGameInfo_CDotaGameInfo_CHeroSelectEvent::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[2]);
}

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

class CGameInfo_CDotaGameInfo::_Internal {
 public:
  using HasBits = decltype(std::declval<CGameInfo_CDotaGameInfo>()._impl_._has_bits_);
  static void set_has_match_id(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_game_mode(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_game_winner(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_leagueid(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_radiant_team_id(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_dire_team_id(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_radiant_team_tag(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_dire_team_tag(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_end_time(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
};

CGameInfo_CDotaGameInfo::CGameInfo_CDotaGameInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CGameInfo.CDotaGameInfo)
}
CGameInfo_CDotaGameInfo::CGameInfo_CDotaGameInfo(const CGameInfo_CDotaGameInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CGameInfo_CDotaGameInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.player_info_){from._impl_.player_info_}
    , decltype(_impl_.picks_bans_){from._impl_.picks_bans_}
    , decltype(_impl_.radiant_team_tag_){}
    , decltype(_impl_.dire_team_tag_){}
    , decltype(_impl_.match_id_){}
    , decltype(_impl_.game_mode_){}
    , decltype(_impl_.game_winner_){}
    , decltype(_impl_.leagueid_){}
    , decltype(_impl_.radiant_team_id_){}
    , decltype(_impl_.dire_team_id_){}
    , decltype(_impl_.end_time_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.radiant_team_tag_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.radiant_team_tag_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_radiant_team_tag()) {
    _this->_impl_.radiant_team_tag_.Set(from._internal_radiant_team_tag(), 
      _this->GetArenaForAllocation());
  }
  _impl_.dire_team_tag_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.dire_team_tag_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_dire_team_tag()) {
    _this->_impl_.dire_team_tag_.Set(from._internal_dire_team_tag(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.match_id_, &from._impl_.match_id_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.end_time_) -
    reinterpret_cast<char*>(&_impl_.match_id_)) + sizeof(_impl_.end_time_));
  // @@protoc_insertion_point(copy_constructor:CGameInfo.CDotaGameInfo)
}

inline void CGameInfo_CDotaGameInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.player_info_){arena}
    , decltype(_impl_.picks_bans_){arena}
    , decltype(_impl_.radiant_team_tag_){}
    , decltype(_impl_.dire_team_tag_){}
    , decltype(_impl_.match_id_){uint64_t{0u}}
    , decltype(_impl_.game_mode_){0}
    , decltype(_impl_.game_winner_){0}
    , decltype(_impl_.leagueid_){0u}
    , decltype(_impl_.radiant_team_id_){0u}
    , decltype(_impl_.dire_team_id_){0u}
    , decltype(_impl_.end_time_){0u}
  };
  _impl_.radiant_team_tag_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.radiant_team_tag_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.dire_team_tag_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.dire_team_tag_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CGameInfo_CDotaGameInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.player_info_.~RepeatedPtrField();
  _impl_.picks_bans_.~RepeatedPtrField();
  _impl_.radiant_team_tag_.Destroy();
  _impl_.dire_team_tag_.Destroy();
}

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

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

  _impl_.player_info_.Clear();
  _impl_.picks_bans_.Clear();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.radiant_team_tag_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.dire_team_tag_.ClearNonDefaultToEmpty();
    }
  }
  if (cached_has_bits & 0x000000fcu) {
    ::memset(&_impl_.match_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.dire_team_id_) -
        reinterpret_cast<char*>(&_impl_.match_id_)) + sizeof(_impl_.dire_team_id_));
  }
  _impl_.end_time_ = 0u;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CGameInfo_CDotaGameInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional uint64 match_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_match_id(&has_bits);
          _impl_.match_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 game_mode = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_game_mode(&has_bits);
          _impl_.game_mode_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 game_winner = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_game_winner(&has_bits);
          _impl_.game_winner_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .CGameInfo.CDotaGameInfo.CPlayerInfo player_info = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_player_info(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional uint32 leagueid = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _Internal::set_has_leagueid(&has_bits);
          _impl_.leagueid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .CGameInfo.CDotaGameInfo.CHeroSelectEvent picks_bans = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_picks_bans(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional uint32 radiant_team_id = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _Internal::set_has_radiant_team_id(&has_bits);
          _impl_.radiant_team_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 dire_team_id = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
          _Internal::set_has_dire_team_id(&has_bits);
          _impl_.dire_team_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string radiant_team_tag = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
          auto str = _internal_mutable_radiant_team_tag();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CGameInfo.CDotaGameInfo.radiant_team_tag");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string dire_team_tag = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          auto str = _internal_mutable_dire_team_tag();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CGameInfo.CDotaGameInfo.dire_team_tag");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional uint32 end_time = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 88)) {
          _Internal::set_has_end_time(&has_bits);
          _impl_.end_time_ = ::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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional uint64 match_id = 1;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(1, this->_internal_match_id(), target);
  }

  // optional int32 game_mode = 2;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_game_mode(), target);
  }

  // optional int32 game_winner = 3;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_game_winner(), target);
  }

  // repeated .CGameInfo.CDotaGameInfo.CPlayerInfo player_info = 4;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_player_info_size()); i < n; i++) {
    const auto& repfield = this->_internal_player_info(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(4, repfield, repfield.GetCachedSize(), target, stream);
  }

  // optional uint32 leagueid = 5;
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(5, this->_internal_leagueid(), target);
  }

  // repeated .CGameInfo.CDotaGameInfo.CHeroSelectEvent picks_bans = 6;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_picks_bans_size()); i < n; i++) {
    const auto& repfield = this->_internal_picks_bans(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(6, repfield, repfield.GetCachedSize(), target, stream);
  }

  // optional uint32 radiant_team_id = 7;
  if (cached_has_bits & 0x00000040u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(7, this->_internal_radiant_team_id(), target);
  }

  // optional uint32 dire_team_id = 8;
  if (cached_has_bits & 0x00000080u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(8, this->_internal_dire_team_id(), target);
  }

  // optional string radiant_team_tag = 9;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_radiant_team_tag().data(), static_cast<int>(this->_internal_radiant_team_tag().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CGameInfo.CDotaGameInfo.radiant_team_tag");
    target = stream->WriteStringMaybeAliased(
        9, this->_internal_radiant_team_tag(), target);
  }

  // optional string dire_team_tag = 10;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_dire_team_tag().data(), static_cast<int>(this->_internal_dire_team_tag().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CGameInfo.CDotaGameInfo.dire_team_tag");
    target = stream->WriteStringMaybeAliased(
        10, this->_internal_dire_team_tag(), target);
  }

  // optional uint32 end_time = 11;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(11, this->_internal_end_time(), 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:CGameInfo.CDotaGameInfo)
  return target;
}

size_t CGameInfo_CDotaGameInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CGameInfo.CDotaGameInfo)
  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 .CGameInfo.CDotaGameInfo.CPlayerInfo player_info = 4;
  total_size += 1UL * this->_internal_player_info_size();
  for (const auto& msg : this->_impl_.player_info_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .CGameInfo.CDotaGameInfo.CHeroSelectEvent picks_bans = 6;
  total_size += 1UL * this->_internal_picks_bans_size();
  for (const auto& msg : this->_impl_.picks_bans_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional string radiant_team_tag = 9;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_radiant_team_tag());
    }

    // optional string dire_team_tag = 10;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_dire_team_tag());
    }

    // optional uint64 match_id = 1;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_match_id());
    }

    // optional int32 game_mode = 2;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_game_mode());
    }

    // optional int32 game_winner = 3;
    if (cached_has_bits & 0x00000010u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_game_winner());
    }

    // optional uint32 leagueid = 5;
    if (cached_has_bits & 0x00000020u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_leagueid());
    }

    // optional uint32 radiant_team_id = 7;
    if (cached_has_bits & 0x00000040u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_radiant_team_id());
    }

    // optional uint32 dire_team_id = 8;
    if (cached_has_bits & 0x00000080u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_dire_team_id());
    }

  }
  // optional uint32 end_time = 11;
  if (cached_has_bits & 0x00000100u) {
    total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_end_time());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CGameInfo_CDotaGameInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CGameInfo_CDotaGameInfo*>(&to_msg);
  auto& from = static_cast<const CGameInfo_CDotaGameInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CGameInfo.CDotaGameInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.player_info_.MergeFrom(from._impl_.player_info_);
  _this->_impl_.picks_bans_.MergeFrom(from._impl_.picks_bans_);
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_radiant_team_tag(from._internal_radiant_team_tag());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_dire_team_tag(from._internal_dire_team_tag());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.match_id_ = from._impl_.match_id_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.game_mode_ = from._impl_.game_mode_;
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.game_winner_ = from._impl_.game_winner_;
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_impl_.leagueid_ = from._impl_.leagueid_;
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_impl_.radiant_team_id_ = from._impl_.radiant_team_id_;
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_impl_.dire_team_id_ = from._impl_.dire_team_id_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00000100u) {
    _this->_internal_set_end_time(from._internal_end_time());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CGameInfo_CDotaGameInfo::InternalSwap(CGameInfo_CDotaGameInfo* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.player_info_.InternalSwap(&other->_impl_.player_info_);
  _impl_.picks_bans_.InternalSwap(&other->_impl_.picks_bans_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.radiant_team_tag_, lhs_arena,
      &other->_impl_.radiant_team_tag_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.dire_team_tag_, lhs_arena,
      &other->_impl_.dire_team_tag_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CGameInfo_CDotaGameInfo, _impl_.end_time_)
      + sizeof(CGameInfo_CDotaGameInfo::_impl_.end_time_)
      - PROTOBUF_FIELD_OFFSET(CGameInfo_CDotaGameInfo, _impl_.match_id_)>(
          reinterpret_cast<char*>(&_impl_.match_id_),
          reinterpret_cast<char*>(&other->_impl_.match_id_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CGameInfo_CDotaGameInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[3]);
}

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

class CGameInfo_CCSGameInfo::_Internal {
 public:
};

CGameInfo_CCSGameInfo::CGameInfo_CCSGameInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CGameInfo.CCSGameInfo)
}
CGameInfo_CCSGameInfo::CGameInfo_CCSGameInfo(const CGameInfo_CCSGameInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CGameInfo_CCSGameInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.round_start_ticks_){from._impl_.round_start_ticks_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:CGameInfo.CCSGameInfo)
}

inline void CGameInfo_CCSGameInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.round_start_ticks_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

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

inline void CGameInfo_CCSGameInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.round_start_ticks_.~RepeatedField();
}

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

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

  _impl_.round_start_ticks_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CGameInfo_CCSGameInfo::_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 int32 round_start_ticks = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          ptr -= 1;
          do {
            ptr += 1;
            _internal_add_round_start_ticks(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<8>(ptr));
        } else if (static_cast<uint8_t>(tag) == 10) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_round_start_ticks(), ptr, ctx);
          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* CGameInfo_CCSGameInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CGameInfo.CCSGameInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated int32 round_start_ticks = 1;
  for (int i = 0, n = this->_internal_round_start_ticks_size(); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_round_start_ticks(i), 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:CGameInfo.CCSGameInfo)
  return target;
}

size_t CGameInfo_CCSGameInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CGameInfo.CCSGameInfo)
  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 int32 round_start_ticks = 1;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      Int32Size(this->_impl_.round_start_ticks_);
    total_size += 1 *
                  ::_pbi::FromIntSize(this->_internal_round_start_ticks_size());
    total_size += data_size;
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CGameInfo_CCSGameInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CGameInfo_CCSGameInfo*>(&to_msg);
  auto& from = static_cast<const CGameInfo_CCSGameInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CGameInfo.CCSGameInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.round_start_ticks_.MergeFrom(from._impl_.round_start_ticks_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CGameInfo_CCSGameInfo::InternalSwap(CGameInfo_CCSGameInfo* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.round_start_ticks_.InternalSwap(&other->_impl_.round_start_ticks_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CGameInfo_CCSGameInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[4]);
}

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

class CGameInfo::_Internal {
 public:
  using HasBits = decltype(std::declval<CGameInfo>()._impl_._has_bits_);
  static const ::CGameInfo_CDotaGameInfo& dota(const CGameInfo* msg);
  static void set_has_dota(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::CGameInfo_CCSGameInfo& cs(const CGameInfo* msg);
  static void set_has_cs(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::CGameInfo_CDotaGameInfo&
CGameInfo::_Internal::dota(const CGameInfo* msg) {
  return *msg->_impl_.dota_;
}
const ::CGameInfo_CCSGameInfo&
CGameInfo::_Internal::cs(const CGameInfo* msg) {
  return *msg->_impl_.cs_;
}
CGameInfo::CGameInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CGameInfo)
}
CGameInfo::CGameInfo(const CGameInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CGameInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.dota_){nullptr}
    , decltype(_impl_.cs_){nullptr}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_dota()) {
    _this->_impl_.dota_ = new ::CGameInfo_CDotaGameInfo(*from._impl_.dota_);
  }
  if (from._internal_has_cs()) {
    _this->_impl_.cs_ = new ::CGameInfo_CCSGameInfo(*from._impl_.cs_);
  }
  // @@protoc_insertion_point(copy_constructor:CGameInfo)
}

inline void CGameInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.dota_){nullptr}
    , decltype(_impl_.cs_){nullptr}
  };
}

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

inline void CGameInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.dota_;
  if (this != internal_default_instance()) delete _impl_.cs_;
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      GOOGLE_DCHECK(_impl_.dota_ != nullptr);
      _impl_.dota_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(_impl_.cs_ != nullptr);
      _impl_.cs_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CGameInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional .CGameInfo.CDotaGameInfo dota = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_dota(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CGameInfo.CCSGameInfo cs = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_cs(), 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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional .CGameInfo.CDotaGameInfo dota = 4;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::dota(this),
        _Internal::dota(this).GetCachedSize(), target, stream);
  }

  // optional .CGameInfo.CCSGameInfo cs = 5;
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, _Internal::cs(this),
        _Internal::cs(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:CGameInfo)
  return target;
}

size_t CGameInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CGameInfo)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional .CGameInfo.CDotaGameInfo dota = 4;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.dota_);
    }

    // optional .CGameInfo.CCSGameInfo cs = 5;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.cs_);
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CGameInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CGameInfo*>(&to_msg);
  auto& from = static_cast<const CGameInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CGameInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_dota()->::CGameInfo_CDotaGameInfo::MergeFrom(
          from._internal_dota());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_cs()->::CGameInfo_CCSGameInfo::MergeFrom(
          from._internal_cs());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CGameInfo::InternalSwap(CGameInfo* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CGameInfo, _impl_.cs_)
      + sizeof(CGameInfo::_impl_.cs_)
      - PROTOBUF_FIELD_OFFSET(CGameInfo, _impl_.dota_)>(
          reinterpret_cast<char*>(&_impl_.dota_),
          reinterpret_cast<char*>(&other->_impl_.dota_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CGameInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[5]);
}

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

class CDemoFileInfo::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoFileInfo>()._impl_._has_bits_);
  static void set_has_playback_time(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_playback_ticks(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_playback_frames(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::CGameInfo& game_info(const CDemoFileInfo* msg);
  static void set_has_game_info(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::CGameInfo&
CDemoFileInfo::_Internal::game_info(const CDemoFileInfo* msg) {
  return *msg->_impl_.game_info_;
}
CDemoFileInfo::CDemoFileInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoFileInfo)
}
CDemoFileInfo::CDemoFileInfo(const CDemoFileInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoFileInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.game_info_){nullptr}
    , decltype(_impl_.playback_time_){}
    , decltype(_impl_.playback_ticks_){}
    , decltype(_impl_.playback_frames_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_game_info()) {
    _this->_impl_.game_info_ = new ::CGameInfo(*from._impl_.game_info_);
  }
  ::memcpy(&_impl_.playback_time_, &from._impl_.playback_time_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.playback_frames_) -
    reinterpret_cast<char*>(&_impl_.playback_time_)) + sizeof(_impl_.playback_frames_));
  // @@protoc_insertion_point(copy_constructor:CDemoFileInfo)
}

inline void CDemoFileInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.game_info_){nullptr}
    , decltype(_impl_.playback_time_){0}
    , decltype(_impl_.playback_ticks_){0}
    , decltype(_impl_.playback_frames_){0}
  };
}

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

inline void CDemoFileInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.game_info_;
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(_impl_.game_info_ != nullptr);
    _impl_.game_info_->Clear();
  }
  if (cached_has_bits & 0x0000000eu) {
    ::memset(&_impl_.playback_time_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.playback_frames_) -
        reinterpret_cast<char*>(&_impl_.playback_time_)) + sizeof(_impl_.playback_frames_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoFileInfo::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional float playback_time = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _Internal::set_has_playback_time(&has_bits);
          _impl_.playback_time_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else
          goto handle_unusual;
        continue;
      // optional int32 playback_ticks = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_playback_ticks(&has_bits);
          _impl_.playback_ticks_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 playback_frames = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_playback_frames(&has_bits);
          _impl_.playback_frames_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CGameInfo game_info = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_game_info(), 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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional float playback_time = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFloatToArray(1, this->_internal_playback_time(), target);
  }

  // optional int32 playback_ticks = 2;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_playback_ticks(), target);
  }

  // optional int32 playback_frames = 3;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_playback_frames(), target);
  }

  // optional .CGameInfo game_info = 4;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::game_info(this),
        _Internal::game_info(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:CDemoFileInfo)
  return target;
}

size_t CDemoFileInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoFileInfo)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    // optional .CGameInfo game_info = 4;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.game_info_);
    }

    // optional float playback_time = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 4;
    }

    // optional int32 playback_ticks = 2;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_playback_ticks());
    }

    // optional int32 playback_frames = 3;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_playback_frames());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoFileInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoFileInfo*>(&to_msg);
  auto& from = static_cast<const CDemoFileInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoFileInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_game_info()->::CGameInfo::MergeFrom(
          from._internal_game_info());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.playback_time_ = from._impl_.playback_time_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.playback_ticks_ = from._impl_.playback_ticks_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.playback_frames_ = from._impl_.playback_frames_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoFileInfo::InternalSwap(CDemoFileInfo* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CDemoFileInfo, _impl_.playback_frames_)
      + sizeof(CDemoFileInfo::_impl_.playback_frames_)
      - PROTOBUF_FIELD_OFFSET(CDemoFileInfo, _impl_.game_info_)>(
          reinterpret_cast<char*>(&_impl_.game_info_),
          reinterpret_cast<char*>(&other->_impl_.game_info_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoFileInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[6]);
}

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

class CDemoPacket::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoPacket>()._impl_._has_bits_);
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

CDemoPacket::CDemoPacket(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoPacket)
}
CDemoPacket::CDemoPacket(const CDemoPacket& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoPacket* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_data()) {
    _this->_impl_.data_.Set(from._internal_data(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:CDemoPacket)
}

inline void CDemoPacket::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
  };
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoPacket::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.data_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoPacket::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bytes data = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional bytes data = 3;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        3, this->_internal_data(), 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:CDemoPacket)
  return target;
}

size_t CDemoPacket::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoPacket)
  size_t total_size = 0;

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

  // optional bytes data = 3;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_data());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoPacket::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoPacket*>(&to_msg);
  auto& from = static_cast<const CDemoPacket&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoPacket)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_data()) {
    _this->_internal_set_data(from._internal_data());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoPacket::InternalSwap(CDemoPacket* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.data_, lhs_arena,
      &other->_impl_.data_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoPacket::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[7]);
}

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

class CDemoFullPacket::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoFullPacket>()._impl_._has_bits_);
  static const ::CDemoStringTables& string_table(const CDemoFullPacket* msg);
  static void set_has_string_table(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::CDemoPacket& packet(const CDemoFullPacket* msg);
  static void set_has_packet(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::CDemoStringTables&
CDemoFullPacket::_Internal::string_table(const CDemoFullPacket* msg) {
  return *msg->_impl_.string_table_;
}
const ::CDemoPacket&
CDemoFullPacket::_Internal::packet(const CDemoFullPacket* msg) {
  return *msg->_impl_.packet_;
}
CDemoFullPacket::CDemoFullPacket(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoFullPacket)
}
CDemoFullPacket::CDemoFullPacket(const CDemoFullPacket& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoFullPacket* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.string_table_){nullptr}
    , decltype(_impl_.packet_){nullptr}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_string_table()) {
    _this->_impl_.string_table_ = new ::CDemoStringTables(*from._impl_.string_table_);
  }
  if (from._internal_has_packet()) {
    _this->_impl_.packet_ = new ::CDemoPacket(*from._impl_.packet_);
  }
  // @@protoc_insertion_point(copy_constructor:CDemoFullPacket)
}

inline void CDemoFullPacket::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.string_table_){nullptr}
    , decltype(_impl_.packet_){nullptr}
  };
}

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

inline void CDemoFullPacket::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  if (this != internal_default_instance()) delete _impl_.string_table_;
  if (this != internal_default_instance()) delete _impl_.packet_;
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      GOOGLE_DCHECK(_impl_.string_table_ != nullptr);
      _impl_.string_table_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(_impl_.packet_ != nullptr);
      _impl_.packet_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoFullPacket::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional .CDemoStringTables string_table = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_string_table(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CDemoPacket packet = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_packet(), 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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional .CDemoStringTables string_table = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::string_table(this),
        _Internal::string_table(this).GetCachedSize(), target, stream);
  }

  // optional .CDemoPacket packet = 2;
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(2, _Internal::packet(this),
        _Internal::packet(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:CDemoFullPacket)
  return target;
}

size_t CDemoFullPacket::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoFullPacket)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional .CDemoStringTables string_table = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.string_table_);
    }

    // optional .CDemoPacket packet = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.packet_);
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoFullPacket::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoFullPacket*>(&to_msg);
  auto& from = static_cast<const CDemoFullPacket&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoFullPacket)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_mutable_string_table()->::CDemoStringTables::MergeFrom(
          from._internal_string_table());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_packet()->::CDemoPacket::MergeFrom(
          from._internal_packet());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoFullPacket::InternalSwap(CDemoFullPacket* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CDemoFullPacket, _impl_.packet_)
      + sizeof(CDemoFullPacket::_impl_.packet_)
      - PROTOBUF_FIELD_OFFSET(CDemoFullPacket, _impl_.string_table_)>(
          reinterpret_cast<char*>(&_impl_.string_table_),
          reinterpret_cast<char*>(&other->_impl_.string_table_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoFullPacket::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[8]);
}

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

class CDemoSaveGame::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoSaveGame>()._impl_._has_bits_);
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_steam_id(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_signature(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_version(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
};

CDemoSaveGame::CDemoSaveGame(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoSaveGame)
}
CDemoSaveGame::CDemoSaveGame(const CDemoSaveGame& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoSaveGame* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.steam_id_){}
    , decltype(_impl_.signature_){}
    , decltype(_impl_.version_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_data()) {
    _this->_impl_.data_.Set(from._internal_data(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.steam_id_, &from._impl_.steam_id_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.version_) -
    reinterpret_cast<char*>(&_impl_.steam_id_)) + sizeof(_impl_.version_));
  // @@protoc_insertion_point(copy_constructor:CDemoSaveGame)
}

inline void CDemoSaveGame::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.steam_id_){uint64_t{0u}}
    , decltype(_impl_.signature_){uint64_t{0u}}
    , decltype(_impl_.version_){0}
  };
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoSaveGame::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.data_.ClearNonDefaultToEmpty();
  }
  if (cached_has_bits & 0x0000000eu) {
    ::memset(&_impl_.steam_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.version_) -
        reinterpret_cast<char*>(&_impl_.steam_id_)) + sizeof(_impl_.version_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoSaveGame::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bytes data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional fixed64 steam_id = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 17)) {
          _Internal::set_has_steam_id(&has_bits);
          _impl_.steam_id_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<uint64_t>(ptr);
          ptr += sizeof(uint64_t);
        } else
          goto handle_unusual;
        continue;
      // optional fixed64 signature = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 25)) {
          _Internal::set_has_signature(&has_bits);
          _impl_.signature_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<uint64_t>(ptr);
          ptr += sizeof(uint64_t);
        } else
          goto handle_unusual;
        continue;
      // optional int32 version = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _Internal::set_has_version(&has_bits);
          _impl_.version_ = ::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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional bytes data = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        1, this->_internal_data(), target);
  }

  // optional fixed64 steam_id = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFixed64ToArray(2, this->_internal_steam_id(), target);
  }

  // optional fixed64 signature = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFixed64ToArray(3, this->_internal_signature(), target);
  }

  // optional int32 version = 4;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(4, this->_internal_version(), 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:CDemoSaveGame)
  return target;
}

size_t CDemoSaveGame::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoSaveGame)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    // optional bytes data = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_data());
    }

    // optional fixed64 steam_id = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 8;
    }

    // optional fixed64 signature = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 + 8;
    }

    // optional int32 version = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_version());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoSaveGame::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoSaveGame*>(&to_msg);
  auto& from = static_cast<const CDemoSaveGame&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoSaveGame)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_data(from._internal_data());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.steam_id_ = from._impl_.steam_id_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.signature_ = from._impl_.signature_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.version_ = from._impl_.version_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoSaveGame::InternalSwap(CDemoSaveGame* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.data_, lhs_arena,
      &other->_impl_.data_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CDemoSaveGame, _impl_.version_)
      + sizeof(CDemoSaveGame::_impl_.version_)
      - PROTOBUF_FIELD_OFFSET(CDemoSaveGame, _impl_.steam_id_)>(
          reinterpret_cast<char*>(&_impl_.steam_id_),
          reinterpret_cast<char*>(&other->_impl_.steam_id_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoSaveGame::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[9]);
}

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

class CDemoSyncTick::_Internal {
 public:
};

CDemoSyncTick::CDemoSyncTick(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase(arena, is_message_owned) {
  // @@protoc_insertion_point(arena_constructor:CDemoSyncTick)
}
CDemoSyncTick::CDemoSyncTick(const CDemoSyncTick& from)
  : ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase() {
  CDemoSyncTick* const _this = this; (void)_this;
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:CDemoSyncTick)
}





const ::PROTOBUF_NAMESPACE_ID::Message::ClassData CDemoSyncTick::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl,
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl,
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*CDemoSyncTick::GetClassData() const { return &_class_data_; }







::PROTOBUF_NAMESPACE_ID::Metadata CDemoSyncTick::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[10]);
}

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

class CDemoConsoleCmd::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoConsoleCmd>()._impl_._has_bits_);
  static void set_has_cmdstring(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

CDemoConsoleCmd::CDemoConsoleCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoConsoleCmd)
}
CDemoConsoleCmd::CDemoConsoleCmd(const CDemoConsoleCmd& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoConsoleCmd* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.cmdstring_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.cmdstring_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.cmdstring_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_cmdstring()) {
    _this->_impl_.cmdstring_.Set(from._internal_cmdstring(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:CDemoConsoleCmd)
}

inline void CDemoConsoleCmd::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.cmdstring_){}
  };
  _impl_.cmdstring_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.cmdstring_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoConsoleCmd::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.cmdstring_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.cmdstring_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoConsoleCmd::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string cmdstring = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_cmdstring();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoConsoleCmd.cmdstring");
          #endif  // !NDEBUG
        } 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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional string cmdstring = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_cmdstring().data(), static_cast<int>(this->_internal_cmdstring().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoConsoleCmd.cmdstring");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_cmdstring(), 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:CDemoConsoleCmd)
  return target;
}

size_t CDemoConsoleCmd::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoConsoleCmd)
  size_t total_size = 0;

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

  // optional string cmdstring = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_cmdstring());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoConsoleCmd::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoConsoleCmd*>(&to_msg);
  auto& from = static_cast<const CDemoConsoleCmd&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoConsoleCmd)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_cmdstring()) {
    _this->_internal_set_cmdstring(from._internal_cmdstring());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoConsoleCmd::InternalSwap(CDemoConsoleCmd* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.cmdstring_, lhs_arena,
      &other->_impl_.cmdstring_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoConsoleCmd::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[11]);
}

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

class CDemoSendTables::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoSendTables>()._impl_._has_bits_);
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

CDemoSendTables::CDemoSendTables(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoSendTables)
}
CDemoSendTables::CDemoSendTables(const CDemoSendTables& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoSendTables* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_data()) {
    _this->_impl_.data_.Set(from._internal_data(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:CDemoSendTables)
}

inline void CDemoSendTables::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
  };
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoSendTables::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.data_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoSendTables::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bytes data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional bytes data = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        1, this->_internal_data(), 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:CDemoSendTables)
  return target;
}

size_t CDemoSendTables::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoSendTables)
  size_t total_size = 0;

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

  // optional bytes data = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_data());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoSendTables::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoSendTables*>(&to_msg);
  auto& from = static_cast<const CDemoSendTables&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoSendTables)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_data()) {
    _this->_internal_set_data(from._internal_data());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoSendTables::InternalSwap(CDemoSendTables* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.data_, lhs_arena,
      &other->_impl_.data_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoSendTables::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[12]);
}

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

class CDemoClassInfo_class_t::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoClassInfo_class_t>()._impl_._has_bits_);
  static void set_has_class_id(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_network_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_table_name(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

CDemoClassInfo_class_t::CDemoClassInfo_class_t(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoClassInfo.class_t)
}
CDemoClassInfo_class_t::CDemoClassInfo_class_t(const CDemoClassInfo_class_t& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoClassInfo_class_t* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.network_name_){}
    , decltype(_impl_.table_name_){}
    , decltype(_impl_.class_id_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.network_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.network_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_network_name()) {
    _this->_impl_.network_name_.Set(from._internal_network_name(), 
      _this->GetArenaForAllocation());
  }
  _impl_.table_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.table_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_table_name()) {
    _this->_impl_.table_name_.Set(from._internal_table_name(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.class_id_ = from._impl_.class_id_;
  // @@protoc_insertion_point(copy_constructor:CDemoClassInfo.class_t)
}

inline void CDemoClassInfo_class_t::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.network_name_){}
    , decltype(_impl_.table_name_){}
    , decltype(_impl_.class_id_){0}
  };
  _impl_.network_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.network_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.table_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.table_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoClassInfo_class_t::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.network_name_.Destroy();
  _impl_.table_name_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.network_name_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.table_name_.ClearNonDefaultToEmpty();
    }
  }
  _impl_.class_id_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoClassInfo_class_t::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional int32 class_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_class_id(&has_bits);
          _impl_.class_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string network_name = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_network_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoClassInfo.class_t.network_name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional string table_name = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_table_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoClassInfo.class_t.table_name");
          #endif  // !NDEBUG
        } 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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional int32 class_id = 1;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_class_id(), target);
  }

  // optional string network_name = 2;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_network_name().data(), static_cast<int>(this->_internal_network_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoClassInfo.class_t.network_name");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_network_name(), target);
  }

  // optional string table_name = 3;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_table_name().data(), static_cast<int>(this->_internal_table_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoClassInfo.class_t.table_name");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_table_name(), 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:CDemoClassInfo.class_t)
  return target;
}

size_t CDemoClassInfo_class_t::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoClassInfo.class_t)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional string network_name = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_network_name());
    }

    // optional string table_name = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_table_name());
    }

    // optional int32 class_id = 1;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_class_id());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoClassInfo_class_t::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoClassInfo_class_t*>(&to_msg);
  auto& from = static_cast<const CDemoClassInfo_class_t&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoClassInfo.class_t)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_network_name(from._internal_network_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_table_name(from._internal_table_name());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.class_id_ = from._impl_.class_id_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoClassInfo_class_t::InternalSwap(CDemoClassInfo_class_t* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.network_name_, lhs_arena,
      &other->_impl_.network_name_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.table_name_, lhs_arena,
      &other->_impl_.table_name_, rhs_arena
  );
  swap(_impl_.class_id_, other->_impl_.class_id_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoClassInfo_class_t::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[13]);
}

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

class CDemoClassInfo::_Internal {
 public:
};

CDemoClassInfo::CDemoClassInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoClassInfo)
}
CDemoClassInfo::CDemoClassInfo(const CDemoClassInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoClassInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.classes_){from._impl_.classes_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:CDemoClassInfo)
}

inline void CDemoClassInfo::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.classes_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

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

inline void CDemoClassInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.classes_.~RepeatedPtrField();
}

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

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

  _impl_.classes_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoClassInfo::_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 .CDemoClassInfo.class_t classes = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_classes(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(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* CDemoClassInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CDemoClassInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .CDemoClassInfo.class_t classes = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_classes_size()); i < n; i++) {
    const auto& repfield = this->_internal_classes(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, 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:CDemoClassInfo)
  return target;
}

size_t CDemoClassInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoClassInfo)
  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 .CDemoClassInfo.class_t classes = 1;
  total_size += 1UL * this->_internal_classes_size();
  for (const auto& msg : this->_impl_.classes_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoClassInfo::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoClassInfo*>(&to_msg);
  auto& from = static_cast<const CDemoClassInfo&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoClassInfo)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.classes_.MergeFrom(from._impl_.classes_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoClassInfo::InternalSwap(CDemoClassInfo* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.classes_.InternalSwap(&other->_impl_.classes_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoClassInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[14]);
}

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

class CDemoCustomData::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoCustomData>()._impl_._has_bits_);
  static void set_has_callback_index(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

CDemoCustomData::CDemoCustomData(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoCustomData)
}
CDemoCustomData::CDemoCustomData(const CDemoCustomData& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoCustomData* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.callback_index_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_data()) {
    _this->_impl_.data_.Set(from._internal_data(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.callback_index_ = from._impl_.callback_index_;
  // @@protoc_insertion_point(copy_constructor:CDemoCustomData)
}

inline void CDemoCustomData::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.callback_index_){0}
  };
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoCustomData::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.data_.ClearNonDefaultToEmpty();
  }
  _impl_.callback_index_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoCustomData::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional int32 callback_index = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_callback_index(&has_bits);
          _impl_.callback_index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bytes data = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional int32 callback_index = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_callback_index(), target);
  }

  // optional bytes data = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_data(), 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:CDemoCustomData)
  return target;
}

size_t CDemoCustomData::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoCustomData)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional bytes data = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_data());
    }

    // optional int32 callback_index = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_callback_index());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoCustomData::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoCustomData*>(&to_msg);
  auto& from = static_cast<const CDemoCustomData&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoCustomData)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_data(from._internal_data());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.callback_index_ = from._impl_.callback_index_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoCustomData::InternalSwap(CDemoCustomData* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.data_, lhs_arena,
      &other->_impl_.data_, rhs_arena
  );
  swap(_impl_.callback_index_, other->_impl_.callback_index_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoCustomData::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[15]);
}

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

class CDemoCustomDataCallbacks::_Internal {
 public:
};

CDemoCustomDataCallbacks::CDemoCustomDataCallbacks(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoCustomDataCallbacks)
}
CDemoCustomDataCallbacks::CDemoCustomDataCallbacks(const CDemoCustomDataCallbacks& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoCustomDataCallbacks* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.save_id_){from._impl_.save_id_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:CDemoCustomDataCallbacks)
}

inline void CDemoCustomDataCallbacks::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.save_id_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

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

inline void CDemoCustomDataCallbacks::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.save_id_.~RepeatedPtrField();
}

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

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

  _impl_.save_id_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoCustomDataCallbacks::_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 save_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_save_id();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            #ifndef NDEBUG
            ::_pbi::VerifyUTF8(str, "CDemoCustomDataCallbacks.save_id");
            #endif  // !NDEBUG
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(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* CDemoCustomDataCallbacks::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CDemoCustomDataCallbacks)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated string save_id = 1;
  for (int i = 0, n = this->_internal_save_id_size(); i < n; i++) {
    const auto& s = this->_internal_save_id(i);
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      s.data(), static_cast<int>(s.length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoCustomDataCallbacks.save_id");
    target = stream->WriteString(1, 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:CDemoCustomDataCallbacks)
  return target;
}

size_t CDemoCustomDataCallbacks::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoCustomDataCallbacks)
  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 save_id = 1;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.save_id_.size());
  for (int i = 0, n = _impl_.save_id_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
      _impl_.save_id_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoCustomDataCallbacks::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoCustomDataCallbacks*>(&to_msg);
  auto& from = static_cast<const CDemoCustomDataCallbacks&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoCustomDataCallbacks)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.save_id_.MergeFrom(from._impl_.save_id_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoCustomDataCallbacks::InternalSwap(CDemoCustomDataCallbacks* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.save_id_.InternalSwap(&other->_impl_.save_id_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoCustomDataCallbacks::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[16]);
}

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

class CDemoAnimationHeader::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoAnimationHeader>()._impl_._has_bits_);
  static void set_has_entity_id(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_tick(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

CDemoAnimationHeader::CDemoAnimationHeader(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoAnimationHeader)
}
CDemoAnimationHeader::CDemoAnimationHeader(const CDemoAnimationHeader& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoAnimationHeader* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.entity_id_){}
    , decltype(_impl_.tick_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_data()) {
    _this->_impl_.data_.Set(from._internal_data(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.entity_id_, &from._impl_.entity_id_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.tick_) -
    reinterpret_cast<char*>(&_impl_.entity_id_)) + sizeof(_impl_.tick_));
  // @@protoc_insertion_point(copy_constructor:CDemoAnimationHeader)
}

inline void CDemoAnimationHeader::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.entity_id_){0}
    , decltype(_impl_.tick_){0}
  };
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoAnimationHeader::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.data_.ClearNonDefaultToEmpty();
  }
  if (cached_has_bits & 0x00000006u) {
    ::memset(&_impl_.entity_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.tick_) -
        reinterpret_cast<char*>(&_impl_.entity_id_)) + sizeof(_impl_.tick_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoAnimationHeader::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional sint32 entity_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_entity_id(&has_bits);
          _impl_.entity_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 tick = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_tick(&has_bits);
          _impl_.tick_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bytes data = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional sint32 entity_id = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(1, this->_internal_entity_id(), target);
  }

  // optional int32 tick = 2;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_tick(), target);
  }

  // optional bytes data = 3;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        3, this->_internal_data(), 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:CDemoAnimationHeader)
  return target;
}

size_t CDemoAnimationHeader::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoAnimationHeader)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional bytes data = 3;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_data());
    }

    // optional sint32 entity_id = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_entity_id());
    }

    // optional int32 tick = 2;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_tick());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoAnimationHeader::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoAnimationHeader*>(&to_msg);
  auto& from = static_cast<const CDemoAnimationHeader&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoAnimationHeader)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_data(from._internal_data());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.entity_id_ = from._impl_.entity_id_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.tick_ = from._impl_.tick_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoAnimationHeader::InternalSwap(CDemoAnimationHeader* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.data_, lhs_arena,
      &other->_impl_.data_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CDemoAnimationHeader, _impl_.tick_)
      + sizeof(CDemoAnimationHeader::_impl_.tick_)
      - PROTOBUF_FIELD_OFFSET(CDemoAnimationHeader, _impl_.entity_id_)>(
          reinterpret_cast<char*>(&_impl_.entity_id_),
          reinterpret_cast<char*>(&other->_impl_.entity_id_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoAnimationHeader::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[17]);
}

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

class CDemoAnimationData::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoAnimationData>()._impl_._has_bits_);
  static void set_has_entity_id(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_start_tick(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_end_tick(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_data_checksum(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
};

CDemoAnimationData::CDemoAnimationData(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoAnimationData)
}
CDemoAnimationData::CDemoAnimationData(const CDemoAnimationData& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoAnimationData* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.entity_id_){}
    , decltype(_impl_.start_tick_){}
    , decltype(_impl_.data_checksum_){}
    , decltype(_impl_.end_tick_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_data()) {
    _this->_impl_.data_.Set(from._internal_data(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.entity_id_, &from._impl_.entity_id_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.end_tick_) -
    reinterpret_cast<char*>(&_impl_.entity_id_)) + sizeof(_impl_.end_tick_));
  // @@protoc_insertion_point(copy_constructor:CDemoAnimationData)
}

inline void CDemoAnimationData::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.entity_id_){0}
    , decltype(_impl_.start_tick_){0}
    , decltype(_impl_.data_checksum_){int64_t{0}}
    , decltype(_impl_.end_tick_){0}
  };
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoAnimationData::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.data_.ClearNonDefaultToEmpty();
  }
  if (cached_has_bits & 0x0000001eu) {
    ::memset(&_impl_.entity_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.end_tick_) -
        reinterpret_cast<char*>(&_impl_.entity_id_)) + sizeof(_impl_.end_tick_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoAnimationData::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional sint32 entity_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_entity_id(&has_bits);
          _impl_.entity_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarintZigZag32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 start_tick = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_start_tick(&has_bits);
          _impl_.start_tick_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int32 end_tick = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_end_tick(&has_bits);
          _impl_.end_tick_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bytes data = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          auto str = _internal_mutable_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional int64 data_checksum = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _Internal::set_has_data_checksum(&has_bits);
          _impl_.data_checksum_ = ::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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional sint32 entity_id = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteSInt32ToArray(1, this->_internal_entity_id(), target);
  }

  // optional int32 start_tick = 2;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(2, this->_internal_start_tick(), target);
  }

  // optional int32 end_tick = 3;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(3, this->_internal_end_tick(), target);
  }

  // optional bytes data = 4;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        4, this->_internal_data(), target);
  }

  // optional int64 data_checksum = 5;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt64ToArray(5, this->_internal_data_checksum(), 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:CDemoAnimationData)
  return target;
}

size_t CDemoAnimationData::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoAnimationData)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    // optional bytes data = 4;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_data());
    }

    // optional sint32 entity_id = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::SInt32SizePlusOne(this->_internal_entity_id());
    }

    // optional int32 start_tick = 2;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_start_tick());
    }

    // optional int64 data_checksum = 5;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(this->_internal_data_checksum());
    }

    // optional int32 end_tick = 3;
    if (cached_has_bits & 0x00000010u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_end_tick());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoAnimationData::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoAnimationData*>(&to_msg);
  auto& from = static_cast<const CDemoAnimationData&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoAnimationData)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_data(from._internal_data());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.entity_id_ = from._impl_.entity_id_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.start_tick_ = from._impl_.start_tick_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.data_checksum_ = from._impl_.data_checksum_;
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.end_tick_ = from._impl_.end_tick_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoAnimationData::InternalSwap(CDemoAnimationData* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.data_, lhs_arena,
      &other->_impl_.data_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CDemoAnimationData, _impl_.end_tick_)
      + sizeof(CDemoAnimationData::_impl_.end_tick_)
      - PROTOBUF_FIELD_OFFSET(CDemoAnimationData, _impl_.entity_id_)>(
          reinterpret_cast<char*>(&_impl_.entity_id_),
          reinterpret_cast<char*>(&other->_impl_.entity_id_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoAnimationData::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[18]);
}

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

class CDemoStringTables_items_t::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoStringTables_items_t>()._impl_._has_bits_);
  static void set_has_str(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

CDemoStringTables_items_t::CDemoStringTables_items_t(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoStringTables.items_t)
}
CDemoStringTables_items_t::CDemoStringTables_items_t(const CDemoStringTables_items_t& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoStringTables_items_t* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.str_){}
    , decltype(_impl_.data_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.str_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.str_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_str()) {
    _this->_impl_.str_.Set(from._internal_str(), 
      _this->GetArenaForAllocation());
  }
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_data()) {
    _this->_impl_.data_.Set(from._internal_data(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:CDemoStringTables.items_t)
}

inline void CDemoStringTables_items_t::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.str_){}
    , decltype(_impl_.data_){}
  };
  _impl_.str_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.str_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoStringTables_items_t::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.str_.Destroy();
  _impl_.data_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.str_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.data_.ClearNonDefaultToEmpty();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoStringTables_items_t::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string str = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_str();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoStringTables.items_t.str");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional bytes data = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional string str = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_str().data(), static_cast<int>(this->_internal_str().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoStringTables.items_t.str");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_str(), target);
  }

  // optional bytes data = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_data(), 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:CDemoStringTables.items_t)
  return target;
}

size_t CDemoStringTables_items_t::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoStringTables.items_t)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string str = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_str());
    }

    // optional bytes data = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_data());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoStringTables_items_t::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoStringTables_items_t*>(&to_msg);
  auto& from = static_cast<const CDemoStringTables_items_t&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoStringTables.items_t)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_str(from._internal_str());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_data(from._internal_data());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoStringTables_items_t::InternalSwap(CDemoStringTables_items_t* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.str_, lhs_arena,
      &other->_impl_.str_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.data_, lhs_arena,
      &other->_impl_.data_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoStringTables_items_t::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[19]);
}

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

class CDemoStringTables_table_t::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoStringTables_table_t>()._impl_._has_bits_);
  static void set_has_table_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_table_flags(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

CDemoStringTables_table_t::CDemoStringTables_table_t(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoStringTables.table_t)
}
CDemoStringTables_table_t::CDemoStringTables_table_t(const CDemoStringTables_table_t& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoStringTables_table_t* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.items_){from._impl_.items_}
    , decltype(_impl_.items_clientside_){from._impl_.items_clientside_}
    , decltype(_impl_.table_name_){}
    , decltype(_impl_.table_flags_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.table_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.table_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_table_name()) {
    _this->_impl_.table_name_.Set(from._internal_table_name(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.table_flags_ = from._impl_.table_flags_;
  // @@protoc_insertion_point(copy_constructor:CDemoStringTables.table_t)
}

inline void CDemoStringTables_table_t::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.items_){arena}
    , decltype(_impl_.items_clientside_){arena}
    , decltype(_impl_.table_name_){}
    , decltype(_impl_.table_flags_){0}
  };
  _impl_.table_name_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.table_name_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoStringTables_table_t::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.items_.~RepeatedPtrField();
  _impl_.items_clientside_.~RepeatedPtrField();
  _impl_.table_name_.Destroy();
}

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

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

  _impl_.items_.Clear();
  _impl_.items_clientside_.Clear();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.table_name_.ClearNonDefaultToEmpty();
  }
  _impl_.table_flags_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoStringTables_table_t::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional string table_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_table_name();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CDemoStringTables.table_t.table_name");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // repeated .CDemoStringTables.items_t items = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_items(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
        } else
          goto handle_unusual;
        continue;
      // repeated .CDemoStringTables.items_t items_clientside = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_items_clientside(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional int32 table_flags = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _Internal::set_has_table_flags(&has_bits);
          _impl_.table_flags_ = ::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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional string table_name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_table_name().data(), static_cast<int>(this->_internal_table_name().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CDemoStringTables.table_t.table_name");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_table_name(), target);
  }

  // repeated .CDemoStringTables.items_t items = 2;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_items_size()); i < n; i++) {
    const auto& repfield = this->_internal_items(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(2, repfield, repfield.GetCachedSize(), target, stream);
  }

  // repeated .CDemoStringTables.items_t items_clientside = 3;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_items_clientside_size()); i < n; i++) {
    const auto& repfield = this->_internal_items_clientside(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(3, repfield, repfield.GetCachedSize(), target, stream);
  }

  // optional int32 table_flags = 4;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(4, this->_internal_table_flags(), 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:CDemoStringTables.table_t)
  return target;
}

size_t CDemoStringTables_table_t::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoStringTables.table_t)
  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 .CDemoStringTables.items_t items = 2;
  total_size += 1UL * this->_internal_items_size();
  for (const auto& msg : this->_impl_.items_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .CDemoStringTables.items_t items_clientside = 3;
  total_size += 1UL * this->_internal_items_clientside_size();
  for (const auto& msg : this->_impl_.items_clientside_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional string table_name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_table_name());
    }

    // optional int32 table_flags = 4;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_table_flags());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoStringTables_table_t::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoStringTables_table_t*>(&to_msg);
  auto& from = static_cast<const CDemoStringTables_table_t&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoStringTables.table_t)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.items_.MergeFrom(from._impl_.items_);
  _this->_impl_.items_clientside_.MergeFrom(from._impl_.items_clientside_);
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_table_name(from._internal_table_name());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.table_flags_ = from._impl_.table_flags_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoStringTables_table_t::InternalSwap(CDemoStringTables_table_t* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  _impl_.items_.InternalSwap(&other->_impl_.items_);
  _impl_.items_clientside_.InternalSwap(&other->_impl_.items_clientside_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.table_name_, lhs_arena,
      &other->_impl_.table_name_, rhs_arena
  );
  swap(_impl_.table_flags_, other->_impl_.table_flags_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoStringTables_table_t::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[20]);
}

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

class CDemoStringTables::_Internal {
 public:
};

CDemoStringTables::CDemoStringTables(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoStringTables)
}
CDemoStringTables::CDemoStringTables(const CDemoStringTables& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoStringTables* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.tables_){from._impl_.tables_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:CDemoStringTables)
}

inline void CDemoStringTables::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.tables_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

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

inline void CDemoStringTables::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.tables_.~RepeatedPtrField();
}

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

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

  _impl_.tables_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoStringTables::_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 .CDemoStringTables.table_t tables = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_tables(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(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* CDemoStringTables::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CDemoStringTables)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .CDemoStringTables.table_t tables = 1;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_tables_size()); i < n; i++) {
    const auto& repfield = this->_internal_tables(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(1, 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:CDemoStringTables)
  return target;
}

size_t CDemoStringTables::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoStringTables)
  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 .CDemoStringTables.table_t tables = 1;
  total_size += 1UL * this->_internal_tables_size();
  for (const auto& msg : this->_impl_.tables_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoStringTables::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoStringTables*>(&to_msg);
  auto& from = static_cast<const CDemoStringTables&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoStringTables)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.tables_.MergeFrom(from._impl_.tables_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoStringTables::InternalSwap(CDemoStringTables* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.tables_.InternalSwap(&other->_impl_.tables_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoStringTables::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[21]);
}

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

class CDemoStop::_Internal {
 public:
};

CDemoStop::CDemoStop(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase(arena, is_message_owned) {
  // @@protoc_insertion_point(arena_constructor:CDemoStop)
}
CDemoStop::CDemoStop(const CDemoStop& from)
  : ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase() {
  CDemoStop* const _this = this; (void)_this;
  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:CDemoStop)
}





const ::PROTOBUF_NAMESPACE_ID::Message::ClassData CDemoStop::_class_data_ = {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl,
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl,
};
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*CDemoStop::GetClassData() const { return &_class_data_; }







::PROTOBUF_NAMESPACE_ID::Metadata CDemoStop::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[22]);
}

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

class CDemoUserCmd::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoUserCmd>()._impl_._has_bits_);
  static void set_has_cmd_number(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

CDemoUserCmd::CDemoUserCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoUserCmd)
}
CDemoUserCmd::CDemoUserCmd(const CDemoUserCmd& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoUserCmd* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.cmd_number_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_data()) {
    _this->_impl_.data_.Set(from._internal_data(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.cmd_number_ = from._impl_.cmd_number_;
  // @@protoc_insertion_point(copy_constructor:CDemoUserCmd)
}

inline void CDemoUserCmd::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
    , decltype(_impl_.cmd_number_){0}
  };
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoUserCmd::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.data_.ClearNonDefaultToEmpty();
  }
  _impl_.cmd_number_ = 0;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoUserCmd::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional int32 cmd_number = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_cmd_number(&has_bits);
          _impl_.cmd_number_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bytes data = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional int32 cmd_number = 1;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteInt32ToArray(1, this->_internal_cmd_number(), target);
  }

  // optional bytes data = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_data(), 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:CDemoUserCmd)
  return target;
}

size_t CDemoUserCmd::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoUserCmd)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional bytes data = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_data());
    }

    // optional int32 cmd_number = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(this->_internal_cmd_number());
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoUserCmd::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoUserCmd*>(&to_msg);
  auto& from = static_cast<const CDemoUserCmd&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoUserCmd)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_data(from._internal_data());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.cmd_number_ = from._impl_.cmd_number_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoUserCmd::InternalSwap(CDemoUserCmd* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.data_, lhs_arena,
      &other->_impl_.data_, rhs_arena
  );
  swap(_impl_.cmd_number_, other->_impl_.cmd_number_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoUserCmd::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[23]);
}

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

class CDemoSpawnGroups::_Internal {
 public:
};

CDemoSpawnGroups::CDemoSpawnGroups(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoSpawnGroups)
}
CDemoSpawnGroups::CDemoSpawnGroups(const CDemoSpawnGroups& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoSpawnGroups* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_.msgs_){from._impl_.msgs_}
    , /*decltype(_impl_._cached_size_)*/{}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:CDemoSpawnGroups)
}

inline void CDemoSpawnGroups::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_.msgs_){arena}
    , /*decltype(_impl_._cached_size_)*/{}
  };
}

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

inline void CDemoSpawnGroups::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.msgs_.~RepeatedPtrField();
}

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

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

  _impl_.msgs_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoSpawnGroups::_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 bytes msgs = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          ptr -= 1;
          do {
            ptr += 1;
            auto str = _internal_add_msgs();
            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(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* CDemoSpawnGroups::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CDemoSpawnGroups)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated bytes msgs = 3;
  for (int i = 0, n = this->_internal_msgs_size(); i < n; i++) {
    const auto& s = this->_internal_msgs(i);
    target = stream->WriteBytes(3, 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:CDemoSpawnGroups)
  return target;
}

size_t CDemoSpawnGroups::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoSpawnGroups)
  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 bytes msgs = 3;
  total_size += 1 *
      ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(_impl_.msgs_.size());
  for (int i = 0, n = _impl_.msgs_.size(); i < n; i++) {
    total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
      _impl_.msgs_.Get(i));
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoSpawnGroups::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoSpawnGroups*>(&to_msg);
  auto& from = static_cast<const CDemoSpawnGroups&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoSpawnGroups)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  _this->_impl_.msgs_.MergeFrom(from._impl_.msgs_);
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoSpawnGroups::InternalSwap(CDemoSpawnGroups* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  _impl_.msgs_.InternalSwap(&other->_impl_.msgs_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoSpawnGroups::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[24]);
}

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

class CDemoSpawnGroupsHLTVBroadcast::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoSpawnGroupsHLTVBroadcast>()._impl_._has_bits_);
  static void set_has_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

CDemoSpawnGroupsHLTVBroadcast::CDemoSpawnGroupsHLTVBroadcast(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoSpawnGroupsHLTVBroadcast)
}
CDemoSpawnGroupsHLTVBroadcast::CDemoSpawnGroupsHLTVBroadcast(const CDemoSpawnGroupsHLTVBroadcast& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoSpawnGroupsHLTVBroadcast* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_data()) {
    _this->_impl_.data_.Set(from._internal_data(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:CDemoSpawnGroupsHLTVBroadcast)
}

inline void CDemoSpawnGroupsHLTVBroadcast::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.data_){}
  };
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoSpawnGroupsHLTVBroadcast::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.data_.Destroy();
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    _impl_.data_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoSpawnGroupsHLTVBroadcast::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional bytes data = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional bytes data = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        1, this->_internal_data(), 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:CDemoSpawnGroupsHLTVBroadcast)
  return target;
}

size_t CDemoSpawnGroupsHLTVBroadcast::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoSpawnGroupsHLTVBroadcast)
  size_t total_size = 0;

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

  // optional bytes data = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
        this->_internal_data());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoSpawnGroupsHLTVBroadcast::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoSpawnGroupsHLTVBroadcast*>(&to_msg);
  auto& from = static_cast<const CDemoSpawnGroupsHLTVBroadcast&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoSpawnGroupsHLTVBroadcast)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_has_data()) {
    _this->_internal_set_data(from._internal_data());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoSpawnGroupsHLTVBroadcast::InternalSwap(CDemoSpawnGroupsHLTVBroadcast* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.data_, lhs_arena,
      &other->_impl_.data_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoSpawnGroupsHLTVBroadcast::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[25]);
}

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

class CDemoRecovery_DemoInitialSpawnGroupEntry::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoRecovery_DemoInitialSpawnGroupEntry>()._impl_._has_bits_);
  static void set_has_spawngrouphandle(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_was_created(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

CDemoRecovery_DemoInitialSpawnGroupEntry::CDemoRecovery_DemoInitialSpawnGroupEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoRecovery.DemoInitialSpawnGroupEntry)
}
CDemoRecovery_DemoInitialSpawnGroupEntry::CDemoRecovery_DemoInitialSpawnGroupEntry(const CDemoRecovery_DemoInitialSpawnGroupEntry& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoRecovery_DemoInitialSpawnGroupEntry* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.spawngrouphandle_){}
    , decltype(_impl_.was_created_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&_impl_.spawngrouphandle_, &from._impl_.spawngrouphandle_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.was_created_) -
    reinterpret_cast<char*>(&_impl_.spawngrouphandle_)) + sizeof(_impl_.was_created_));
  // @@protoc_insertion_point(copy_constructor:CDemoRecovery.DemoInitialSpawnGroupEntry)
}

inline void CDemoRecovery_DemoInitialSpawnGroupEntry::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.spawngrouphandle_){0u}
    , decltype(_impl_.was_created_){false}
  };
}

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

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

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    ::memset(&_impl_.spawngrouphandle_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.was_created_) -
        reinterpret_cast<char*>(&_impl_.spawngrouphandle_)) + sizeof(_impl_.was_created_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoRecovery_DemoInitialSpawnGroupEntry::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional uint32 spawngrouphandle = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_spawngrouphandle(&has_bits);
          _impl_.spawngrouphandle_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool was_created = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_was_created(&has_bits);
          _impl_.was_created_ = ::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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional uint32 spawngrouphandle = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(1, this->_internal_spawngrouphandle(), target);
  }

  // optional bool was_created = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(2, this->_internal_was_created(), 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:CDemoRecovery.DemoInitialSpawnGroupEntry)
  return target;
}

size_t CDemoRecovery_DemoInitialSpawnGroupEntry::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoRecovery.DemoInitialSpawnGroupEntry)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional uint32 spawngrouphandle = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_spawngrouphandle());
    }

    // optional bool was_created = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 1;
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoRecovery_DemoInitialSpawnGroupEntry::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoRecovery_DemoInitialSpawnGroupEntry*>(&to_msg);
  auto& from = static_cast<const CDemoRecovery_DemoInitialSpawnGroupEntry&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoRecovery.DemoInitialSpawnGroupEntry)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_impl_.spawngrouphandle_ = from._impl_.spawngrouphandle_;
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.was_created_ = from._impl_.was_created_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoRecovery_DemoInitialSpawnGroupEntry::InternalSwap(CDemoRecovery_DemoInitialSpawnGroupEntry* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CDemoRecovery_DemoInitialSpawnGroupEntry, _impl_.was_created_)
      + sizeof(CDemoRecovery_DemoInitialSpawnGroupEntry::_impl_.was_created_)
      - PROTOBUF_FIELD_OFFSET(CDemoRecovery_DemoInitialSpawnGroupEntry, _impl_.spawngrouphandle_)>(
          reinterpret_cast<char*>(&_impl_.spawngrouphandle_),
          reinterpret_cast<char*>(&other->_impl_.spawngrouphandle_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoRecovery_DemoInitialSpawnGroupEntry::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[26]);
}

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

class CDemoRecovery::_Internal {
 public:
  using HasBits = decltype(std::declval<CDemoRecovery>()._impl_._has_bits_);
  static const ::CDemoRecovery_DemoInitialSpawnGroupEntry& initial_spawn_group(const CDemoRecovery* msg);
  static void set_has_initial_spawn_group(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_spawn_group_message(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::CDemoRecovery_DemoInitialSpawnGroupEntry&
CDemoRecovery::_Internal::initial_spawn_group(const CDemoRecovery* msg) {
  return *msg->_impl_.initial_spawn_group_;
}
CDemoRecovery::CDemoRecovery(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                         bool is_message_owned)
  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
  SharedCtor(arena, is_message_owned);
  // @@protoc_insertion_point(arena_constructor:CDemoRecovery)
}
CDemoRecovery::CDemoRecovery(const CDemoRecovery& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CDemoRecovery* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.spawn_group_message_){}
    , decltype(_impl_.initial_spawn_group_){nullptr}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.spawn_group_message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.spawn_group_message_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_spawn_group_message()) {
    _this->_impl_.spawn_group_message_.Set(from._internal_spawn_group_message(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_initial_spawn_group()) {
    _this->_impl_.initial_spawn_group_ = new ::CDemoRecovery_DemoInitialSpawnGroupEntry(*from._impl_.initial_spawn_group_);
  }
  // @@protoc_insertion_point(copy_constructor:CDemoRecovery)
}

inline void CDemoRecovery::SharedCtor(
    ::_pb::Arena* arena, bool is_message_owned) {
  (void)arena;
  (void)is_message_owned;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.spawn_group_message_){}
    , decltype(_impl_.initial_spawn_group_){nullptr}
  };
  _impl_.spawn_group_message_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.spawn_group_message_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CDemoRecovery::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.spawn_group_message_.Destroy();
  if (this != internal_default_instance()) delete _impl_.initial_spawn_group_;
}

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

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.spawn_group_message_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(_impl_.initial_spawn_group_ != nullptr);
      _impl_.initial_spawn_group_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CDemoRecovery::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    uint32_t tag;
    ptr = ::_pbi::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // optional .CDemoRecovery.DemoInitialSpawnGroupEntry initial_spawn_group = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_initial_spawn_group(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bytes spawn_group_message = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_spawn_group_message();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          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:
  _impl_._has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional .CDemoRecovery.DemoInitialSpawnGroupEntry initial_spawn_group = 1;
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::initial_spawn_group(this),
        _Internal::initial_spawn_group(this).GetCachedSize(), target, stream);
  }

  // optional bytes spawn_group_message = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_spawn_group_message(), 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:CDemoRecovery)
  return target;
}

size_t CDemoRecovery::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CDemoRecovery)
  size_t total_size = 0;

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

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    // optional bytes spawn_group_message = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_spawn_group_message());
    }

    // optional .CDemoRecovery.DemoInitialSpawnGroupEntry initial_spawn_group = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.initial_spawn_group_);
    }

  }
  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}

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


void CDemoRecovery::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CDemoRecovery*>(&to_msg);
  auto& from = static_cast<const CDemoRecovery&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CDemoRecovery)
  GOOGLE_DCHECK_NE(&from, _this);
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_spawn_group_message(from._internal_spawn_group_message());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_initial_spawn_group()->::CDemoRecovery_DemoInitialSpawnGroupEntry::MergeFrom(
          from._internal_initial_spawn_group());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CDemoRecovery::InternalSwap(CDemoRecovery* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.spawn_group_message_, lhs_arena,
      &other->_impl_.spawn_group_message_, rhs_arena
  );
  swap(_impl_.initial_spawn_group_, other->_impl_.initial_spawn_group_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CDemoRecovery::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_demo_2eproto_getter, &descriptor_table_demo_2eproto_once,
      file_level_metadata_demo_2eproto[27]);
}

// @@protoc_insertion_point(namespace_scope)
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::CDemoFileHeader*
Arena::CreateMaybeMessage< ::CDemoFileHeader >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoFileHeader >(arena);
}
template<> PROTOBUF_NOINLINE ::CGameInfo_CDotaGameInfo_CPlayerInfo*
Arena::CreateMaybeMessage< ::CGameInfo_CDotaGameInfo_CPlayerInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CGameInfo_CDotaGameInfo_CPlayerInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::CGameInfo_CDotaGameInfo_CHeroSelectEvent*
Arena::CreateMaybeMessage< ::CGameInfo_CDotaGameInfo_CHeroSelectEvent >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CGameInfo_CDotaGameInfo_CHeroSelectEvent >(arena);
}
template<> PROTOBUF_NOINLINE ::CGameInfo_CDotaGameInfo*
Arena::CreateMaybeMessage< ::CGameInfo_CDotaGameInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CGameInfo_CDotaGameInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::CGameInfo_CCSGameInfo*
Arena::CreateMaybeMessage< ::CGameInfo_CCSGameInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CGameInfo_CCSGameInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::CGameInfo*
Arena::CreateMaybeMessage< ::CGameInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CGameInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoFileInfo*
Arena::CreateMaybeMessage< ::CDemoFileInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoFileInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoPacket*
Arena::CreateMaybeMessage< ::CDemoPacket >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoPacket >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoFullPacket*
Arena::CreateMaybeMessage< ::CDemoFullPacket >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoFullPacket >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoSaveGame*
Arena::CreateMaybeMessage< ::CDemoSaveGame >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoSaveGame >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoSyncTick*
Arena::CreateMaybeMessage< ::CDemoSyncTick >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoSyncTick >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoConsoleCmd*
Arena::CreateMaybeMessage< ::CDemoConsoleCmd >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoConsoleCmd >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoSendTables*
Arena::CreateMaybeMessage< ::CDemoSendTables >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoSendTables >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoClassInfo_class_t*
Arena::CreateMaybeMessage< ::CDemoClassInfo_class_t >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoClassInfo_class_t >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoClassInfo*
Arena::CreateMaybeMessage< ::CDemoClassInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoClassInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoCustomData*
Arena::CreateMaybeMessage< ::CDemoCustomData >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoCustomData >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoCustomDataCallbacks*
Arena::CreateMaybeMessage< ::CDemoCustomDataCallbacks >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoCustomDataCallbacks >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoAnimationHeader*
Arena::CreateMaybeMessage< ::CDemoAnimationHeader >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoAnimationHeader >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoAnimationData*
Arena::CreateMaybeMessage< ::CDemoAnimationData >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoAnimationData >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoStringTables_items_t*
Arena::CreateMaybeMessage< ::CDemoStringTables_items_t >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoStringTables_items_t >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoStringTables_table_t*
Arena::CreateMaybeMessage< ::CDemoStringTables_table_t >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoStringTables_table_t >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoStringTables*
Arena::CreateMaybeMessage< ::CDemoStringTables >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoStringTables >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoStop*
Arena::CreateMaybeMessage< ::CDemoStop >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoStop >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoUserCmd*
Arena::CreateMaybeMessage< ::CDemoUserCmd >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoUserCmd >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoSpawnGroups*
Arena::CreateMaybeMessage< ::CDemoSpawnGroups >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoSpawnGroups >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoSpawnGroupsHLTVBroadcast*
Arena::CreateMaybeMessage< ::CDemoSpawnGroupsHLTVBroadcast >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoSpawnGroupsHLTVBroadcast >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoRecovery_DemoInitialSpawnGroupEntry*
Arena::CreateMaybeMessage< ::CDemoRecovery_DemoInitialSpawnGroupEntry >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoRecovery_DemoInitialSpawnGroupEntry >(arena);
}
template<> PROTOBUF_NOINLINE ::CDemoRecovery*
Arena::CreateMaybeMessage< ::CDemoRecovery >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CDemoRecovery >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

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