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

#include "steamnetworkingsockets_messages.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 CMsgSteamDatagramSessionCryptInfo::CMsgSteamDatagramSessionCryptInfo(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.ciphers_)*/{}
  , /*decltype(_impl_.key_data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.key_type_)*/0
  , /*decltype(_impl_.protocol_version_)*/0u
  , /*decltype(_impl_.nonce_)*/uint64_t{0u}} {}
struct CMsgSteamDatagramSessionCryptInfoDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamDatagramSessionCryptInfoDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamDatagramSessionCryptInfoDefaultTypeInternal() {}
  union {
    CMsgSteamDatagramSessionCryptInfo _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamDatagramSessionCryptInfoDefaultTypeInternal _CMsgSteamDatagramSessionCryptInfo_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamDatagramSessionCryptInfoSigned::CMsgSteamDatagramSessionCryptInfoSigned(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.info_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.signature_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct CMsgSteamDatagramSessionCryptInfoSignedDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamDatagramSessionCryptInfoSignedDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamDatagramSessionCryptInfoSignedDefaultTypeInternal() {}
  union {
    CMsgSteamDatagramSessionCryptInfoSigned _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamDatagramSessionCryptInfoSignedDefaultTypeInternal _CMsgSteamDatagramSessionCryptInfoSigned_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamDatagramDiagnostic::CMsgSteamDatagramDiagnostic(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.text_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.severity_)*/0u} {}
struct CMsgSteamDatagramDiagnosticDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamDatagramDiagnosticDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamDatagramDiagnosticDefaultTypeInternal() {}
  union {
    CMsgSteamDatagramDiagnostic _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamDatagramDiagnosticDefaultTypeInternal _CMsgSteamDatagramDiagnostic_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamDatagramLinkInstantaneousStats::CMsgSteamDatagramLinkInstantaneousStats(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.out_packets_per_sec_x10_)*/0u
  , /*decltype(_impl_.out_bytes_per_sec_)*/0u
  , /*decltype(_impl_.in_packets_per_sec_x10_)*/0u
  , /*decltype(_impl_.in_bytes_per_sec_)*/0u
  , /*decltype(_impl_.ping_ms_)*/0u
  , /*decltype(_impl_.packets_dropped_pct_)*/0u
  , /*decltype(_impl_.packets_weird_sequence_pct_)*/0u
  , /*decltype(_impl_.peak_jitter_usec_)*/0u} {}
struct CMsgSteamDatagramLinkInstantaneousStatsDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamDatagramLinkInstantaneousStatsDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamDatagramLinkInstantaneousStatsDefaultTypeInternal() {}
  union {
    CMsgSteamDatagramLinkInstantaneousStats _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamDatagramLinkInstantaneousStatsDefaultTypeInternal _CMsgSteamDatagramLinkInstantaneousStats_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamDatagramLinkLifetimeStats::CMsgSteamDatagramLinkLifetimeStats(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.multipath_packets_recv_sequenced_)*/{}
  , /*decltype(_impl_.multipath_packets_recv_later_)*/{}
  , /*decltype(_impl_.packets_sent_)*/uint64_t{0u}
  , /*decltype(_impl_.kb_sent_)*/uint64_t{0u}
  , /*decltype(_impl_.packets_recv_)*/uint64_t{0u}
  , /*decltype(_impl_.kb_recv_)*/uint64_t{0u}
  , /*decltype(_impl_.packets_recv_sequenced_)*/uint64_t{0u}
  , /*decltype(_impl_.packets_recv_dropped_)*/uint64_t{0u}
  , /*decltype(_impl_.connected_seconds_)*/0u
  , /*decltype(_impl_.multipath_send_enabled_)*/0u
  , /*decltype(_impl_.packets_recv_out_of_order_)*/uint64_t{0u}
  , /*decltype(_impl_.packets_recv_duplicate_)*/uint64_t{0u}
  , /*decltype(_impl_.packets_recv_lurch_)*/uint64_t{0u}
  , /*decltype(_impl_.packets_recv_out_of_order_corrected_)*/uint64_t{0u}
  , /*decltype(_impl_.quality_histogram_100_)*/0u
  , /*decltype(_impl_.quality_histogram_99_)*/0u
  , /*decltype(_impl_.quality_histogram_97_)*/0u
  , /*decltype(_impl_.quality_histogram_95_)*/0u
  , /*decltype(_impl_.quality_histogram_90_)*/0u
  , /*decltype(_impl_.quality_histogram_75_)*/0u
  , /*decltype(_impl_.quality_histogram_50_)*/0u
  , /*decltype(_impl_.quality_histogram_1_)*/0u
  , /*decltype(_impl_.quality_histogram_dead_)*/0u
  , /*decltype(_impl_.quality_ntile_2nd_)*/0u
  , /*decltype(_impl_.quality_ntile_5th_)*/0u
  , /*decltype(_impl_.quality_ntile_25th_)*/0u
  , /*decltype(_impl_.quality_ntile_50th_)*/0u
  , /*decltype(_impl_.ping_histogram_25_)*/0u
  , /*decltype(_impl_.ping_histogram_50_)*/0u
  , /*decltype(_impl_.ping_histogram_75_)*/0u
  , /*decltype(_impl_.ping_histogram_100_)*/0u
  , /*decltype(_impl_.ping_histogram_125_)*/0u
  , /*decltype(_impl_.ping_histogram_150_)*/0u
  , /*decltype(_impl_.ping_histogram_200_)*/0u
  , /*decltype(_impl_.ping_histogram_300_)*/0u
  , /*decltype(_impl_.ping_histogram_max_)*/0u
  , /*decltype(_impl_.ping_ntile_5th_)*/0u
  , /*decltype(_impl_.ping_ntile_50th_)*/0u
  , /*decltype(_impl_.ping_ntile_75th_)*/0u
  , /*decltype(_impl_.ping_ntile_95th_)*/0u
  , /*decltype(_impl_.ping_ntile_98th_)*/0u
  , /*decltype(_impl_.jitter_histogram_negligible_)*/0u
  , /*decltype(_impl_.jitter_histogram_1_)*/0u
  , /*decltype(_impl_.jitter_histogram_2_)*/0u
  , /*decltype(_impl_.jitter_histogram_5_)*/0u
  , /*decltype(_impl_.jitter_histogram_10_)*/0u
  , /*decltype(_impl_.jitter_histogram_20_)*/0u} {}
struct CMsgSteamDatagramLinkLifetimeStatsDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamDatagramLinkLifetimeStatsDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamDatagramLinkLifetimeStatsDefaultTypeInternal() {}
  union {
    CMsgSteamDatagramLinkLifetimeStats _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamDatagramLinkLifetimeStatsDefaultTypeInternal _CMsgSteamDatagramLinkLifetimeStats_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamDatagramConnectionQuality::CMsgSteamDatagramConnectionQuality(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.instantaneous_)*/nullptr
  , /*decltype(_impl_.lifetime_)*/nullptr} {}
struct CMsgSteamDatagramConnectionQualityDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamDatagramConnectionQualityDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamDatagramConnectionQualityDefaultTypeInternal() {}
  union {
    CMsgSteamDatagramConnectionQuality _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamDatagramConnectionQualityDefaultTypeInternal _CMsgSteamDatagramConnectionQuality_default_instance_;
PROTOBUF_CONSTEXPR CMsgICECandidate::CMsgICECandidate(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.candidate_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct CMsgICECandidateDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgICECandidateDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgICECandidateDefaultTypeInternal() {}
  union {
    CMsgICECandidate _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgICECandidateDefaultTypeInternal _CMsgICECandidate_default_instance_;
PROTOBUF_CONSTEXPR CMsgICERendezvous_Auth::CMsgICERendezvous_Auth(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.pwd_frag_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}} {}
struct CMsgICERendezvous_AuthDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgICERendezvous_AuthDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgICERendezvous_AuthDefaultTypeInternal() {}
  union {
    CMsgICERendezvous_Auth _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgICERendezvous_AuthDefaultTypeInternal _CMsgICERendezvous_Auth_default_instance_;
PROTOBUF_CONSTEXPR CMsgICERendezvous::CMsgICERendezvous(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.add_candidate_)*/nullptr
  , /*decltype(_impl_.auth_)*/nullptr} {}
struct CMsgICERendezvousDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgICERendezvousDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgICERendezvousDefaultTypeInternal() {}
  union {
    CMsgICERendezvous _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgICERendezvousDefaultTypeInternal _CMsgICERendezvous_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ConnectRequest::CMsgSteamNetworkingP2PRendezvous_ConnectRequest(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.from_fakeip_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.crypt_)*/nullptr
  , /*decltype(_impl_.cert_)*/nullptr
  , /*decltype(_impl_.to_virtual_port_)*/0u
  , /*decltype(_impl_.from_virtual_port_)*/0u} {}
struct CMsgSteamNetworkingP2PRendezvous_ConnectRequestDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ConnectRequestDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamNetworkingP2PRendezvous_ConnectRequestDefaultTypeInternal() {}
  union {
    CMsgSteamNetworkingP2PRendezvous_ConnectRequest _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamNetworkingP2PRendezvous_ConnectRequestDefaultTypeInternal _CMsgSteamNetworkingP2PRendezvous_ConnectRequest_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ConnectOK::CMsgSteamNetworkingP2PRendezvous_ConnectOK(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.crypt_)*/nullptr
  , /*decltype(_impl_.cert_)*/nullptr} {}
struct CMsgSteamNetworkingP2PRendezvous_ConnectOKDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ConnectOKDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamNetworkingP2PRendezvous_ConnectOKDefaultTypeInternal() {}
  union {
    CMsgSteamNetworkingP2PRendezvous_ConnectOK _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamNetworkingP2PRendezvous_ConnectOKDefaultTypeInternal _CMsgSteamNetworkingP2PRendezvous_ConnectOK_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.debug_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.reason_code_)*/0u} {}
struct CMsgSteamNetworkingP2PRendezvous_ConnectionClosedDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ConnectionClosedDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamNetworkingP2PRendezvous_ConnectionClosedDefaultTypeInternal() {}
  union {
    CMsgSteamNetworkingP2PRendezvous_ConnectionClosed _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamNetworkingP2PRendezvous_ConnectionClosedDefaultTypeInternal _CMsgSteamNetworkingP2PRendezvous_ConnectionClosed_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ReliableMessage::CMsgSteamNetworkingP2PRendezvous_ReliableMessage(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.ice_)*/nullptr} {}
struct CMsgSteamNetworkingP2PRendezvous_ReliableMessageDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ReliableMessageDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamNetworkingP2PRendezvous_ReliableMessageDefaultTypeInternal() {}
  union {
    CMsgSteamNetworkingP2PRendezvous_ReliableMessage _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamNetworkingP2PRendezvous_ReliableMessageDefaultTypeInternal _CMsgSteamNetworkingP2PRendezvous_ReliableMessage_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.data_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.msg_num_)*/uint64_t{0u}
  , /*decltype(_impl_.flags_)*/0u
  , /*decltype(_impl_.lane_idx_)*/0u} {}
struct CMsgSteamNetworkingP2PRendezvous_ApplicationMessageDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous_ApplicationMessageDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamNetworkingP2PRendezvous_ApplicationMessageDefaultTypeInternal() {}
  union {
    CMsgSteamNetworkingP2PRendezvous_ApplicationMessage _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamNetworkingP2PRendezvous_ApplicationMessageDefaultTypeInternal _CMsgSteamNetworkingP2PRendezvous_ApplicationMessage_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvous::CMsgSteamNetworkingP2PRendezvous(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.reliable_messages_)*/{}
  , /*decltype(_impl_.application_messages_)*/{}
  , /*decltype(_impl_.sdr_routes_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.from_identity_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.to_identity_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.hosted_server_ticket_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
  , /*decltype(_impl_.connect_request_)*/nullptr
  , /*decltype(_impl_.connect_ok_)*/nullptr
  , /*decltype(_impl_.connection_closed_)*/nullptr
  , /*decltype(_impl_.to_connection_id_)*/0u
  , /*decltype(_impl_.ack_peer_routes_revision_)*/0u
  , /*decltype(_impl_.ice_enabled_)*/false
  , /*decltype(_impl_.from_connection_id_)*/0u
  , /*decltype(_impl_.ack_reliable_msg_)*/0u
  , /*decltype(_impl_.first_reliable_msg_)*/0u} {}
struct CMsgSteamNetworkingP2PRendezvousDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamNetworkingP2PRendezvousDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamNetworkingP2PRendezvousDefaultTypeInternal() {}
  union {
    CMsgSteamNetworkingP2PRendezvous _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamNetworkingP2PRendezvousDefaultTypeInternal _CMsgSteamNetworkingP2PRendezvous_default_instance_;
PROTOBUF_CONSTEXPR CMsgSteamNetworkingICESessionSummary::CMsgSteamNetworkingICESessionSummary(
    ::_pbi::ConstantInitialized): _impl_{
    /*decltype(_impl_._has_bits_)*/{}
  , /*decltype(_impl_._cached_size_)*/{}
  , /*decltype(_impl_.local_candidate_types_)*/0u
  , /*decltype(_impl_.remote_candidate_types_)*/0u
  , /*decltype(_impl_.initial_route_kind_)*/0u
  , /*decltype(_impl_.initial_ping_)*/0u
  , /*decltype(_impl_.negotiation_ms_)*/0u
  , /*decltype(_impl_.initial_score_)*/0u
  , /*decltype(_impl_.failure_reason_code_)*/0u
  , /*decltype(_impl_.selected_seconds_)*/0u
  , /*decltype(_impl_.user_settings_)*/0u
  , /*decltype(_impl_.ice_enable_var_)*/0u
  , /*decltype(_impl_.local_candidate_types_allowed_)*/0u
  , /*decltype(_impl_.best_route_kind_)*/0u
  , /*decltype(_impl_.best_ping_)*/0u
  , /*decltype(_impl_.best_score_)*/0u
  , /*decltype(_impl_.best_time_)*/0u} {}
struct CMsgSteamNetworkingICESessionSummaryDefaultTypeInternal {
  PROTOBUF_CONSTEXPR CMsgSteamNetworkingICESessionSummaryDefaultTypeInternal()
      : _instance(::_pbi::ConstantInitialized{}) {}
  ~CMsgSteamNetworkingICESessionSummaryDefaultTypeInternal() {}
  union {
    CMsgSteamNetworkingICESessionSummary _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 CMsgSteamNetworkingICESessionSummaryDefaultTypeInternal _CMsgSteamNetworkingICESessionSummary_default_instance_;
static ::_pb::Metadata file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[16];
static const ::_pb::EnumDescriptor* file_level_enum_descriptors_steamnetworkingsockets_5fmessages_2eproto[2];
static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_steamnetworkingsockets_5fmessages_2eproto = nullptr;

const uint32_t TableStruct_steamnetworkingsockets_5fmessages_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfo, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfo, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfo, _impl_.key_type_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfo, _impl_.key_data_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfo, _impl_.nonce_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfo, _impl_.protocol_version_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfo, _impl_.ciphers_),
  1,
  0,
  3,
  2,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfoSigned, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfoSigned, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfoSigned, _impl_.info_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramSessionCryptInfoSigned, _impl_.signature_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramDiagnostic, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramDiagnostic, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramDiagnostic, _impl_.severity_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramDiagnostic, _impl_.text_),
  1,
  0,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _impl_.out_packets_per_sec_x10_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _impl_.out_bytes_per_sec_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _impl_.in_packets_per_sec_x10_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _impl_.in_bytes_per_sec_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _impl_.ping_ms_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _impl_.packets_dropped_pct_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _impl_.packets_weird_sequence_pct_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkInstantaneousStats, _impl_.peak_jitter_usec_),
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.connected_seconds_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.packets_sent_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.kb_sent_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.packets_recv_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.kb_recv_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.packets_recv_sequenced_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.packets_recv_dropped_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.packets_recv_out_of_order_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.packets_recv_out_of_order_corrected_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.packets_recv_duplicate_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.packets_recv_lurch_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.multipath_packets_recv_sequenced_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.multipath_packets_recv_later_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.multipath_send_enabled_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_histogram_100_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_histogram_99_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_histogram_97_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_histogram_95_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_histogram_90_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_histogram_75_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_histogram_50_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_histogram_1_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_histogram_dead_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_ntile_2nd_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_ntile_5th_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_ntile_25th_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.quality_ntile_50th_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_histogram_25_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_histogram_50_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_histogram_75_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_histogram_100_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_histogram_125_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_histogram_150_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_histogram_200_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_histogram_300_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_histogram_max_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_ntile_5th_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_ntile_50th_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_ntile_75th_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_ntile_95th_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.ping_ntile_98th_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.jitter_histogram_negligible_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.jitter_histogram_1_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.jitter_histogram_2_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.jitter_histogram_5_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.jitter_histogram_10_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramLinkLifetimeStats, _impl_.jitter_histogram_20_),
  6,
  0,
  1,
  2,
  3,
  4,
  5,
  8,
  11,
  9,
  10,
  ~0u,
  ~0u,
  7,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  32,
  33,
  34,
  35,
  36,
  37,
  38,
  39,
  40,
  41,
  42,
  43,
  44,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramConnectionQuality, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramConnectionQuality, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramConnectionQuality, _impl_.instantaneous_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamDatagramConnectionQuality, _impl_.lifetime_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::CMsgICECandidate, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgICECandidate, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgICECandidate, _impl_.candidate_),
  0,
  PROTOBUF_FIELD_OFFSET(::CMsgICERendezvous_Auth, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgICERendezvous_Auth, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgICERendezvous_Auth, _impl_.pwd_frag_),
  0,
  PROTOBUF_FIELD_OFFSET(::CMsgICERendezvous, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgICERendezvous, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgICERendezvous, _impl_.auth_),
  PROTOBUF_FIELD_OFFSET(::CMsgICERendezvous, _impl_.add_candidate_),
  1,
  0,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectRequest, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectRequest, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectRequest, _impl_.crypt_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectRequest, _impl_.cert_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectRequest, _impl_.to_virtual_port_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectRequest, _impl_.from_virtual_port_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectRequest, _impl_.from_fakeip_),
  1,
  2,
  3,
  4,
  0,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectOK, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectOK, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectOK, _impl_.crypt_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectOK, _impl_.cert_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed, _impl_.debug_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed, _impl_.reason_code_),
  0,
  1,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ReliableMessage, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ReliableMessage, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ReliableMessage, _impl_.ice_),
  0,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage, _impl_.data_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage, _impl_.msg_num_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage, _impl_.flags_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage, _impl_.lane_idx_),
  0,
  1,
  2,
  3,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.from_identity_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.from_connection_id_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.to_identity_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.to_connection_id_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.sdr_routes_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.ack_peer_routes_revision_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.ice_enabled_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.hosted_server_ticket_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.connect_request_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.connect_ok_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.connection_closed_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.ack_reliable_msg_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.first_reliable_msg_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.reliable_messages_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingP2PRendezvous, _impl_.application_messages_),
  1,
  10,
  2,
  7,
  0,
  8,
  9,
  3,
  4,
  5,
  6,
  11,
  12,
  ~0u,
  ~0u,
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_._has_bits_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.failure_reason_code_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.local_candidate_types_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.remote_candidate_types_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.initial_route_kind_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.initial_ping_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.initial_score_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.negotiation_ms_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.best_route_kind_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.best_ping_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.best_score_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.best_time_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.selected_seconds_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.user_settings_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.ice_enable_var_),
  PROTOBUF_FIELD_OFFSET(::CMsgSteamNetworkingICESessionSummary, _impl_.local_candidate_types_allowed_),
  6,
  0,
  1,
  2,
  3,
  5,
  4,
  11,
  12,
  13,
  14,
  7,
  8,
  9,
  10,
};
static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 11, -1, sizeof(::CMsgSteamDatagramSessionCryptInfo)},
  { 16, 24, -1, sizeof(::CMsgSteamDatagramSessionCryptInfoSigned)},
  { 26, 34, -1, sizeof(::CMsgSteamDatagramDiagnostic)},
  { 36, 50, -1, sizeof(::CMsgSteamDatagramLinkInstantaneousStats)},
  { 58, 111, -1, sizeof(::CMsgSteamDatagramLinkLifetimeStats)},
  { 158, 166, -1, sizeof(::CMsgSteamDatagramConnectionQuality)},
  { 168, 175, -1, sizeof(::CMsgICECandidate)},
  { 176, 183, -1, sizeof(::CMsgICERendezvous_Auth)},
  { 184, 192, -1, sizeof(::CMsgICERendezvous)},
  { 194, 205, -1, sizeof(::CMsgSteamNetworkingP2PRendezvous_ConnectRequest)},
  { 210, 218, -1, sizeof(::CMsgSteamNetworkingP2PRendezvous_ConnectOK)},
  { 220, 228, -1, sizeof(::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed)},
  { 230, 237, -1, sizeof(::CMsgSteamNetworkingP2PRendezvous_ReliableMessage)},
  { 238, 248, -1, sizeof(::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage)},
  { 252, 273, -1, sizeof(::CMsgSteamNetworkingP2PRendezvous)},
  { 288, 309, -1, sizeof(::CMsgSteamNetworkingICESessionSummary)},
};

static const ::_pb::Message* const file_default_instances[] = {
  &::_CMsgSteamDatagramSessionCryptInfo_default_instance_._instance,
  &::_CMsgSteamDatagramSessionCryptInfoSigned_default_instance_._instance,
  &::_CMsgSteamDatagramDiagnostic_default_instance_._instance,
  &::_CMsgSteamDatagramLinkInstantaneousStats_default_instance_._instance,
  &::_CMsgSteamDatagramLinkLifetimeStats_default_instance_._instance,
  &::_CMsgSteamDatagramConnectionQuality_default_instance_._instance,
  &::_CMsgICECandidate_default_instance_._instance,
  &::_CMsgICERendezvous_Auth_default_instance_._instance,
  &::_CMsgICERendezvous_default_instance_._instance,
  &::_CMsgSteamNetworkingP2PRendezvous_ConnectRequest_default_instance_._instance,
  &::_CMsgSteamNetworkingP2PRendezvous_ConnectOK_default_instance_._instance,
  &::_CMsgSteamNetworkingP2PRendezvous_ConnectionClosed_default_instance_._instance,
  &::_CMsgSteamNetworkingP2PRendezvous_ReliableMessage_default_instance_._instance,
  &::_CMsgSteamNetworkingP2PRendezvous_ApplicationMessage_default_instance_._instance,
  &::_CMsgSteamNetworkingP2PRendezvous_default_instance_._instance,
  &::_CMsgSteamNetworkingICESessionSummary_default_instance_._instance,
};

const char descriptor_table_protodef_steamnetworkingsockets_5fmessages_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n%steamnetworkingsockets_messages.proto\032"
  "+steamnetworkingsockets_messages_certs.p"
  "roto\"\200\002\n!CMsgSteamDatagramSessionCryptIn"
  "fo\022F\n\010key_type\030\001 \001(\0162+.CMsgSteamDatagram"
  "SessionCryptInfo.EKeyType:\007INVALID\022\020\n\010ke"
  "y_data\030\002 \001(\014\022\r\n\005nonce\030\003 \001(\006\022\030\n\020protocol_"
  "version\030\004 \001(\r\022/\n\007ciphers\030\005 \003(\0162\036.ESteamN"
  "etworkingSocketsCipher\"\'\n\010EKeyType\022\013\n\007IN"
  "VALID\020\000\022\016\n\nCURVE25519\020\001\"J\n\'CMsgSteamData"
  "gramSessionCryptInfoSigned\022\014\n\004info\030\001 \001(\014"
  "\022\021\n\tsignature\030\002 \001(\014\"=\n\033CMsgSteamDatagram"
  "Diagnostic\022\020\n\010severity\030\001 \001(\r\022\014\n\004text\030\002 \001"
  "(\t\"\213\002\n\'CMsgSteamDatagramLinkInstantaneou"
  "sStats\022\037\n\027out_packets_per_sec_x10\030\001 \001(\r\022"
  "\031\n\021out_bytes_per_sec\030\002 \001(\r\022\036\n\026in_packets"
  "_per_sec_x10\030\003 \001(\r\022\030\n\020in_bytes_per_sec\030\004"
  " \001(\r\022\017\n\007ping_ms\030\005 \001(\r\022\033\n\023packets_dropped"
  "_pct\030\006 \001(\r\022\"\n\032packets_weird_sequence_pct"
  "\030\007 \001(\r\022\030\n\020peak_jitter_usec\030\010 \001(\r\"\355\n\n\"CMs"
  "gSteamDatagramLinkLifetimeStats\022\031\n\021conne"
  "cted_seconds\030\002 \001(\r\022\024\n\014packets_sent\030\003 \001(\004"
  "\022\017\n\007kb_sent\030\004 \001(\004\022\024\n\014packets_recv\030\005 \001(\004\022"
  "\017\n\007kb_recv\030\006 \001(\004\022\036\n\026packets_recv_sequenc"
  "ed\030\007 \001(\004\022\034\n\024packets_recv_dropped\030\010 \001(\004\022!"
  "\n\031packets_recv_out_of_order\030\t \001(\004\022+\n#pac"
  "kets_recv_out_of_order_corrected\030\017 \001(\004\022\036"
  "\n\026packets_recv_duplicate\030\n \001(\004\022\032\n\022packet"
  "s_recv_lurch\030\013 \001(\004\022(\n multipath_packets_"
  "recv_sequenced\030\014 \003(\004\022$\n\034multipath_packet"
  "s_recv_later\030\r \003(\004\022\036\n\026multipath_send_ena"
  "bled\030\016 \001(\r\022\035\n\025quality_histogram_100\030\025 \001("
  "\r\022\034\n\024quality_histogram_99\030\026 \001(\r\022\034\n\024quali"
  "ty_histogram_97\030\027 \001(\r\022\034\n\024quality_histogr"
  "am_95\030\030 \001(\r\022\034\n\024quality_histogram_90\030\031 \001("
  "\r\022\034\n\024quality_histogram_75\030\032 \001(\r\022\034\n\024quali"
  "ty_histogram_50\030\033 \001(\r\022\033\n\023quality_histogr"
  "am_1\030\034 \001(\r\022\036\n\026quality_histogram_dead\030\035 \001"
  "(\r\022\031\n\021quality_ntile_2nd\030\036 \001(\r\022\031\n\021quality"
  "_ntile_5th\030\037 \001(\r\022\032\n\022quality_ntile_25th\030 "
  " \001(\r\022\032\n\022quality_ntile_50th\030! \001(\r\022\031\n\021ping"
  "_histogram_25\030) \001(\r\022\031\n\021ping_histogram_50"
  "\030* \001(\r\022\031\n\021ping_histogram_75\030+ \001(\r\022\032\n\022pin"
  "g_histogram_100\030, \001(\r\022\032\n\022ping_histogram_"
  "125\030- \001(\r\022\032\n\022ping_histogram_150\030. \001(\r\022\032\n"
  "\022ping_histogram_200\030/ \001(\r\022\032\n\022ping_histog"
  "ram_300\0300 \001(\r\022\032\n\022ping_histogram_max\0301 \001("
  "\r\022\026\n\016ping_ntile_5th\0302 \001(\r\022\027\n\017ping_ntile_"
  "50th\0303 \001(\r\022\027\n\017ping_ntile_75th\0304 \001(\r\022\027\n\017p"
  "ing_ntile_95th\0305 \001(\r\022\027\n\017ping_ntile_98th\030"
  "6 \001(\r\022#\n\033jitter_histogram_negligible\030= \001"
  "(\r\022\032\n\022jitter_histogram_1\030> \001(\r\022\032\n\022jitter"
  "_histogram_2\030\? \001(\r\022\032\n\022jitter_histogram_5"
  "\030@ \001(\r\022\033\n\023jitter_histogram_10\030A \001(\r\022\033\n\023j"
  "itter_histogram_20\030B \001(\r\"\234\001\n\"CMsgSteamDa"
  "tagramConnectionQuality\022\?\n\rinstantaneous"
  "\030\001 \001(\0132(.CMsgSteamDatagramLinkInstantane"
  "ousStats\0225\n\010lifetime\030\002 \001(\0132#.CMsgSteamDa"
  "tagramLinkLifetimeStats\"%\n\020CMsgICECandid"
  "ate\022\021\n\tcandidate\030\003 \001(\t\"~\n\021CMsgICERendezv"
  "ous\022%\n\004auth\030\002 \001(\0132\027.CMsgICERendezvous.Au"
  "th\022(\n\radd_candidate\030\001 \001(\0132\021.CMsgICECandi"
  "date\032\030\n\004Auth\022\020\n\010pwd_frag\030\001 \001(\t\"\243\t\n CMsgS"
  "teamNetworkingP2PRendezvous\022\025\n\rfrom_iden"
  "tity\030\010 \001(\t\022\032\n\022from_connection_id\030\t \001(\007\022\023"
  "\n\013to_identity\030\n \001(\t\022\030\n\020to_connection_id\030"
  "\001 \001(\007\022\022\n\nsdr_routes\030\002 \001(\014\022 \n\030ack_peer_ro"
  "utes_revision\030\003 \001(\r\022\023\n\013ice_enabled\030\007 \001(\010"
  "\022\034\n\024hosted_server_ticket\030\016 \001(\014\022I\n\017connec"
  "t_request\030\004 \001(\01320.CMsgSteamNetworkingP2P"
  "Rendezvous.ConnectRequest\022\?\n\nconnect_ok\030"
  "\005 \001(\0132+.CMsgSteamNetworkingP2PRendezvous"
  ".ConnectOK\022M\n\021connection_closed\030\006 \001(\01322."
  "CMsgSteamNetworkingP2PRendezvous.Connect"
  "ionClosed\022\030\n\020ack_reliable_msg\030\013 \001(\r\022\032\n\022f"
  "irst_reliable_msg\030\014 \001(\r\022L\n\021reliable_mess"
  "ages\030\r \003(\01321.CMsgSteamNetworkingP2PRende"
  "zvous.ReliableMessage\022R\n\024application_mes"
  "sages\030\017 \003(\01324.CMsgSteamNetworkingP2PRend"
  "ezvous.ApplicationMessage\032\305\001\n\016ConnectReq"
  "uest\0227\n\005crypt\030\006 \001(\0132(.CMsgSteamDatagramS"
  "essionCryptInfoSigned\0221\n\004cert\030\007 \001(\0132#.CM"
  "sgSteamDatagramCertificateSigned\022\027\n\017to_v"
  "irtual_port\030\t \001(\r\022\031\n\021from_virtual_port\030\n"
  " \001(\r\022\023\n\013from_fakeip\030\013 \001(\t\032w\n\tConnectOK\0227"
  "\n\005crypt\030\005 \001(\0132(.CMsgSteamDatagramSession"
  "CryptInfoSigned\0221\n\004cert\030\006 \001(\0132#.CMsgStea"
  "mDatagramCertificateSigned\0326\n\020Connection"
  "Closed\022\r\n\005debug\030\005 \001(\t\022\023\n\013reason_code\030\006 \001"
  "(\r\0322\n\017ReliableMessage\022\037\n\003ice\030\001 \001(\0132\022.CMs"
  "gICERendezvous\032T\n\022ApplicationMessage\022\014\n\004"
  "data\030\001 \001(\014\022\017\n\007msg_num\030\002 \001(\004\022\r\n\005flags\030\003 \001"
  "(\r\022\020\n\010lane_idx\030\004 \001(\r\"\246\003\n$CMsgSteamNetwor"
  "kingICESessionSummary\022\033\n\023failure_reason_"
  "code\030\007 \001(\r\022\035\n\025local_candidate_types\030\001 \001("
  "\r\022\036\n\026remote_candidate_types\030\002 \001(\r\022\032\n\022ini"
  "tial_route_kind\030\003 \001(\r\022\024\n\014initial_ping\030\004 "
  "\001(\r\022\025\n\rinitial_score\030\006 \001(\r\022\026\n\016negotiatio"
  "n_ms\030\005 \001(\r\022\027\n\017best_route_kind\030\020 \001(\r\022\021\n\tb"
  "est_ping\030\021 \001(\r\022\022\n\nbest_score\030\022 \001(\r\022\021\n\tbe"
  "st_time\030\023 \001(\r\022\030\n\020selected_seconds\030\014 \001(\r\022"
  "\025\n\ruser_settings\030\r \001(\r\022\026\n\016ice_enable_var"
  "\030\016 \001(\r\022%\n\035local_candidate_types_allowed\030"
  "\017 \001(\r*\247\001\n\035ESteamNetworkingSocketsCipher\022"
  "+\n\'k_ESteamNetworkingSocketsCipher_INVAL"
  "ID\020\000\022(\n$k_ESteamNetworkingSocketsCipher_"
  "NULL\020\001\022/\n+k_ESteamNetworkingSocketsCiphe"
  "r_AES_256_GCM\020\002B\005H\001\200\001\000"
  ;
static const ::_pbi::DescriptorTable* const descriptor_table_steamnetworkingsockets_5fmessages_2eproto_deps[1] = {
  &::descriptor_table_steamnetworkingsockets_5fmessages_5fcerts_2eproto,
};
static ::_pbi::once_flag descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_steamnetworkingsockets_5fmessages_2eproto = {
    false, false, 4262, descriptor_table_protodef_steamnetworkingsockets_5fmessages_2eproto,
    "steamnetworkingsockets_messages.proto",
    &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once, descriptor_table_steamnetworkingsockets_5fmessages_2eproto_deps, 1, 16,
    schemas, file_default_instances, TableStruct_steamnetworkingsockets_5fmessages_2eproto::offsets,
    file_level_metadata_steamnetworkingsockets_5fmessages_2eproto, file_level_enum_descriptors_steamnetworkingsockets_5fmessages_2eproto,
    file_level_service_descriptors_steamnetworkingsockets_5fmessages_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::_pbi::DescriptorTable* descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter() {
  return &descriptor_table_steamnetworkingsockets_5fmessages_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::_pbi::AddDescriptorsRunner dynamic_init_dummy_steamnetworkingsockets_5fmessages_2eproto(&descriptor_table_steamnetworkingsockets_5fmessages_2eproto);
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* CMsgSteamDatagramSessionCryptInfo_EKeyType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_steamnetworkingsockets_5fmessages_2eproto);
  return file_level_enum_descriptors_steamnetworkingsockets_5fmessages_2eproto[0];
}
bool CMsgSteamDatagramSessionCryptInfo_EKeyType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
constexpr CMsgSteamDatagramSessionCryptInfo_EKeyType CMsgSteamDatagramSessionCryptInfo::INVALID;
constexpr CMsgSteamDatagramSessionCryptInfo_EKeyType CMsgSteamDatagramSessionCryptInfo::CURVE25519;
constexpr CMsgSteamDatagramSessionCryptInfo_EKeyType CMsgSteamDatagramSessionCryptInfo::EKeyType_MIN;
constexpr CMsgSteamDatagramSessionCryptInfo_EKeyType CMsgSteamDatagramSessionCryptInfo::EKeyType_MAX;
constexpr int CMsgSteamDatagramSessionCryptInfo::EKeyType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* ESteamNetworkingSocketsCipher_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_steamnetworkingsockets_5fmessages_2eproto);
  return file_level_enum_descriptors_steamnetworkingsockets_5fmessages_2eproto[1];
}
bool ESteamNetworkingSocketsCipher_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}


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

class CMsgSteamDatagramSessionCryptInfo::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgSteamDatagramSessionCryptInfo>()._impl_._has_bits_);
  static void set_has_key_type(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_key_data(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_nonce(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_protocol_version(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

CMsgSteamDatagramSessionCryptInfo::CMsgSteamDatagramSessionCryptInfo(::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:CMsgSteamDatagramSessionCryptInfo)
}
CMsgSteamDatagramSessionCryptInfo::CMsgSteamDatagramSessionCryptInfo(const CMsgSteamDatagramSessionCryptInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamDatagramSessionCryptInfo* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.ciphers_){from._impl_.ciphers_}
    , decltype(_impl_.key_data_){}
    , decltype(_impl_.key_type_){}
    , decltype(_impl_.protocol_version_){}
    , decltype(_impl_.nonce_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.key_data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.key_data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_key_data()) {
    _this->_impl_.key_data_.Set(from._internal_key_data(), 
      _this->GetArenaForAllocation());
  }
  ::memcpy(&_impl_.key_type_, &from._impl_.key_type_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.nonce_) -
    reinterpret_cast<char*>(&_impl_.key_type_)) + sizeof(_impl_.nonce_));
  // @@protoc_insertion_point(copy_constructor:CMsgSteamDatagramSessionCryptInfo)
}

inline void CMsgSteamDatagramSessionCryptInfo::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_.ciphers_){arena}
    , decltype(_impl_.key_data_){}
    , decltype(_impl_.key_type_){0}
    , decltype(_impl_.protocol_version_){0u}
    , decltype(_impl_.nonce_){uint64_t{0u}}
  };
  _impl_.key_data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.key_data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CMsgSteamDatagramSessionCryptInfo::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.ciphers_.~RepeatedField();
  _impl_.key_data_.Destroy();
}

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

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

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

const char* CMsgSteamDatagramSessionCryptInfo::_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 .CMsgSteamDatagramSessionCryptInfo.EKeyType key_type = 1 [default = INVALID];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::CMsgSteamDatagramSessionCryptInfo_EKeyType_IsValid(val))) {
            _internal_set_key_type(static_cast<::CMsgSteamDatagramSessionCryptInfo_EKeyType>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(1, val, mutable_unknown_fields());
          }
        } else
          goto handle_unusual;
        continue;
      // optional bytes key_data = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_key_data();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional fixed64 nonce = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 25)) {
          _Internal::set_has_nonce(&has_bits);
          _impl_.nonce_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<uint64_t>(ptr);
          ptr += sizeof(uint64_t);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 protocol_version = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _Internal::set_has_protocol_version(&has_bits);
          _impl_.protocol_version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .ESteamNetworkingSocketsCipher ciphers = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          ptr -= 1;
          do {
            ptr += 1;
            uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
            CHK_(ptr);
            if (PROTOBUF_PREDICT_TRUE(::ESteamNetworkingSocketsCipher_IsValid(val))) {
              _internal_add_ciphers(static_cast<::ESteamNetworkingSocketsCipher>(val));
            } else {
              ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(5, val, mutable_unknown_fields());
            }
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<40>(ptr));
        } else if (static_cast<uint8_t>(tag) == 42) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(_internal_mutable_ciphers(), ptr, ctx, ::ESteamNetworkingSocketsCipher_IsValid, &_internal_metadata_, 5);
          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* CMsgSteamDatagramSessionCryptInfo::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamDatagramSessionCryptInfo)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // optional .CMsgSteamDatagramSessionCryptInfo.EKeyType key_type = 1 [default = INVALID];
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
      1, this->_internal_key_type(), target);
  }

  // optional bytes key_data = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_key_data(), target);
  }

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

  // optional uint32 protocol_version = 4;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(4, this->_internal_protocol_version(), target);
  }

  // repeated .ESteamNetworkingSocketsCipher ciphers = 5;
  for (int i = 0, n = this->_internal_ciphers_size(); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteEnumToArray(
        5, this->_internal_ciphers(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:CMsgSteamDatagramSessionCryptInfo)
  return target;
}

size_t CMsgSteamDatagramSessionCryptInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamDatagramSessionCryptInfo)
  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 .ESteamNetworkingSocketsCipher ciphers = 5;
  {
    size_t data_size = 0;
    unsigned int count = static_cast<unsigned int>(this->_internal_ciphers_size());for (unsigned int i = 0; i < count; i++) {
      data_size += ::_pbi::WireFormatLite::EnumSize(
        this->_internal_ciphers(static_cast<int>(i)));
    }
    total_size += (1UL * count) + data_size;
  }

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

    // optional .CMsgSteamDatagramSessionCryptInfo.EKeyType key_type = 1 [default = INVALID];
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::_pbi::WireFormatLite::EnumSize(this->_internal_key_type());
    }

    // optional uint32 protocol_version = 4;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_protocol_version());
    }

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

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

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


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

  _this->_impl_.ciphers_.MergeFrom(from._impl_.ciphers_);
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_key_data(from._internal_key_data());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.key_type_ = from._impl_.key_type_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.protocol_version_ = from._impl_.protocol_version_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.nonce_ = from._impl_.nonce_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamDatagramSessionCryptInfo::InternalSwap(CMsgSteamDatagramSessionCryptInfo* 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_.ciphers_.InternalSwap(&other->_impl_.ciphers_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.key_data_, lhs_arena,
      &other->_impl_.key_data_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CMsgSteamDatagramSessionCryptInfo, _impl_.nonce_)
      + sizeof(CMsgSteamDatagramSessionCryptInfo::_impl_.nonce_)
      - PROTOBUF_FIELD_OFFSET(CMsgSteamDatagramSessionCryptInfo, _impl_.key_type_)>(
          reinterpret_cast<char*>(&_impl_.key_type_),
          reinterpret_cast<char*>(&other->_impl_.key_type_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamDatagramSessionCryptInfo::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[0]);
}

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

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

CMsgSteamDatagramSessionCryptInfoSigned::CMsgSteamDatagramSessionCryptInfoSigned(::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:CMsgSteamDatagramSessionCryptInfoSigned)
}
CMsgSteamDatagramSessionCryptInfoSigned::CMsgSteamDatagramSessionCryptInfoSigned(const CMsgSteamDatagramSessionCryptInfoSigned& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamDatagramSessionCryptInfoSigned* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.info_){}
    , decltype(_impl_.signature_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.info_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.info_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_info()) {
    _this->_impl_.info_.Set(from._internal_info(), 
      _this->GetArenaForAllocation());
  }
  _impl_.signature_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.signature_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_signature()) {
    _this->_impl_.signature_.Set(from._internal_signature(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:CMsgSteamDatagramSessionCryptInfoSigned)
}

inline void CMsgSteamDatagramSessionCryptInfoSigned::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_.info_){}
    , decltype(_impl_.signature_){}
  };
  _impl_.info_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.info_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.signature_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.signature_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CMsgSteamDatagramSessionCryptInfoSigned::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.info_.Destroy();
  _impl_.signature_.Destroy();
}

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

void CMsgSteamDatagramSessionCryptInfoSigned::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamDatagramSessionCryptInfoSigned)
  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_.info_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.signature_.ClearNonDefaultToEmpty();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamDatagramSessionCryptInfoSigned::_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 info = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_info();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bytes signature = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_signature();
          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* CMsgSteamDatagramSessionCryptInfoSigned::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamDatagramSessionCryptInfoSigned)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

  // optional bytes signature = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_signature(), 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:CMsgSteamDatagramSessionCryptInfoSigned)
  return target;
}

size_t CMsgSteamDatagramSessionCryptInfoSigned::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamDatagramSessionCryptInfoSigned)
  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 info = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_info());
    }

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

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

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


void CMsgSteamDatagramSessionCryptInfoSigned::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgSteamDatagramSessionCryptInfoSigned*>(&to_msg);
  auto& from = static_cast<const CMsgSteamDatagramSessionCryptInfoSigned&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgSteamDatagramSessionCryptInfoSigned)
  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_info(from._internal_info());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_signature(from._internal_signature());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamDatagramSessionCryptInfoSigned::InternalSwap(CMsgSteamDatagramSessionCryptInfoSigned* 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_.info_, lhs_arena,
      &other->_impl_.info_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.signature_, lhs_arena,
      &other->_impl_.signature_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamDatagramSessionCryptInfoSigned::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[1]);
}

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

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

CMsgSteamDatagramDiagnostic::CMsgSteamDatagramDiagnostic(::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:CMsgSteamDatagramDiagnostic)
}
CMsgSteamDatagramDiagnostic::CMsgSteamDatagramDiagnostic(const CMsgSteamDatagramDiagnostic& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamDatagramDiagnostic* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.text_){}
    , decltype(_impl_.severity_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.text_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.text_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_text()) {
    _this->_impl_.text_.Set(from._internal_text(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.severity_ = from._impl_.severity_;
  // @@protoc_insertion_point(copy_constructor:CMsgSteamDatagramDiagnostic)
}

inline void CMsgSteamDatagramDiagnostic::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_.text_){}
    , decltype(_impl_.severity_){0u}
  };
  _impl_.text_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.text_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

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

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

void CMsgSteamDatagramDiagnostic::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamDatagramDiagnostic)
  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_.text_.ClearNonDefaultToEmpty();
  }
  _impl_.severity_ = 0u;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamDatagramDiagnostic::_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 severity = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_severity(&has_bits);
          _impl_.severity_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string text = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_text();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CMsgSteamDatagramDiagnostic.text");
          #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* CMsgSteamDatagramDiagnostic::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamDatagramDiagnostic)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

  // optional string text = 2;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_text().data(), static_cast<int>(this->_internal_text().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CMsgSteamDatagramDiagnostic.text");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_text(), 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:CMsgSteamDatagramDiagnostic)
  return target;
}

size_t CMsgSteamDatagramDiagnostic::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamDatagramDiagnostic)
  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 text = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_text());
    }

    // optional uint32 severity = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_severity());
    }

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

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


void CMsgSteamDatagramDiagnostic::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgSteamDatagramDiagnostic*>(&to_msg);
  auto& from = static_cast<const CMsgSteamDatagramDiagnostic&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgSteamDatagramDiagnostic)
  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_text(from._internal_text());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.severity_ = from._impl_.severity_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamDatagramDiagnostic::InternalSwap(CMsgSteamDatagramDiagnostic* 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_.text_, lhs_arena,
      &other->_impl_.text_, rhs_arena
  );
  swap(_impl_.severity_, other->_impl_.severity_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamDatagramDiagnostic::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[2]);
}

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

class CMsgSteamDatagramLinkInstantaneousStats::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgSteamDatagramLinkInstantaneousStats>()._impl_._has_bits_);
  static void set_has_out_packets_per_sec_x10(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_out_bytes_per_sec(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_in_packets_per_sec_x10(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_in_bytes_per_sec(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_ping_ms(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_packets_dropped_pct(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_packets_weird_sequence_pct(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_peak_jitter_usec(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
};

CMsgSteamDatagramLinkInstantaneousStats::CMsgSteamDatagramLinkInstantaneousStats(::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:CMsgSteamDatagramLinkInstantaneousStats)
}
CMsgSteamDatagramLinkInstantaneousStats::CMsgSteamDatagramLinkInstantaneousStats(const CMsgSteamDatagramLinkInstantaneousStats& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamDatagramLinkInstantaneousStats* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.out_packets_per_sec_x10_){}
    , decltype(_impl_.out_bytes_per_sec_){}
    , decltype(_impl_.in_packets_per_sec_x10_){}
    , decltype(_impl_.in_bytes_per_sec_){}
    , decltype(_impl_.ping_ms_){}
    , decltype(_impl_.packets_dropped_pct_){}
    , decltype(_impl_.packets_weird_sequence_pct_){}
    , decltype(_impl_.peak_jitter_usec_){}};

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

inline void CMsgSteamDatagramLinkInstantaneousStats::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_.out_packets_per_sec_x10_){0u}
    , decltype(_impl_.out_bytes_per_sec_){0u}
    , decltype(_impl_.in_packets_per_sec_x10_){0u}
    , decltype(_impl_.in_bytes_per_sec_){0u}
    , decltype(_impl_.ping_ms_){0u}
    , decltype(_impl_.packets_dropped_pct_){0u}
    , decltype(_impl_.packets_weird_sequence_pct_){0u}
    , decltype(_impl_.peak_jitter_usec_){0u}
  };
}

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

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

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

void CMsgSteamDatagramLinkInstantaneousStats::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamDatagramLinkInstantaneousStats)
  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) {
    ::memset(&_impl_.out_packets_per_sec_x10_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.peak_jitter_usec_) -
        reinterpret_cast<char*>(&_impl_.out_packets_per_sec_x10_)) + sizeof(_impl_.peak_jitter_usec_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamDatagramLinkInstantaneousStats::_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 out_packets_per_sec_x10 = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_out_packets_per_sec_x10(&has_bits);
          _impl_.out_packets_per_sec_x10_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 out_bytes_per_sec = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_out_bytes_per_sec(&has_bits);
          _impl_.out_bytes_per_sec_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 in_packets_per_sec_x10 = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_in_packets_per_sec_x10(&has_bits);
          _impl_.in_packets_per_sec_x10_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 in_bytes_per_sec = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _Internal::set_has_in_bytes_per_sec(&has_bits);
          _impl_.in_bytes_per_sec_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_ms = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _Internal::set_has_ping_ms(&has_bits);
          _impl_.ping_ms_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 packets_dropped_pct = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _Internal::set_has_packets_dropped_pct(&has_bits);
          _impl_.packets_dropped_pct_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 packets_weird_sequence_pct = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _Internal::set_has_packets_weird_sequence_pct(&has_bits);
          _impl_.packets_weird_sequence_pct_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 peak_jitter_usec = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
          _Internal::set_has_peak_jitter_usec(&has_bits);
          _impl_.peak_jitter_usec_ = ::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* CMsgSteamDatagramLinkInstantaneousStats::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamDatagramLinkInstantaneousStats)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

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

  // optional uint32 in_packets_per_sec_x10 = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(3, this->_internal_in_packets_per_sec_x10(), target);
  }

  // optional uint32 in_bytes_per_sec = 4;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(4, this->_internal_in_bytes_per_sec(), target);
  }

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

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

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

  // optional uint32 peak_jitter_usec = 8;
  if (cached_has_bits & 0x00000080u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(8, this->_internal_peak_jitter_usec(), 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:CMsgSteamDatagramLinkInstantaneousStats)
  return target;
}

size_t CMsgSteamDatagramLinkInstantaneousStats::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamDatagramLinkInstantaneousStats)
  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 & 0x000000ffu) {
    // optional uint32 out_packets_per_sec_x10 = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_out_packets_per_sec_x10());
    }

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

    // optional uint32 in_packets_per_sec_x10 = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_in_packets_per_sec_x10());
    }

    // optional uint32 in_bytes_per_sec = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_in_bytes_per_sec());
    }

    // optional uint32 ping_ms = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_ping_ms());
    }

    // optional uint32 packets_dropped_pct = 6;
    if (cached_has_bits & 0x00000020u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_packets_dropped_pct());
    }

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

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

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

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


void CMsgSteamDatagramLinkInstantaneousStats::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgSteamDatagramLinkInstantaneousStats*>(&to_msg);
  auto& from = static_cast<const CMsgSteamDatagramLinkInstantaneousStats&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgSteamDatagramLinkInstantaneousStats)
  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->_impl_.out_packets_per_sec_x10_ = from._impl_.out_packets_per_sec_x10_;
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.out_bytes_per_sec_ = from._impl_.out_bytes_per_sec_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.in_packets_per_sec_x10_ = from._impl_.in_packets_per_sec_x10_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.in_bytes_per_sec_ = from._impl_.in_bytes_per_sec_;
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.ping_ms_ = from._impl_.ping_ms_;
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_impl_.packets_dropped_pct_ = from._impl_.packets_dropped_pct_;
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_impl_.packets_weird_sequence_pct_ = from._impl_.packets_weird_sequence_pct_;
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_impl_.peak_jitter_usec_ = from._impl_.peak_jitter_usec_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamDatagramLinkInstantaneousStats::InternalSwap(CMsgSteamDatagramLinkInstantaneousStats* 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(CMsgSteamDatagramLinkInstantaneousStats, _impl_.peak_jitter_usec_)
      + sizeof(CMsgSteamDatagramLinkInstantaneousStats::_impl_.peak_jitter_usec_)
      - PROTOBUF_FIELD_OFFSET(CMsgSteamDatagramLinkInstantaneousStats, _impl_.out_packets_per_sec_x10_)>(
          reinterpret_cast<char*>(&_impl_.out_packets_per_sec_x10_),
          reinterpret_cast<char*>(&other->_impl_.out_packets_per_sec_x10_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamDatagramLinkInstantaneousStats::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[3]);
}

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

class CMsgSteamDatagramLinkLifetimeStats::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgSteamDatagramLinkLifetimeStats>()._impl_._has_bits_);
  static void set_has_connected_seconds(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_packets_sent(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_kb_sent(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_packets_recv(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_kb_recv(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_packets_recv_sequenced(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_packets_recv_dropped(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_packets_recv_out_of_order(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_packets_recv_out_of_order_corrected(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_packets_recv_duplicate(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_packets_recv_lurch(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_multipath_send_enabled(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_quality_histogram_100(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static void set_has_quality_histogram_99(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_quality_histogram_97(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_quality_histogram_95(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static void set_has_quality_histogram_90(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static void set_has_quality_histogram_75(HasBits* has_bits) {
    (*has_bits)[0] |= 131072u;
  }
  static void set_has_quality_histogram_50(HasBits* has_bits) {
    (*has_bits)[0] |= 262144u;
  }
  static void set_has_quality_histogram_1(HasBits* has_bits) {
    (*has_bits)[0] |= 524288u;
  }
  static void set_has_quality_histogram_dead(HasBits* has_bits) {
    (*has_bits)[0] |= 1048576u;
  }
  static void set_has_quality_ntile_2nd(HasBits* has_bits) {
    (*has_bits)[0] |= 2097152u;
  }
  static void set_has_quality_ntile_5th(HasBits* has_bits) {
    (*has_bits)[0] |= 4194304u;
  }
  static void set_has_quality_ntile_25th(HasBits* has_bits) {
    (*has_bits)[0] |= 8388608u;
  }
  static void set_has_quality_ntile_50th(HasBits* has_bits) {
    (*has_bits)[0] |= 16777216u;
  }
  static void set_has_ping_histogram_25(HasBits* has_bits) {
    (*has_bits)[0] |= 33554432u;
  }
  static void set_has_ping_histogram_50(HasBits* has_bits) {
    (*has_bits)[0] |= 67108864u;
  }
  static void set_has_ping_histogram_75(HasBits* has_bits) {
    (*has_bits)[0] |= 134217728u;
  }
  static void set_has_ping_histogram_100(HasBits* has_bits) {
    (*has_bits)[0] |= 268435456u;
  }
  static void set_has_ping_histogram_125(HasBits* has_bits) {
    (*has_bits)[0] |= 536870912u;
  }
  static void set_has_ping_histogram_150(HasBits* has_bits) {
    (*has_bits)[0] |= 1073741824u;
  }
  static void set_has_ping_histogram_200(HasBits* has_bits) {
    (*has_bits)[0] |= 2147483648u;
  }
  static void set_has_ping_histogram_300(HasBits* has_bits) {
    (*has_bits)[1] |= 1u;
  }
  static void set_has_ping_histogram_max(HasBits* has_bits) {
    (*has_bits)[1] |= 2u;
  }
  static void set_has_ping_ntile_5th(HasBits* has_bits) {
    (*has_bits)[1] |= 4u;
  }
  static void set_has_ping_ntile_50th(HasBits* has_bits) {
    (*has_bits)[1] |= 8u;
  }
  static void set_has_ping_ntile_75th(HasBits* has_bits) {
    (*has_bits)[1] |= 16u;
  }
  static void set_has_ping_ntile_95th(HasBits* has_bits) {
    (*has_bits)[1] |= 32u;
  }
  static void set_has_ping_ntile_98th(HasBits* has_bits) {
    (*has_bits)[1] |= 64u;
  }
  static void set_has_jitter_histogram_negligible(HasBits* has_bits) {
    (*has_bits)[1] |= 128u;
  }
  static void set_has_jitter_histogram_1(HasBits* has_bits) {
    (*has_bits)[1] |= 256u;
  }
  static void set_has_jitter_histogram_2(HasBits* has_bits) {
    (*has_bits)[1] |= 512u;
  }
  static void set_has_jitter_histogram_5(HasBits* has_bits) {
    (*has_bits)[1] |= 1024u;
  }
  static void set_has_jitter_histogram_10(HasBits* has_bits) {
    (*has_bits)[1] |= 2048u;
  }
  static void set_has_jitter_histogram_20(HasBits* has_bits) {
    (*has_bits)[1] |= 4096u;
  }
};

CMsgSteamDatagramLinkLifetimeStats::CMsgSteamDatagramLinkLifetimeStats(::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:CMsgSteamDatagramLinkLifetimeStats)
}
CMsgSteamDatagramLinkLifetimeStats::CMsgSteamDatagramLinkLifetimeStats(const CMsgSteamDatagramLinkLifetimeStats& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamDatagramLinkLifetimeStats* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.multipath_packets_recv_sequenced_){from._impl_.multipath_packets_recv_sequenced_}
    , decltype(_impl_.multipath_packets_recv_later_){from._impl_.multipath_packets_recv_later_}
    , decltype(_impl_.packets_sent_){}
    , decltype(_impl_.kb_sent_){}
    , decltype(_impl_.packets_recv_){}
    , decltype(_impl_.kb_recv_){}
    , decltype(_impl_.packets_recv_sequenced_){}
    , decltype(_impl_.packets_recv_dropped_){}
    , decltype(_impl_.connected_seconds_){}
    , decltype(_impl_.multipath_send_enabled_){}
    , decltype(_impl_.packets_recv_out_of_order_){}
    , decltype(_impl_.packets_recv_duplicate_){}
    , decltype(_impl_.packets_recv_lurch_){}
    , decltype(_impl_.packets_recv_out_of_order_corrected_){}
    , decltype(_impl_.quality_histogram_100_){}
    , decltype(_impl_.quality_histogram_99_){}
    , decltype(_impl_.quality_histogram_97_){}
    , decltype(_impl_.quality_histogram_95_){}
    , decltype(_impl_.quality_histogram_90_){}
    , decltype(_impl_.quality_histogram_75_){}
    , decltype(_impl_.quality_histogram_50_){}
    , decltype(_impl_.quality_histogram_1_){}
    , decltype(_impl_.quality_histogram_dead_){}
    , decltype(_impl_.quality_ntile_2nd_){}
    , decltype(_impl_.quality_ntile_5th_){}
    , decltype(_impl_.quality_ntile_25th_){}
    , decltype(_impl_.quality_ntile_50th_){}
    , decltype(_impl_.ping_histogram_25_){}
    , decltype(_impl_.ping_histogram_50_){}
    , decltype(_impl_.ping_histogram_75_){}
    , decltype(_impl_.ping_histogram_100_){}
    , decltype(_impl_.ping_histogram_125_){}
    , decltype(_impl_.ping_histogram_150_){}
    , decltype(_impl_.ping_histogram_200_){}
    , decltype(_impl_.ping_histogram_300_){}
    , decltype(_impl_.ping_histogram_max_){}
    , decltype(_impl_.ping_ntile_5th_){}
    , decltype(_impl_.ping_ntile_50th_){}
    , decltype(_impl_.ping_ntile_75th_){}
    , decltype(_impl_.ping_ntile_95th_){}
    , decltype(_impl_.ping_ntile_98th_){}
    , decltype(_impl_.jitter_histogram_negligible_){}
    , decltype(_impl_.jitter_histogram_1_){}
    , decltype(_impl_.jitter_histogram_2_){}
    , decltype(_impl_.jitter_histogram_5_){}
    , decltype(_impl_.jitter_histogram_10_){}
    , decltype(_impl_.jitter_histogram_20_){}};

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

inline void CMsgSteamDatagramLinkLifetimeStats::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_.multipath_packets_recv_sequenced_){arena}
    , decltype(_impl_.multipath_packets_recv_later_){arena}
    , decltype(_impl_.packets_sent_){uint64_t{0u}}
    , decltype(_impl_.kb_sent_){uint64_t{0u}}
    , decltype(_impl_.packets_recv_){uint64_t{0u}}
    , decltype(_impl_.kb_recv_){uint64_t{0u}}
    , decltype(_impl_.packets_recv_sequenced_){uint64_t{0u}}
    , decltype(_impl_.packets_recv_dropped_){uint64_t{0u}}
    , decltype(_impl_.connected_seconds_){0u}
    , decltype(_impl_.multipath_send_enabled_){0u}
    , decltype(_impl_.packets_recv_out_of_order_){uint64_t{0u}}
    , decltype(_impl_.packets_recv_duplicate_){uint64_t{0u}}
    , decltype(_impl_.packets_recv_lurch_){uint64_t{0u}}
    , decltype(_impl_.packets_recv_out_of_order_corrected_){uint64_t{0u}}
    , decltype(_impl_.quality_histogram_100_){0u}
    , decltype(_impl_.quality_histogram_99_){0u}
    , decltype(_impl_.quality_histogram_97_){0u}
    , decltype(_impl_.quality_histogram_95_){0u}
    , decltype(_impl_.quality_histogram_90_){0u}
    , decltype(_impl_.quality_histogram_75_){0u}
    , decltype(_impl_.quality_histogram_50_){0u}
    , decltype(_impl_.quality_histogram_1_){0u}
    , decltype(_impl_.quality_histogram_dead_){0u}
    , decltype(_impl_.quality_ntile_2nd_){0u}
    , decltype(_impl_.quality_ntile_5th_){0u}
    , decltype(_impl_.quality_ntile_25th_){0u}
    , decltype(_impl_.quality_ntile_50th_){0u}
    , decltype(_impl_.ping_histogram_25_){0u}
    , decltype(_impl_.ping_histogram_50_){0u}
    , decltype(_impl_.ping_histogram_75_){0u}
    , decltype(_impl_.ping_histogram_100_){0u}
    , decltype(_impl_.ping_histogram_125_){0u}
    , decltype(_impl_.ping_histogram_150_){0u}
    , decltype(_impl_.ping_histogram_200_){0u}
    , decltype(_impl_.ping_histogram_300_){0u}
    , decltype(_impl_.ping_histogram_max_){0u}
    , decltype(_impl_.ping_ntile_5th_){0u}
    , decltype(_impl_.ping_ntile_50th_){0u}
    , decltype(_impl_.ping_ntile_75th_){0u}
    , decltype(_impl_.ping_ntile_95th_){0u}
    , decltype(_impl_.ping_ntile_98th_){0u}
    , decltype(_impl_.jitter_histogram_negligible_){0u}
    , decltype(_impl_.jitter_histogram_1_){0u}
    , decltype(_impl_.jitter_histogram_2_){0u}
    , decltype(_impl_.jitter_histogram_5_){0u}
    , decltype(_impl_.jitter_histogram_10_){0u}
    , decltype(_impl_.jitter_histogram_20_){0u}
  };
}

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

inline void CMsgSteamDatagramLinkLifetimeStats::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.multipath_packets_recv_sequenced_.~RepeatedField();
  _impl_.multipath_packets_recv_later_.~RepeatedField();
}

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

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

  _impl_.multipath_packets_recv_sequenced_.Clear();
  _impl_.multipath_packets_recv_later_.Clear();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    ::memset(&_impl_.packets_sent_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.multipath_send_enabled_) -
        reinterpret_cast<char*>(&_impl_.packets_sent_)) + sizeof(_impl_.multipath_send_enabled_));
  }
  if (cached_has_bits & 0x0000ff00u) {
    ::memset(&_impl_.packets_recv_out_of_order_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.quality_histogram_95_) -
        reinterpret_cast<char*>(&_impl_.packets_recv_out_of_order_)) + sizeof(_impl_.quality_histogram_95_));
  }
  if (cached_has_bits & 0x00ff0000u) {
    ::memset(&_impl_.quality_histogram_90_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.quality_ntile_25th_) -
        reinterpret_cast<char*>(&_impl_.quality_histogram_90_)) + sizeof(_impl_.quality_ntile_25th_));
  }
  if (cached_has_bits & 0xff000000u) {
    ::memset(&_impl_.quality_ntile_50th_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.ping_histogram_200_) -
        reinterpret_cast<char*>(&_impl_.quality_ntile_50th_)) + sizeof(_impl_.ping_histogram_200_));
  }
  cached_has_bits = _impl_._has_bits_[1];
  if (cached_has_bits & 0x000000ffu) {
    ::memset(&_impl_.ping_histogram_300_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.jitter_histogram_negligible_) -
        reinterpret_cast<char*>(&_impl_.ping_histogram_300_)) + sizeof(_impl_.jitter_histogram_negligible_));
  }
  if (cached_has_bits & 0x00001f00u) {
    ::memset(&_impl_.jitter_histogram_1_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.jitter_histogram_20_) -
        reinterpret_cast<char*>(&_impl_.jitter_histogram_1_)) + sizeof(_impl_.jitter_histogram_20_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamDatagramLinkLifetimeStats::_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) {
      // optional uint32 connected_seconds = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_connected_seconds(&_impl_._has_bits_);
          _impl_.connected_seconds_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 packets_sent = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_packets_sent(&_impl_._has_bits_);
          _impl_.packets_sent_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 kb_sent = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _Internal::set_has_kb_sent(&_impl_._has_bits_);
          _impl_.kb_sent_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 packets_recv = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _Internal::set_has_packets_recv(&_impl_._has_bits_);
          _impl_.packets_recv_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 kb_recv = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _Internal::set_has_kb_recv(&_impl_._has_bits_);
          _impl_.kb_recv_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 packets_recv_sequenced = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _Internal::set_has_packets_recv_sequenced(&_impl_._has_bits_);
          _impl_.packets_recv_sequenced_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 packets_recv_dropped = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
          _Internal::set_has_packets_recv_dropped(&_impl_._has_bits_);
          _impl_.packets_recv_dropped_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 packets_recv_out_of_order = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
          _Internal::set_has_packets_recv_out_of_order(&_impl_._has_bits_);
          _impl_.packets_recv_out_of_order_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 packets_recv_duplicate = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 80)) {
          _Internal::set_has_packets_recv_duplicate(&_impl_._has_bits_);
          _impl_.packets_recv_duplicate_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 packets_recv_lurch = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 88)) {
          _Internal::set_has_packets_recv_lurch(&_impl_._has_bits_);
          _impl_.packets_recv_lurch_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated uint64 multipath_packets_recv_sequenced = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
          ptr -= 1;
          do {
            ptr += 1;
            _internal_add_multipath_packets_recv_sequenced(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<96>(ptr));
        } else if (static_cast<uint8_t>(tag) == 98) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedUInt64Parser(_internal_mutable_multipath_packets_recv_sequenced(), ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated uint64 multipath_packets_recv_later = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
          ptr -= 1;
          do {
            ptr += 1;
            _internal_add_multipath_packets_recv_later(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<104>(ptr));
        } else if (static_cast<uint8_t>(tag) == 106) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedUInt64Parser(_internal_mutable_multipath_packets_recv_later(), ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 multipath_send_enabled = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 112)) {
          _Internal::set_has_multipath_send_enabled(&_impl_._has_bits_);
          _impl_.multipath_send_enabled_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint64 packets_recv_out_of_order_corrected = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
          _Internal::set_has_packets_recv_out_of_order_corrected(&_impl_._has_bits_);
          _impl_.packets_recv_out_of_order_corrected_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_histogram_100 = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 168)) {
          _Internal::set_has_quality_histogram_100(&_impl_._has_bits_);
          _impl_.quality_histogram_100_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_histogram_99 = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 176)) {
          _Internal::set_has_quality_histogram_99(&_impl_._has_bits_);
          _impl_.quality_histogram_99_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_histogram_97 = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 184)) {
          _Internal::set_has_quality_histogram_97(&_impl_._has_bits_);
          _impl_.quality_histogram_97_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_histogram_95 = 24;
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 192)) {
          _Internal::set_has_quality_histogram_95(&_impl_._has_bits_);
          _impl_.quality_histogram_95_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_histogram_90 = 25;
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 200)) {
          _Internal::set_has_quality_histogram_90(&_impl_._has_bits_);
          _impl_.quality_histogram_90_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_histogram_75 = 26;
      case 26:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 208)) {
          _Internal::set_has_quality_histogram_75(&_impl_._has_bits_);
          _impl_.quality_histogram_75_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_histogram_50 = 27;
      case 27:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 216)) {
          _Internal::set_has_quality_histogram_50(&_impl_._has_bits_);
          _impl_.quality_histogram_50_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_histogram_1 = 28;
      case 28:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 224)) {
          _Internal::set_has_quality_histogram_1(&_impl_._has_bits_);
          _impl_.quality_histogram_1_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_histogram_dead = 29;
      case 29:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 232)) {
          _Internal::set_has_quality_histogram_dead(&_impl_._has_bits_);
          _impl_.quality_histogram_dead_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_ntile_2nd = 30;
      case 30:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 240)) {
          _Internal::set_has_quality_ntile_2nd(&_impl_._has_bits_);
          _impl_.quality_ntile_2nd_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_ntile_5th = 31;
      case 31:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 248)) {
          _Internal::set_has_quality_ntile_5th(&_impl_._has_bits_);
          _impl_.quality_ntile_5th_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_ntile_25th = 32;
      case 32:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 0)) {
          _Internal::set_has_quality_ntile_25th(&_impl_._has_bits_);
          _impl_.quality_ntile_25th_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 quality_ntile_50th = 33;
      case 33:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_quality_ntile_50th(&_impl_._has_bits_);
          _impl_.quality_ntile_50th_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_histogram_25 = 41;
      case 41:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
          _Internal::set_has_ping_histogram_25(&_impl_._has_bits_);
          _impl_.ping_histogram_25_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_histogram_50 = 42;
      case 42:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 80)) {
          _Internal::set_has_ping_histogram_50(&_impl_._has_bits_);
          _impl_.ping_histogram_50_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_histogram_75 = 43;
      case 43:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 88)) {
          _Internal::set_has_ping_histogram_75(&_impl_._has_bits_);
          _impl_.ping_histogram_75_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_histogram_100 = 44;
      case 44:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
          _Internal::set_has_ping_histogram_100(&_impl_._has_bits_);
          _impl_.ping_histogram_100_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_histogram_125 = 45;
      case 45:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
          _Internal::set_has_ping_histogram_125(&_impl_._has_bits_);
          _impl_.ping_histogram_125_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_histogram_150 = 46;
      case 46:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 112)) {
          _Internal::set_has_ping_histogram_150(&_impl_._has_bits_);
          _impl_.ping_histogram_150_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_histogram_200 = 47;
      case 47:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
          _Internal::set_has_ping_histogram_200(&_impl_._has_bits_);
          _impl_.ping_histogram_200_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_histogram_300 = 48;
      case 48:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 128)) {
          _Internal::set_has_ping_histogram_300(&_impl_._has_bits_);
          _impl_.ping_histogram_300_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_histogram_max = 49;
      case 49:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 136)) {
          _Internal::set_has_ping_histogram_max(&_impl_._has_bits_);
          _impl_.ping_histogram_max_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_ntile_5th = 50;
      case 50:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 144)) {
          _Internal::set_has_ping_ntile_5th(&_impl_._has_bits_);
          _impl_.ping_ntile_5th_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_ntile_50th = 51;
      case 51:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 152)) {
          _Internal::set_has_ping_ntile_50th(&_impl_._has_bits_);
          _impl_.ping_ntile_50th_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_ntile_75th = 52;
      case 52:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 160)) {
          _Internal::set_has_ping_ntile_75th(&_impl_._has_bits_);
          _impl_.ping_ntile_75th_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_ntile_95th = 53;
      case 53:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 168)) {
          _Internal::set_has_ping_ntile_95th(&_impl_._has_bits_);
          _impl_.ping_ntile_95th_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ping_ntile_98th = 54;
      case 54:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 176)) {
          _Internal::set_has_ping_ntile_98th(&_impl_._has_bits_);
          _impl_.ping_ntile_98th_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 jitter_histogram_negligible = 61;
      case 61:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 232)) {
          _Internal::set_has_jitter_histogram_negligible(&_impl_._has_bits_);
          _impl_.jitter_histogram_negligible_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 jitter_histogram_1 = 62;
      case 62:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 240)) {
          _Internal::set_has_jitter_histogram_1(&_impl_._has_bits_);
          _impl_.jitter_histogram_1_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 jitter_histogram_2 = 63;
      case 63:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 248)) {
          _Internal::set_has_jitter_histogram_2(&_impl_._has_bits_);
          _impl_.jitter_histogram_2_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 jitter_histogram_5 = 64;
      case 64:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 0)) {
          _Internal::set_has_jitter_histogram_5(&_impl_._has_bits_);
          _impl_.jitter_histogram_5_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 jitter_histogram_10 = 65;
      case 65:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_jitter_histogram_10(&_impl_._has_bits_);
          _impl_.jitter_histogram_10_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 jitter_histogram_20 = 66;
      case 66:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_jitter_histogram_20(&_impl_._has_bits_);
          _impl_.jitter_histogram_20_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

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

  cached_has_bits = _impl_._has_bits_[0];
  // optional uint32 connected_seconds = 2;
  if (cached_has_bits & 0x00000040u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(2, this->_internal_connected_seconds(), target);
  }

  // optional uint64 packets_sent = 3;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(3, this->_internal_packets_sent(), target);
  }

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

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

  // optional uint64 kb_recv = 6;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(6, this->_internal_kb_recv(), target);
  }

  // optional uint64 packets_recv_sequenced = 7;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(7, this->_internal_packets_recv_sequenced(), target);
  }

  // optional uint64 packets_recv_dropped = 8;
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(8, this->_internal_packets_recv_dropped(), target);
  }

  // optional uint64 packets_recv_out_of_order = 9;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(9, this->_internal_packets_recv_out_of_order(), target);
  }

  // optional uint64 packets_recv_duplicate = 10;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(10, this->_internal_packets_recv_duplicate(), target);
  }

  // optional uint64 packets_recv_lurch = 11;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(11, this->_internal_packets_recv_lurch(), target);
  }

  // repeated uint64 multipath_packets_recv_sequenced = 12;
  for (int i = 0, n = this->_internal_multipath_packets_recv_sequenced_size(); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(12, this->_internal_multipath_packets_recv_sequenced(i), target);
  }

  // repeated uint64 multipath_packets_recv_later = 13;
  for (int i = 0, n = this->_internal_multipath_packets_recv_later_size(); i < n; i++) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(13, this->_internal_multipath_packets_recv_later(i), target);
  }

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

  // optional uint64 packets_recv_out_of_order_corrected = 15;
  if (cached_has_bits & 0x00000800u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(15, this->_internal_packets_recv_out_of_order_corrected(), target);
  }

  // optional uint32 quality_histogram_100 = 21;
  if (cached_has_bits & 0x00001000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(21, this->_internal_quality_histogram_100(), target);
  }

  // optional uint32 quality_histogram_99 = 22;
  if (cached_has_bits & 0x00002000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(22, this->_internal_quality_histogram_99(), target);
  }

  // optional uint32 quality_histogram_97 = 23;
  if (cached_has_bits & 0x00004000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(23, this->_internal_quality_histogram_97(), target);
  }

  // optional uint32 quality_histogram_95 = 24;
  if (cached_has_bits & 0x00008000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(24, this->_internal_quality_histogram_95(), target);
  }

  // optional uint32 quality_histogram_90 = 25;
  if (cached_has_bits & 0x00010000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(25, this->_internal_quality_histogram_90(), target);
  }

  // optional uint32 quality_histogram_75 = 26;
  if (cached_has_bits & 0x00020000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(26, this->_internal_quality_histogram_75(), target);
  }

  // optional uint32 quality_histogram_50 = 27;
  if (cached_has_bits & 0x00040000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(27, this->_internal_quality_histogram_50(), target);
  }

  // optional uint32 quality_histogram_1 = 28;
  if (cached_has_bits & 0x00080000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(28, this->_internal_quality_histogram_1(), target);
  }

  // optional uint32 quality_histogram_dead = 29;
  if (cached_has_bits & 0x00100000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(29, this->_internal_quality_histogram_dead(), target);
  }

  // optional uint32 quality_ntile_2nd = 30;
  if (cached_has_bits & 0x00200000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(30, this->_internal_quality_ntile_2nd(), target);
  }

  // optional uint32 quality_ntile_5th = 31;
  if (cached_has_bits & 0x00400000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(31, this->_internal_quality_ntile_5th(), target);
  }

  // optional uint32 quality_ntile_25th = 32;
  if (cached_has_bits & 0x00800000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(32, this->_internal_quality_ntile_25th(), target);
  }

  // optional uint32 quality_ntile_50th = 33;
  if (cached_has_bits & 0x01000000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(33, this->_internal_quality_ntile_50th(), target);
  }

  // optional uint32 ping_histogram_25 = 41;
  if (cached_has_bits & 0x02000000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(41, this->_internal_ping_histogram_25(), target);
  }

  // optional uint32 ping_histogram_50 = 42;
  if (cached_has_bits & 0x04000000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(42, this->_internal_ping_histogram_50(), target);
  }

  // optional uint32 ping_histogram_75 = 43;
  if (cached_has_bits & 0x08000000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(43, this->_internal_ping_histogram_75(), target);
  }

  // optional uint32 ping_histogram_100 = 44;
  if (cached_has_bits & 0x10000000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(44, this->_internal_ping_histogram_100(), target);
  }

  // optional uint32 ping_histogram_125 = 45;
  if (cached_has_bits & 0x20000000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(45, this->_internal_ping_histogram_125(), target);
  }

  // optional uint32 ping_histogram_150 = 46;
  if (cached_has_bits & 0x40000000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(46, this->_internal_ping_histogram_150(), target);
  }

  // optional uint32 ping_histogram_200 = 47;
  if (cached_has_bits & 0x80000000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(47, this->_internal_ping_histogram_200(), target);
  }

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

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

  // optional uint32 ping_ntile_5th = 50;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(50, this->_internal_ping_ntile_5th(), target);
  }

  // optional uint32 ping_ntile_50th = 51;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(51, this->_internal_ping_ntile_50th(), target);
  }

  // optional uint32 ping_ntile_75th = 52;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(52, this->_internal_ping_ntile_75th(), target);
  }

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

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

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

  // optional uint32 jitter_histogram_1 = 62;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(62, this->_internal_jitter_histogram_1(), target);
  }

  // optional uint32 jitter_histogram_2 = 63;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(63, this->_internal_jitter_histogram_2(), target);
  }

  // optional uint32 jitter_histogram_5 = 64;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(64, this->_internal_jitter_histogram_5(), target);
  }

  // optional uint32 jitter_histogram_10 = 65;
  if (cached_has_bits & 0x00000800u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(65, this->_internal_jitter_histogram_10(), target);
  }

  // optional uint32 jitter_histogram_20 = 66;
  if (cached_has_bits & 0x00001000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(66, this->_internal_jitter_histogram_20(), 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:CMsgSteamDatagramLinkLifetimeStats)
  return target;
}

size_t CMsgSteamDatagramLinkLifetimeStats::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamDatagramLinkLifetimeStats)
  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 uint64 multipath_packets_recv_sequenced = 12;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      UInt64Size(this->_impl_.multipath_packets_recv_sequenced_);
    total_size += 1 *
                  ::_pbi::FromIntSize(this->_internal_multipath_packets_recv_sequenced_size());
    total_size += data_size;
  }

  // repeated uint64 multipath_packets_recv_later = 13;
  {
    size_t data_size = ::_pbi::WireFormatLite::
      UInt64Size(this->_impl_.multipath_packets_recv_later_);
    total_size += 1 *
                  ::_pbi::FromIntSize(this->_internal_multipath_packets_recv_later_size());
    total_size += data_size;
  }

  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional uint64 packets_sent = 3;
    if (cached_has_bits & 0x00000001u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_packets_sent());
    }

    // optional uint64 kb_sent = 4;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_kb_sent());
    }

    // optional uint64 packets_recv = 5;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_packets_recv());
    }

    // optional uint64 kb_recv = 6;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_kb_recv());
    }

    // optional uint64 packets_recv_sequenced = 7;
    if (cached_has_bits & 0x00000010u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_packets_recv_sequenced());
    }

    // optional uint64 packets_recv_dropped = 8;
    if (cached_has_bits & 0x00000020u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_packets_recv_dropped());
    }

    // optional uint32 connected_seconds = 2;
    if (cached_has_bits & 0x00000040u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_connected_seconds());
    }

    // optional uint32 multipath_send_enabled = 14;
    if (cached_has_bits & 0x00000080u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_multipath_send_enabled());
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // optional uint64 packets_recv_out_of_order = 9;
    if (cached_has_bits & 0x00000100u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_packets_recv_out_of_order());
    }

    // optional uint64 packets_recv_duplicate = 10;
    if (cached_has_bits & 0x00000200u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_packets_recv_duplicate());
    }

    // optional uint64 packets_recv_lurch = 11;
    if (cached_has_bits & 0x00000400u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_packets_recv_lurch());
    }

    // optional uint64 packets_recv_out_of_order_corrected = 15;
    if (cached_has_bits & 0x00000800u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_packets_recv_out_of_order_corrected());
    }

    // optional uint32 quality_histogram_100 = 21;
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_histogram_100());
    }

    // optional uint32 quality_histogram_99 = 22;
    if (cached_has_bits & 0x00002000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_histogram_99());
    }

    // optional uint32 quality_histogram_97 = 23;
    if (cached_has_bits & 0x00004000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_histogram_97());
    }

    // optional uint32 quality_histogram_95 = 24;
    if (cached_has_bits & 0x00008000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_histogram_95());
    }

  }
  if (cached_has_bits & 0x00ff0000u) {
    // optional uint32 quality_histogram_90 = 25;
    if (cached_has_bits & 0x00010000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_histogram_90());
    }

    // optional uint32 quality_histogram_75 = 26;
    if (cached_has_bits & 0x00020000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_histogram_75());
    }

    // optional uint32 quality_histogram_50 = 27;
    if (cached_has_bits & 0x00040000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_histogram_50());
    }

    // optional uint32 quality_histogram_1 = 28;
    if (cached_has_bits & 0x00080000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_histogram_1());
    }

    // optional uint32 quality_histogram_dead = 29;
    if (cached_has_bits & 0x00100000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_histogram_dead());
    }

    // optional uint32 quality_ntile_2nd = 30;
    if (cached_has_bits & 0x00200000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_ntile_2nd());
    }

    // optional uint32 quality_ntile_5th = 31;
    if (cached_has_bits & 0x00400000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_ntile_5th());
    }

    // optional uint32 quality_ntile_25th = 32;
    if (cached_has_bits & 0x00800000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_ntile_25th());
    }

  }
  if (cached_has_bits & 0xff000000u) {
    // optional uint32 quality_ntile_50th = 33;
    if (cached_has_bits & 0x01000000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_quality_ntile_50th());
    }

    // optional uint32 ping_histogram_25 = 41;
    if (cached_has_bits & 0x02000000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_histogram_25());
    }

    // optional uint32 ping_histogram_50 = 42;
    if (cached_has_bits & 0x04000000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_histogram_50());
    }

    // optional uint32 ping_histogram_75 = 43;
    if (cached_has_bits & 0x08000000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_histogram_75());
    }

    // optional uint32 ping_histogram_100 = 44;
    if (cached_has_bits & 0x10000000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_histogram_100());
    }

    // optional uint32 ping_histogram_125 = 45;
    if (cached_has_bits & 0x20000000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_histogram_125());
    }

    // optional uint32 ping_histogram_150 = 46;
    if (cached_has_bits & 0x40000000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_histogram_150());
    }

    // optional uint32 ping_histogram_200 = 47;
    if (cached_has_bits & 0x80000000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_histogram_200());
    }

  }
  cached_has_bits = _impl_._has_bits_[1];
  if (cached_has_bits & 0x000000ffu) {
    // optional uint32 ping_histogram_300 = 48;
    if (cached_has_bits & 0x00000001u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_histogram_300());
    }

    // optional uint32 ping_histogram_max = 49;
    if (cached_has_bits & 0x00000002u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_histogram_max());
    }

    // optional uint32 ping_ntile_5th = 50;
    if (cached_has_bits & 0x00000004u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_ntile_5th());
    }

    // optional uint32 ping_ntile_50th = 51;
    if (cached_has_bits & 0x00000008u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_ntile_50th());
    }

    // optional uint32 ping_ntile_75th = 52;
    if (cached_has_bits & 0x00000010u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_ntile_75th());
    }

    // optional uint32 ping_ntile_95th = 53;
    if (cached_has_bits & 0x00000020u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_ntile_95th());
    }

    // optional uint32 ping_ntile_98th = 54;
    if (cached_has_bits & 0x00000040u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_ping_ntile_98th());
    }

    // optional uint32 jitter_histogram_negligible = 61;
    if (cached_has_bits & 0x00000080u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_jitter_histogram_negligible());
    }

  }
  if (cached_has_bits & 0x00001f00u) {
    // optional uint32 jitter_histogram_1 = 62;
    if (cached_has_bits & 0x00000100u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_jitter_histogram_1());
    }

    // optional uint32 jitter_histogram_2 = 63;
    if (cached_has_bits & 0x00000200u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_jitter_histogram_2());
    }

    // optional uint32 jitter_histogram_5 = 64;
    if (cached_has_bits & 0x00000400u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_jitter_histogram_5());
    }

    // optional uint32 jitter_histogram_10 = 65;
    if (cached_has_bits & 0x00000800u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_jitter_histogram_10());
    }

    // optional uint32 jitter_histogram_20 = 66;
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_jitter_histogram_20());
    }

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

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


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

  _this->_impl_.multipath_packets_recv_sequenced_.MergeFrom(from._impl_.multipath_packets_recv_sequenced_);
  _this->_impl_.multipath_packets_recv_later_.MergeFrom(from._impl_.multipath_packets_recv_later_);
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_impl_.packets_sent_ = from._impl_.packets_sent_;
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.kb_sent_ = from._impl_.kb_sent_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.packets_recv_ = from._impl_.packets_recv_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.kb_recv_ = from._impl_.kb_recv_;
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.packets_recv_sequenced_ = from._impl_.packets_recv_sequenced_;
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_impl_.packets_recv_dropped_ = from._impl_.packets_recv_dropped_;
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_impl_.connected_seconds_ = from._impl_.connected_seconds_;
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_impl_.multipath_send_enabled_ = from._impl_.multipath_send_enabled_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      _this->_impl_.packets_recv_out_of_order_ = from._impl_.packets_recv_out_of_order_;
    }
    if (cached_has_bits & 0x00000200u) {
      _this->_impl_.packets_recv_duplicate_ = from._impl_.packets_recv_duplicate_;
    }
    if (cached_has_bits & 0x00000400u) {
      _this->_impl_.packets_recv_lurch_ = from._impl_.packets_recv_lurch_;
    }
    if (cached_has_bits & 0x00000800u) {
      _this->_impl_.packets_recv_out_of_order_corrected_ = from._impl_.packets_recv_out_of_order_corrected_;
    }
    if (cached_has_bits & 0x00001000u) {
      _this->_impl_.quality_histogram_100_ = from._impl_.quality_histogram_100_;
    }
    if (cached_has_bits & 0x00002000u) {
      _this->_impl_.quality_histogram_99_ = from._impl_.quality_histogram_99_;
    }
    if (cached_has_bits & 0x00004000u) {
      _this->_impl_.quality_histogram_97_ = from._impl_.quality_histogram_97_;
    }
    if (cached_has_bits & 0x00008000u) {
      _this->_impl_.quality_histogram_95_ = from._impl_.quality_histogram_95_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00ff0000u) {
    if (cached_has_bits & 0x00010000u) {
      _this->_impl_.quality_histogram_90_ = from._impl_.quality_histogram_90_;
    }
    if (cached_has_bits & 0x00020000u) {
      _this->_impl_.quality_histogram_75_ = from._impl_.quality_histogram_75_;
    }
    if (cached_has_bits & 0x00040000u) {
      _this->_impl_.quality_histogram_50_ = from._impl_.quality_histogram_50_;
    }
    if (cached_has_bits & 0x00080000u) {
      _this->_impl_.quality_histogram_1_ = from._impl_.quality_histogram_1_;
    }
    if (cached_has_bits & 0x00100000u) {
      _this->_impl_.quality_histogram_dead_ = from._impl_.quality_histogram_dead_;
    }
    if (cached_has_bits & 0x00200000u) {
      _this->_impl_.quality_ntile_2nd_ = from._impl_.quality_ntile_2nd_;
    }
    if (cached_has_bits & 0x00400000u) {
      _this->_impl_.quality_ntile_5th_ = from._impl_.quality_ntile_5th_;
    }
    if (cached_has_bits & 0x00800000u) {
      _this->_impl_.quality_ntile_25th_ = from._impl_.quality_ntile_25th_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0xff000000u) {
    if (cached_has_bits & 0x01000000u) {
      _this->_impl_.quality_ntile_50th_ = from._impl_.quality_ntile_50th_;
    }
    if (cached_has_bits & 0x02000000u) {
      _this->_impl_.ping_histogram_25_ = from._impl_.ping_histogram_25_;
    }
    if (cached_has_bits & 0x04000000u) {
      _this->_impl_.ping_histogram_50_ = from._impl_.ping_histogram_50_;
    }
    if (cached_has_bits & 0x08000000u) {
      _this->_impl_.ping_histogram_75_ = from._impl_.ping_histogram_75_;
    }
    if (cached_has_bits & 0x10000000u) {
      _this->_impl_.ping_histogram_100_ = from._impl_.ping_histogram_100_;
    }
    if (cached_has_bits & 0x20000000u) {
      _this->_impl_.ping_histogram_125_ = from._impl_.ping_histogram_125_;
    }
    if (cached_has_bits & 0x40000000u) {
      _this->_impl_.ping_histogram_150_ = from._impl_.ping_histogram_150_;
    }
    if (cached_has_bits & 0x80000000u) {
      _this->_impl_.ping_histogram_200_ = from._impl_.ping_histogram_200_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  cached_has_bits = from._impl_._has_bits_[1];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_impl_.ping_histogram_300_ = from._impl_.ping_histogram_300_;
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.ping_histogram_max_ = from._impl_.ping_histogram_max_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.ping_ntile_5th_ = from._impl_.ping_ntile_5th_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.ping_ntile_50th_ = from._impl_.ping_ntile_50th_;
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.ping_ntile_75th_ = from._impl_.ping_ntile_75th_;
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_impl_.ping_ntile_95th_ = from._impl_.ping_ntile_95th_;
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_impl_.ping_ntile_98th_ = from._impl_.ping_ntile_98th_;
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_impl_.jitter_histogram_negligible_ = from._impl_.jitter_histogram_negligible_;
    }
    _this->_impl_._has_bits_[1] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00001f00u) {
    if (cached_has_bits & 0x00000100u) {
      _this->_impl_.jitter_histogram_1_ = from._impl_.jitter_histogram_1_;
    }
    if (cached_has_bits & 0x00000200u) {
      _this->_impl_.jitter_histogram_2_ = from._impl_.jitter_histogram_2_;
    }
    if (cached_has_bits & 0x00000400u) {
      _this->_impl_.jitter_histogram_5_ = from._impl_.jitter_histogram_5_;
    }
    if (cached_has_bits & 0x00000800u) {
      _this->_impl_.jitter_histogram_10_ = from._impl_.jitter_histogram_10_;
    }
    if (cached_has_bits & 0x00001000u) {
      _this->_impl_.jitter_histogram_20_ = from._impl_.jitter_histogram_20_;
    }
    _this->_impl_._has_bits_[1] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamDatagramLinkLifetimeStats::InternalSwap(CMsgSteamDatagramLinkLifetimeStats* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
  _impl_.multipath_packets_recv_sequenced_.InternalSwap(&other->_impl_.multipath_packets_recv_sequenced_);
  _impl_.multipath_packets_recv_later_.InternalSwap(&other->_impl_.multipath_packets_recv_later_);
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CMsgSteamDatagramLinkLifetimeStats, _impl_.jitter_histogram_20_)
      + sizeof(CMsgSteamDatagramLinkLifetimeStats::_impl_.jitter_histogram_20_)
      - PROTOBUF_FIELD_OFFSET(CMsgSteamDatagramLinkLifetimeStats, _impl_.packets_sent_)>(
          reinterpret_cast<char*>(&_impl_.packets_sent_),
          reinterpret_cast<char*>(&other->_impl_.packets_sent_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamDatagramLinkLifetimeStats::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[4]);
}

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

class CMsgSteamDatagramConnectionQuality::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgSteamDatagramConnectionQuality>()._impl_._has_bits_);
  static const ::CMsgSteamDatagramLinkInstantaneousStats& instantaneous(const CMsgSteamDatagramConnectionQuality* msg);
  static void set_has_instantaneous(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::CMsgSteamDatagramLinkLifetimeStats& lifetime(const CMsgSteamDatagramConnectionQuality* msg);
  static void set_has_lifetime(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::CMsgSteamDatagramLinkInstantaneousStats&
CMsgSteamDatagramConnectionQuality::_Internal::instantaneous(const CMsgSteamDatagramConnectionQuality* msg) {
  return *msg->_impl_.instantaneous_;
}
const ::CMsgSteamDatagramLinkLifetimeStats&
CMsgSteamDatagramConnectionQuality::_Internal::lifetime(const CMsgSteamDatagramConnectionQuality* msg) {
  return *msg->_impl_.lifetime_;
}
CMsgSteamDatagramConnectionQuality::CMsgSteamDatagramConnectionQuality(::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:CMsgSteamDatagramConnectionQuality)
}
CMsgSteamDatagramConnectionQuality::CMsgSteamDatagramConnectionQuality(const CMsgSteamDatagramConnectionQuality& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamDatagramConnectionQuality* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.instantaneous_){nullptr}
    , decltype(_impl_.lifetime_){nullptr}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_instantaneous()) {
    _this->_impl_.instantaneous_ = new ::CMsgSteamDatagramLinkInstantaneousStats(*from._impl_.instantaneous_);
  }
  if (from._internal_has_lifetime()) {
    _this->_impl_.lifetime_ = new ::CMsgSteamDatagramLinkLifetimeStats(*from._impl_.lifetime_);
  }
  // @@protoc_insertion_point(copy_constructor:CMsgSteamDatagramConnectionQuality)
}

inline void CMsgSteamDatagramConnectionQuality::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_.instantaneous_){nullptr}
    , decltype(_impl_.lifetime_){nullptr}
  };
}

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

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

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

void CMsgSteamDatagramConnectionQuality::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamDatagramConnectionQuality)
  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_.instantaneous_ != nullptr);
      _impl_.instantaneous_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(_impl_.lifetime_ != nullptr);
      _impl_.lifetime_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamDatagramConnectionQuality::_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 .CMsgSteamDatagramLinkInstantaneousStats instantaneous = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_instantaneous(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CMsgSteamDatagramLinkLifetimeStats lifetime = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_lifetime(), 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* CMsgSteamDatagramConnectionQuality::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamDatagramConnectionQuality)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

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

size_t CMsgSteamDatagramConnectionQuality::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamDatagramConnectionQuality)
  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 .CMsgSteamDatagramLinkInstantaneousStats instantaneous = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.instantaneous_);
    }

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

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

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


void CMsgSteamDatagramConnectionQuality::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgSteamDatagramConnectionQuality*>(&to_msg);
  auto& from = static_cast<const CMsgSteamDatagramConnectionQuality&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgSteamDatagramConnectionQuality)
  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_instantaneous()->::CMsgSteamDatagramLinkInstantaneousStats::MergeFrom(
          from._internal_instantaneous());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_lifetime()->::CMsgSteamDatagramLinkLifetimeStats::MergeFrom(
          from._internal_lifetime());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamDatagramConnectionQuality::InternalSwap(CMsgSteamDatagramConnectionQuality* 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(CMsgSteamDatagramConnectionQuality, _impl_.lifetime_)
      + sizeof(CMsgSteamDatagramConnectionQuality::_impl_.lifetime_)
      - PROTOBUF_FIELD_OFFSET(CMsgSteamDatagramConnectionQuality, _impl_.instantaneous_)>(
          reinterpret_cast<char*>(&_impl_.instantaneous_),
          reinterpret_cast<char*>(&other->_impl_.instantaneous_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamDatagramConnectionQuality::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[5]);
}

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

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

CMsgICECandidate::CMsgICECandidate(::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:CMsgICECandidate)
}
CMsgICECandidate::CMsgICECandidate(const CMsgICECandidate& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgICECandidate* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.candidate_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.candidate_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.candidate_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_candidate()) {
    _this->_impl_.candidate_.Set(from._internal_candidate(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:CMsgICECandidate)
}

inline void CMsgICECandidate::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_.candidate_){}
  };
  _impl_.candidate_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.candidate_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

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

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

void CMsgICECandidate::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgICECandidate)
  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_.candidate_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgICECandidate::_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 candidate = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
          auto str = _internal_mutable_candidate();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CMsgICECandidate.candidate");
          #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* CMsgICECandidate::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgICECandidate)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

size_t CMsgICECandidate::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgICECandidate)
  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 candidate = 3;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_candidate());
  }

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

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


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

  if (from._internal_has_candidate()) {
    _this->_internal_set_candidate(from._internal_candidate());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgICECandidate::InternalSwap(CMsgICECandidate* 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_.candidate_, lhs_arena,
      &other->_impl_.candidate_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgICECandidate::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[6]);
}

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

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

CMsgICERendezvous_Auth::CMsgICERendezvous_Auth(::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:CMsgICERendezvous.Auth)
}
CMsgICERendezvous_Auth::CMsgICERendezvous_Auth(const CMsgICERendezvous_Auth& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgICERendezvous_Auth* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.pwd_frag_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.pwd_frag_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.pwd_frag_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_pwd_frag()) {
    _this->_impl_.pwd_frag_.Set(from._internal_pwd_frag(), 
      _this->GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:CMsgICERendezvous.Auth)
}

inline void CMsgICERendezvous_Auth::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_.pwd_frag_){}
  };
  _impl_.pwd_frag_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.pwd_frag_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

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

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

void CMsgICERendezvous_Auth::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgICERendezvous.Auth)
  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_.pwd_frag_.ClearNonDefaultToEmpty();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgICERendezvous_Auth::_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 pwd_frag = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          auto str = _internal_mutable_pwd_frag();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CMsgICERendezvous.Auth.pwd_frag");
          #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* CMsgICERendezvous_Auth::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgICERendezvous.Auth)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

size_t CMsgICERendezvous_Auth::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgICERendezvous.Auth)
  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 pwd_frag = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->_internal_pwd_frag());
  }

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

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


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

  if (from._internal_has_pwd_frag()) {
    _this->_internal_set_pwd_frag(from._internal_pwd_frag());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgICERendezvous_Auth::InternalSwap(CMsgICERendezvous_Auth* 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_.pwd_frag_, lhs_arena,
      &other->_impl_.pwd_frag_, rhs_arena
  );
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgICERendezvous_Auth::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[7]);
}

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

class CMsgICERendezvous::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgICERendezvous>()._impl_._has_bits_);
  static const ::CMsgICERendezvous_Auth& auth(const CMsgICERendezvous* msg);
  static void set_has_auth(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::CMsgICECandidate& add_candidate(const CMsgICERendezvous* msg);
  static void set_has_add_candidate(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::CMsgICERendezvous_Auth&
CMsgICERendezvous::_Internal::auth(const CMsgICERendezvous* msg) {
  return *msg->_impl_.auth_;
}
const ::CMsgICECandidate&
CMsgICERendezvous::_Internal::add_candidate(const CMsgICERendezvous* msg) {
  return *msg->_impl_.add_candidate_;
}
CMsgICERendezvous::CMsgICERendezvous(::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:CMsgICERendezvous)
}
CMsgICERendezvous::CMsgICERendezvous(const CMsgICERendezvous& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgICERendezvous* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.add_candidate_){nullptr}
    , decltype(_impl_.auth_){nullptr}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_add_candidate()) {
    _this->_impl_.add_candidate_ = new ::CMsgICECandidate(*from._impl_.add_candidate_);
  }
  if (from._internal_has_auth()) {
    _this->_impl_.auth_ = new ::CMsgICERendezvous_Auth(*from._impl_.auth_);
  }
  // @@protoc_insertion_point(copy_constructor:CMsgICERendezvous)
}

inline void CMsgICERendezvous::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_.add_candidate_){nullptr}
    , decltype(_impl_.auth_){nullptr}
  };
}

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

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

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

void CMsgICERendezvous::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgICERendezvous)
  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_.add_candidate_ != nullptr);
      _impl_.add_candidate_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(_impl_.auth_ != nullptr);
      _impl_.auth_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgICERendezvous::_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 .CMsgICECandidate add_candidate = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_add_candidate(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CMsgICERendezvous.Auth auth = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_auth(), 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* CMsgICERendezvous::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgICERendezvous)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

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

size_t CMsgICERendezvous::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgICERendezvous)
  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 .CMsgICECandidate add_candidate = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.add_candidate_);
    }

    // optional .CMsgICERendezvous.Auth auth = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.auth_);
    }

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

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


void CMsgICERendezvous::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgICERendezvous*>(&to_msg);
  auto& from = static_cast<const CMsgICERendezvous&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgICERendezvous)
  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_add_candidate()->::CMsgICECandidate::MergeFrom(
          from._internal_add_candidate());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_auth()->::CMsgICERendezvous_Auth::MergeFrom(
          from._internal_auth());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgICERendezvous::InternalSwap(CMsgICERendezvous* 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(CMsgICERendezvous, _impl_.auth_)
      + sizeof(CMsgICERendezvous::_impl_.auth_)
      - PROTOBUF_FIELD_OFFSET(CMsgICERendezvous, _impl_.add_candidate_)>(
          reinterpret_cast<char*>(&_impl_.add_candidate_),
          reinterpret_cast<char*>(&other->_impl_.add_candidate_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgICERendezvous::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[8]);
}

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

class CMsgSteamNetworkingP2PRendezvous_ConnectRequest::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgSteamNetworkingP2PRendezvous_ConnectRequest>()._impl_._has_bits_);
  static const ::CMsgSteamDatagramSessionCryptInfoSigned& crypt(const CMsgSteamNetworkingP2PRendezvous_ConnectRequest* msg);
  static void set_has_crypt(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::CMsgSteamDatagramCertificateSigned& cert(const CMsgSteamNetworkingP2PRendezvous_ConnectRequest* msg);
  static void set_has_cert(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_to_virtual_port(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_from_virtual_port(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_from_fakeip(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::CMsgSteamDatagramSessionCryptInfoSigned&
CMsgSteamNetworkingP2PRendezvous_ConnectRequest::_Internal::crypt(const CMsgSteamNetworkingP2PRendezvous_ConnectRequest* msg) {
  return *msg->_impl_.crypt_;
}
const ::CMsgSteamDatagramCertificateSigned&
CMsgSteamNetworkingP2PRendezvous_ConnectRequest::_Internal::cert(const CMsgSteamNetworkingP2PRendezvous_ConnectRequest* msg) {
  return *msg->_impl_.cert_;
}
void CMsgSteamNetworkingP2PRendezvous_ConnectRequest::clear_cert() {
  if (_impl_.cert_ != nullptr) _impl_.cert_->Clear();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
CMsgSteamNetworkingP2PRendezvous_ConnectRequest::CMsgSteamNetworkingP2PRendezvous_ConnectRequest(::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:CMsgSteamNetworkingP2PRendezvous.ConnectRequest)
}
CMsgSteamNetworkingP2PRendezvous_ConnectRequest::CMsgSteamNetworkingP2PRendezvous_ConnectRequest(const CMsgSteamNetworkingP2PRendezvous_ConnectRequest& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamNetworkingP2PRendezvous_ConnectRequest* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.from_fakeip_){}
    , decltype(_impl_.crypt_){nullptr}
    , decltype(_impl_.cert_){nullptr}
    , decltype(_impl_.to_virtual_port_){}
    , decltype(_impl_.from_virtual_port_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.from_fakeip_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.from_fakeip_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_from_fakeip()) {
    _this->_impl_.from_fakeip_.Set(from._internal_from_fakeip(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_crypt()) {
    _this->_impl_.crypt_ = new ::CMsgSteamDatagramSessionCryptInfoSigned(*from._impl_.crypt_);
  }
  if (from._internal_has_cert()) {
    _this->_impl_.cert_ = new ::CMsgSteamDatagramCertificateSigned(*from._impl_.cert_);
  }
  ::memcpy(&_impl_.to_virtual_port_, &from._impl_.to_virtual_port_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.from_virtual_port_) -
    reinterpret_cast<char*>(&_impl_.to_virtual_port_)) + sizeof(_impl_.from_virtual_port_));
  // @@protoc_insertion_point(copy_constructor:CMsgSteamNetworkingP2PRendezvous.ConnectRequest)
}

inline void CMsgSteamNetworkingP2PRendezvous_ConnectRequest::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_.from_fakeip_){}
    , decltype(_impl_.crypt_){nullptr}
    , decltype(_impl_.cert_){nullptr}
    , decltype(_impl_.to_virtual_port_){0u}
    , decltype(_impl_.from_virtual_port_){0u}
  };
  _impl_.from_fakeip_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.from_fakeip_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CMsgSteamNetworkingP2PRendezvous_ConnectRequest::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.from_fakeip_.Destroy();
  if (this != internal_default_instance()) delete _impl_.crypt_;
  if (this != internal_default_instance()) delete _impl_.cert_;
}

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

void CMsgSteamNetworkingP2PRendezvous_ConnectRequest::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamNetworkingP2PRendezvous.ConnectRequest)
  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) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.from_fakeip_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(_impl_.crypt_ != nullptr);
      _impl_.crypt_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      GOOGLE_DCHECK(_impl_.cert_ != nullptr);
      _impl_.cert_->Clear();
    }
  }
  if (cached_has_bits & 0x00000018u) {
    ::memset(&_impl_.to_virtual_port_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.from_virtual_port_) -
        reinterpret_cast<char*>(&_impl_.to_virtual_port_)) + sizeof(_impl_.from_virtual_port_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamNetworkingP2PRendezvous_ConnectRequest::_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 .CMsgSteamDatagramSessionCryptInfoSigned crypt = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_crypt(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CMsgSteamDatagramCertificateSigned cert = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
          ptr = ctx->ParseMessage(_internal_mutable_cert(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 to_virtual_port = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
          _Internal::set_has_to_virtual_port(&has_bits);
          _impl_.to_virtual_port_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 from_virtual_port = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 80)) {
          _Internal::set_has_from_virtual_port(&has_bits);
          _impl_.from_virtual_port_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string from_fakeip = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 90)) {
          auto str = _internal_mutable_from_fakeip();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CMsgSteamNetworkingP2PRendezvous.ConnectRequest.from_fakeip");
          #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* CMsgSteamNetworkingP2PRendezvous_ConnectRequest::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamNetworkingP2PRendezvous.ConnectRequest)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

  // optional .CMsgSteamDatagramCertificateSigned cert = 7;
  if (cached_has_bits & 0x00000004u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(7, _Internal::cert(this),
        _Internal::cert(this).GetCachedSize(), target, stream);
  }

  // optional uint32 to_virtual_port = 9;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(9, this->_internal_to_virtual_port(), target);
  }

  // optional uint32 from_virtual_port = 10;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(10, this->_internal_from_virtual_port(), target);
  }

  // optional string from_fakeip = 11;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_from_fakeip().data(), static_cast<int>(this->_internal_from_fakeip().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CMsgSteamNetworkingP2PRendezvous.ConnectRequest.from_fakeip");
    target = stream->WriteStringMaybeAliased(
        11, this->_internal_from_fakeip(), 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:CMsgSteamNetworkingP2PRendezvous.ConnectRequest)
  return target;
}

size_t CMsgSteamNetworkingP2PRendezvous_ConnectRequest::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamNetworkingP2PRendezvous.ConnectRequest)
  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 from_fakeip = 11;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_from_fakeip());
    }

    // optional .CMsgSteamDatagramSessionCryptInfoSigned crypt = 6;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.crypt_);
    }

    // optional .CMsgSteamDatagramCertificateSigned cert = 7;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.cert_);
    }

    // optional uint32 to_virtual_port = 9;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_to_virtual_port());
    }

    // optional uint32 from_virtual_port = 10;
    if (cached_has_bits & 0x00000010u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_from_virtual_port());
    }

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

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


void CMsgSteamNetworkingP2PRendezvous_ConnectRequest::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgSteamNetworkingP2PRendezvous_ConnectRequest*>(&to_msg);
  auto& from = static_cast<const CMsgSteamNetworkingP2PRendezvous_ConnectRequest&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgSteamNetworkingP2PRendezvous.ConnectRequest)
  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_from_fakeip(from._internal_from_fakeip());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_crypt()->::CMsgSteamDatagramSessionCryptInfoSigned::MergeFrom(
          from._internal_crypt());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_mutable_cert()->::CMsgSteamDatagramCertificateSigned::MergeFrom(
          from._internal_cert());
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.to_virtual_port_ = from._impl_.to_virtual_port_;
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.from_virtual_port_ = from._impl_.from_virtual_port_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamNetworkingP2PRendezvous_ConnectRequest::InternalSwap(CMsgSteamNetworkingP2PRendezvous_ConnectRequest* 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_.from_fakeip_, lhs_arena,
      &other->_impl_.from_fakeip_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CMsgSteamNetworkingP2PRendezvous_ConnectRequest, _impl_.from_virtual_port_)
      + sizeof(CMsgSteamNetworkingP2PRendezvous_ConnectRequest::_impl_.from_virtual_port_)
      - PROTOBUF_FIELD_OFFSET(CMsgSteamNetworkingP2PRendezvous_ConnectRequest, _impl_.crypt_)>(
          reinterpret_cast<char*>(&_impl_.crypt_),
          reinterpret_cast<char*>(&other->_impl_.crypt_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamNetworkingP2PRendezvous_ConnectRequest::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[9]);
}

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

class CMsgSteamNetworkingP2PRendezvous_ConnectOK::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgSteamNetworkingP2PRendezvous_ConnectOK>()._impl_._has_bits_);
  static const ::CMsgSteamDatagramSessionCryptInfoSigned& crypt(const CMsgSteamNetworkingP2PRendezvous_ConnectOK* msg);
  static void set_has_crypt(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::CMsgSteamDatagramCertificateSigned& cert(const CMsgSteamNetworkingP2PRendezvous_ConnectOK* msg);
  static void set_has_cert(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::CMsgSteamDatagramSessionCryptInfoSigned&
CMsgSteamNetworkingP2PRendezvous_ConnectOK::_Internal::crypt(const CMsgSteamNetworkingP2PRendezvous_ConnectOK* msg) {
  return *msg->_impl_.crypt_;
}
const ::CMsgSteamDatagramCertificateSigned&
CMsgSteamNetworkingP2PRendezvous_ConnectOK::_Internal::cert(const CMsgSteamNetworkingP2PRendezvous_ConnectOK* msg) {
  return *msg->_impl_.cert_;
}
void CMsgSteamNetworkingP2PRendezvous_ConnectOK::clear_cert() {
  if (_impl_.cert_ != nullptr) _impl_.cert_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
CMsgSteamNetworkingP2PRendezvous_ConnectOK::CMsgSteamNetworkingP2PRendezvous_ConnectOK(::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:CMsgSteamNetworkingP2PRendezvous.ConnectOK)
}
CMsgSteamNetworkingP2PRendezvous_ConnectOK::CMsgSteamNetworkingP2PRendezvous_ConnectOK(const CMsgSteamNetworkingP2PRendezvous_ConnectOK& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamNetworkingP2PRendezvous_ConnectOK* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.crypt_){nullptr}
    , decltype(_impl_.cert_){nullptr}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_crypt()) {
    _this->_impl_.crypt_ = new ::CMsgSteamDatagramSessionCryptInfoSigned(*from._impl_.crypt_);
  }
  if (from._internal_has_cert()) {
    _this->_impl_.cert_ = new ::CMsgSteamDatagramCertificateSigned(*from._impl_.cert_);
  }
  // @@protoc_insertion_point(copy_constructor:CMsgSteamNetworkingP2PRendezvous.ConnectOK)
}

inline void CMsgSteamNetworkingP2PRendezvous_ConnectOK::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_.crypt_){nullptr}
    , decltype(_impl_.cert_){nullptr}
  };
}

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

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

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

void CMsgSteamNetworkingP2PRendezvous_ConnectOK::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamNetworkingP2PRendezvous.ConnectOK)
  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_.crypt_ != nullptr);
      _impl_.crypt_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(_impl_.cert_ != nullptr);
      _impl_.cert_->Clear();
    }
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamNetworkingP2PRendezvous_ConnectOK::_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 .CMsgSteamDatagramSessionCryptInfoSigned crypt = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_crypt(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CMsgSteamDatagramCertificateSigned cert = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_cert(), 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* CMsgSteamNetworkingP2PRendezvous_ConnectOK::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamNetworkingP2PRendezvous.ConnectOK)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

  // optional .CMsgSteamDatagramCertificateSigned cert = 6;
  if (cached_has_bits & 0x00000002u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::cert(this),
        _Internal::cert(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:CMsgSteamNetworkingP2PRendezvous.ConnectOK)
  return target;
}

size_t CMsgSteamNetworkingP2PRendezvous_ConnectOK::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamNetworkingP2PRendezvous.ConnectOK)
  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 .CMsgSteamDatagramSessionCryptInfoSigned crypt = 5;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.crypt_);
    }

    // optional .CMsgSteamDatagramCertificateSigned cert = 6;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.cert_);
    }

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

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


void CMsgSteamNetworkingP2PRendezvous_ConnectOK::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgSteamNetworkingP2PRendezvous_ConnectOK*>(&to_msg);
  auto& from = static_cast<const CMsgSteamNetworkingP2PRendezvous_ConnectOK&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgSteamNetworkingP2PRendezvous.ConnectOK)
  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_crypt()->::CMsgSteamDatagramSessionCryptInfoSigned::MergeFrom(
          from._internal_crypt());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_mutable_cert()->::CMsgSteamDatagramCertificateSigned::MergeFrom(
          from._internal_cert());
    }
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamNetworkingP2PRendezvous_ConnectOK::InternalSwap(CMsgSteamNetworkingP2PRendezvous_ConnectOK* 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(CMsgSteamNetworkingP2PRendezvous_ConnectOK, _impl_.cert_)
      + sizeof(CMsgSteamNetworkingP2PRendezvous_ConnectOK::_impl_.cert_)
      - PROTOBUF_FIELD_OFFSET(CMsgSteamNetworkingP2PRendezvous_ConnectOK, _impl_.crypt_)>(
          reinterpret_cast<char*>(&_impl_.crypt_),
          reinterpret_cast<char*>(&other->_impl_.crypt_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamNetworkingP2PRendezvous_ConnectOK::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[10]);
}

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

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

CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed(::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:CMsgSteamNetworkingP2PRendezvous.ConnectionClosed)
}
CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed(const CMsgSteamNetworkingP2PRendezvous_ConnectionClosed& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamNetworkingP2PRendezvous_ConnectionClosed* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.debug_){}
    , decltype(_impl_.reason_code_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.debug_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.debug_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_debug()) {
    _this->_impl_.debug_.Set(from._internal_debug(), 
      _this->GetArenaForAllocation());
  }
  _this->_impl_.reason_code_ = from._impl_.reason_code_;
  // @@protoc_insertion_point(copy_constructor:CMsgSteamNetworkingP2PRendezvous.ConnectionClosed)
}

inline void CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::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_.debug_){}
    , decltype(_impl_.reason_code_){0u}
  };
  _impl_.debug_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.debug_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

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

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

void CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamNetworkingP2PRendezvous.ConnectionClosed)
  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_.debug_.ClearNonDefaultToEmpty();
  }
  _impl_.reason_code_ = 0u;
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::_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 debug = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          auto str = _internal_mutable_debug();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CMsgSteamNetworkingP2PRendezvous.ConnectionClosed.debug");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional uint32 reason_code = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _Internal::set_has_reason_code(&has_bits);
          _impl_.reason_code_ = ::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* CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamNetworkingP2PRendezvous.ConnectionClosed)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // optional string debug = 5;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
      this->_internal_debug().data(), static_cast<int>(this->_internal_debug().length()),
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
      "CMsgSteamNetworkingP2PRendezvous.ConnectionClosed.debug");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_debug(), target);
  }

  // optional uint32 reason_code = 6;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(6, this->_internal_reason_code(), 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:CMsgSteamNetworkingP2PRendezvous.ConnectionClosed)
  return target;
}

size_t CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamNetworkingP2PRendezvous.ConnectionClosed)
  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 debug = 5;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->_internal_debug());
    }

    // optional uint32 reason_code = 6;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_reason_code());
    }

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

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


void CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgSteamNetworkingP2PRendezvous_ConnectionClosed*>(&to_msg);
  auto& from = static_cast<const CMsgSteamNetworkingP2PRendezvous_ConnectionClosed&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgSteamNetworkingP2PRendezvous.ConnectionClosed)
  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_debug(from._internal_debug());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.reason_code_ = from._impl_.reason_code_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::InternalSwap(CMsgSteamNetworkingP2PRendezvous_ConnectionClosed* 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_.debug_, lhs_arena,
      &other->_impl_.debug_, rhs_arena
  );
  swap(_impl_.reason_code_, other->_impl_.reason_code_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[11]);
}

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

class CMsgSteamNetworkingP2PRendezvous_ReliableMessage::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgSteamNetworkingP2PRendezvous_ReliableMessage>()._impl_._has_bits_);
  static const ::CMsgICERendezvous& ice(const CMsgSteamNetworkingP2PRendezvous_ReliableMessage* msg);
  static void set_has_ice(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::CMsgICERendezvous&
CMsgSteamNetworkingP2PRendezvous_ReliableMessage::_Internal::ice(const CMsgSteamNetworkingP2PRendezvous_ReliableMessage* msg) {
  return *msg->_impl_.ice_;
}
CMsgSteamNetworkingP2PRendezvous_ReliableMessage::CMsgSteamNetworkingP2PRendezvous_ReliableMessage(::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:CMsgSteamNetworkingP2PRendezvous.ReliableMessage)
}
CMsgSteamNetworkingP2PRendezvous_ReliableMessage::CMsgSteamNetworkingP2PRendezvous_ReliableMessage(const CMsgSteamNetworkingP2PRendezvous_ReliableMessage& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamNetworkingP2PRendezvous_ReliableMessage* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.ice_){nullptr}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  if (from._internal_has_ice()) {
    _this->_impl_.ice_ = new ::CMsgICERendezvous(*from._impl_.ice_);
  }
  // @@protoc_insertion_point(copy_constructor:CMsgSteamNetworkingP2PRendezvous.ReliableMessage)
}

inline void CMsgSteamNetworkingP2PRendezvous_ReliableMessage::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_.ice_){nullptr}
  };
}

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

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

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

void CMsgSteamNetworkingP2PRendezvous_ReliableMessage::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamNetworkingP2PRendezvous.ReliableMessage)
  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_.ice_ != nullptr);
    _impl_.ice_->Clear();
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamNetworkingP2PRendezvous_ReliableMessage::_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 .CMsgICERendezvous ice = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
          ptr = ctx->ParseMessage(_internal_mutable_ice(), 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* CMsgSteamNetworkingP2PRendezvous_ReliableMessage::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamNetworkingP2PRendezvous.ReliableMessage)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // optional .CMsgICERendezvous ice = 1;
  if (cached_has_bits & 0x00000001u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(1, _Internal::ice(this),
        _Internal::ice(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:CMsgSteamNetworkingP2PRendezvous.ReliableMessage)
  return target;
}

size_t CMsgSteamNetworkingP2PRendezvous_ReliableMessage::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamNetworkingP2PRendezvous.ReliableMessage)
  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 .CMsgICERendezvous ice = 1;
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
        *_impl_.ice_);
  }

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

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


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

  if (from._internal_has_ice()) {
    _this->_internal_mutable_ice()->::CMsgICERendezvous::MergeFrom(
        from._internal_ice());
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamNetworkingP2PRendezvous_ReliableMessage::InternalSwap(CMsgSteamNetworkingP2PRendezvous_ReliableMessage* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  swap(_impl_.ice_, other->_impl_.ice_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamNetworkingP2PRendezvous_ReliableMessage::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[12]);
}

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

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

CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage(::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:CMsgSteamNetworkingP2PRendezvous.ApplicationMessage)
}
CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage(const CMsgSteamNetworkingP2PRendezvous_ApplicationMessage& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamNetworkingP2PRendezvous_ApplicationMessage* 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_.msg_num_){}
    , decltype(_impl_.flags_){}
    , decltype(_impl_.lane_idx_){}};

  _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_.msg_num_, &from._impl_.msg_num_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.lane_idx_) -
    reinterpret_cast<char*>(&_impl_.msg_num_)) + sizeof(_impl_.lane_idx_));
  // @@protoc_insertion_point(copy_constructor:CMsgSteamNetworkingP2PRendezvous.ApplicationMessage)
}

inline void CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::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_.msg_num_){uint64_t{0u}}
    , decltype(_impl_.flags_){0u}
    , decltype(_impl_.lane_idx_){0u}
  };
  _impl_.data_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.data_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

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

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

void CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamNetworkingP2PRendezvous.ApplicationMessage)
  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_.msg_num_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.lane_idx_) -
        reinterpret_cast<char*>(&_impl_.msg_num_)) + sizeof(_impl_.lane_idx_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::_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 uint64 msg_num = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_msg_num(&has_bits);
          _impl_.msg_num_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 flags = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_flags(&has_bits);
          _impl_.flags_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 lane_idx = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _Internal::set_has_lane_idx(&has_bits);
          _impl_.lane_idx_ = ::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* CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamNetworkingP2PRendezvous.ApplicationMessage)
  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 uint64 msg_num = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt64ToArray(2, this->_internal_msg_num(), target);
  }

  // optional uint32 flags = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(3, this->_internal_flags(), target);
  }

  // optional uint32 lane_idx = 4;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(4, this->_internal_lane_idx(), 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:CMsgSteamNetworkingP2PRendezvous.ApplicationMessage)
  return target;
}

size_t CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamNetworkingP2PRendezvous.ApplicationMessage)
  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 uint64 msg_num = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += ::_pbi::WireFormatLite::UInt64SizePlusOne(this->_internal_msg_num());
    }

    // optional uint32 flags = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_flags());
    }

    // optional uint32 lane_idx = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_lane_idx());
    }

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

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


void CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgSteamNetworkingP2PRendezvous_ApplicationMessage*>(&to_msg);
  auto& from = static_cast<const CMsgSteamNetworkingP2PRendezvous_ApplicationMessage&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgSteamNetworkingP2PRendezvous.ApplicationMessage)
  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_.msg_num_ = from._impl_.msg_num_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.flags_ = from._impl_.flags_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.lane_idx_ = from._impl_.lane_idx_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::InternalSwap(CMsgSteamNetworkingP2PRendezvous_ApplicationMessage* 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(CMsgSteamNetworkingP2PRendezvous_ApplicationMessage, _impl_.lane_idx_)
      + sizeof(CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::_impl_.lane_idx_)
      - PROTOBUF_FIELD_OFFSET(CMsgSteamNetworkingP2PRendezvous_ApplicationMessage, _impl_.msg_num_)>(
          reinterpret_cast<char*>(&_impl_.msg_num_),
          reinterpret_cast<char*>(&other->_impl_.msg_num_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamNetworkingP2PRendezvous_ApplicationMessage::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[13]);
}

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

class CMsgSteamNetworkingP2PRendezvous::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgSteamNetworkingP2PRendezvous>()._impl_._has_bits_);
  static void set_has_from_identity(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_from_connection_id(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_to_identity(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_to_connection_id(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_sdr_routes(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_ack_peer_routes_revision(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_ice_enabled(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_hosted_server_ticket(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::CMsgSteamNetworkingP2PRendezvous_ConnectRequest& connect_request(const CMsgSteamNetworkingP2PRendezvous* msg);
  static void set_has_connect_request(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::CMsgSteamNetworkingP2PRendezvous_ConnectOK& connect_ok(const CMsgSteamNetworkingP2PRendezvous* msg);
  static void set_has_connect_ok(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static const ::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed& connection_closed(const CMsgSteamNetworkingP2PRendezvous* msg);
  static void set_has_connection_closed(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_ack_reliable_msg(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_first_reliable_msg(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
};

const ::CMsgSteamNetworkingP2PRendezvous_ConnectRequest&
CMsgSteamNetworkingP2PRendezvous::_Internal::connect_request(const CMsgSteamNetworkingP2PRendezvous* msg) {
  return *msg->_impl_.connect_request_;
}
const ::CMsgSteamNetworkingP2PRendezvous_ConnectOK&
CMsgSteamNetworkingP2PRendezvous::_Internal::connect_ok(const CMsgSteamNetworkingP2PRendezvous* msg) {
  return *msg->_impl_.connect_ok_;
}
const ::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed&
CMsgSteamNetworkingP2PRendezvous::_Internal::connection_closed(const CMsgSteamNetworkingP2PRendezvous* msg) {
  return *msg->_impl_.connection_closed_;
}
CMsgSteamNetworkingP2PRendezvous::CMsgSteamNetworkingP2PRendezvous(::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:CMsgSteamNetworkingP2PRendezvous)
}
CMsgSteamNetworkingP2PRendezvous::CMsgSteamNetworkingP2PRendezvous(const CMsgSteamNetworkingP2PRendezvous& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamNetworkingP2PRendezvous* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.reliable_messages_){from._impl_.reliable_messages_}
    , decltype(_impl_.application_messages_){from._impl_.application_messages_}
    , decltype(_impl_.sdr_routes_){}
    , decltype(_impl_.from_identity_){}
    , decltype(_impl_.to_identity_){}
    , decltype(_impl_.hosted_server_ticket_){}
    , decltype(_impl_.connect_request_){nullptr}
    , decltype(_impl_.connect_ok_){nullptr}
    , decltype(_impl_.connection_closed_){nullptr}
    , decltype(_impl_.to_connection_id_){}
    , decltype(_impl_.ack_peer_routes_revision_){}
    , decltype(_impl_.ice_enabled_){}
    , decltype(_impl_.from_connection_id_){}
    , decltype(_impl_.ack_reliable_msg_){}
    , decltype(_impl_.first_reliable_msg_){}};

  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  _impl_.sdr_routes_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.sdr_routes_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_sdr_routes()) {
    _this->_impl_.sdr_routes_.Set(from._internal_sdr_routes(), 
      _this->GetArenaForAllocation());
  }
  _impl_.from_identity_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.from_identity_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_from_identity()) {
    _this->_impl_.from_identity_.Set(from._internal_from_identity(), 
      _this->GetArenaForAllocation());
  }
  _impl_.to_identity_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.to_identity_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_to_identity()) {
    _this->_impl_.to_identity_.Set(from._internal_to_identity(), 
      _this->GetArenaForAllocation());
  }
  _impl_.hosted_server_ticket_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.hosted_server_ticket_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (from._internal_has_hosted_server_ticket()) {
    _this->_impl_.hosted_server_ticket_.Set(from._internal_hosted_server_ticket(), 
      _this->GetArenaForAllocation());
  }
  if (from._internal_has_connect_request()) {
    _this->_impl_.connect_request_ = new ::CMsgSteamNetworkingP2PRendezvous_ConnectRequest(*from._impl_.connect_request_);
  }
  if (from._internal_has_connect_ok()) {
    _this->_impl_.connect_ok_ = new ::CMsgSteamNetworkingP2PRendezvous_ConnectOK(*from._impl_.connect_ok_);
  }
  if (from._internal_has_connection_closed()) {
    _this->_impl_.connection_closed_ = new ::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed(*from._impl_.connection_closed_);
  }
  ::memcpy(&_impl_.to_connection_id_, &from._impl_.to_connection_id_,
    static_cast<size_t>(reinterpret_cast<char*>(&_impl_.first_reliable_msg_) -
    reinterpret_cast<char*>(&_impl_.to_connection_id_)) + sizeof(_impl_.first_reliable_msg_));
  // @@protoc_insertion_point(copy_constructor:CMsgSteamNetworkingP2PRendezvous)
}

inline void CMsgSteamNetworkingP2PRendezvous::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_.reliable_messages_){arena}
    , decltype(_impl_.application_messages_){arena}
    , decltype(_impl_.sdr_routes_){}
    , decltype(_impl_.from_identity_){}
    , decltype(_impl_.to_identity_){}
    , decltype(_impl_.hosted_server_ticket_){}
    , decltype(_impl_.connect_request_){nullptr}
    , decltype(_impl_.connect_ok_){nullptr}
    , decltype(_impl_.connection_closed_){nullptr}
    , decltype(_impl_.to_connection_id_){0u}
    , decltype(_impl_.ack_peer_routes_revision_){0u}
    , decltype(_impl_.ice_enabled_){false}
    , decltype(_impl_.from_connection_id_){0u}
    , decltype(_impl_.ack_reliable_msg_){0u}
    , decltype(_impl_.first_reliable_msg_){0u}
  };
  _impl_.sdr_routes_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.sdr_routes_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.from_identity_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.from_identity_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.to_identity_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.to_identity_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  _impl_.hosted_server_ticket_.InitDefault();
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
    _impl_.hosted_server_ticket_.Set("", GetArenaForAllocation());
  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
}

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

inline void CMsgSteamNetworkingP2PRendezvous::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  _impl_.reliable_messages_.~RepeatedPtrField();
  _impl_.application_messages_.~RepeatedPtrField();
  _impl_.sdr_routes_.Destroy();
  _impl_.from_identity_.Destroy();
  _impl_.to_identity_.Destroy();
  _impl_.hosted_server_ticket_.Destroy();
  if (this != internal_default_instance()) delete _impl_.connect_request_;
  if (this != internal_default_instance()) delete _impl_.connect_ok_;
  if (this != internal_default_instance()) delete _impl_.connection_closed_;
}

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

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

  _impl_.reliable_messages_.Clear();
  _impl_.application_messages_.Clear();
  cached_has_bits = _impl_._has_bits_[0];
  if (cached_has_bits & 0x0000007fu) {
    if (cached_has_bits & 0x00000001u) {
      _impl_.sdr_routes_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000002u) {
      _impl_.from_identity_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000004u) {
      _impl_.to_identity_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000008u) {
      _impl_.hosted_server_ticket_.ClearNonDefaultToEmpty();
    }
    if (cached_has_bits & 0x00000010u) {
      GOOGLE_DCHECK(_impl_.connect_request_ != nullptr);
      _impl_.connect_request_->Clear();
    }
    if (cached_has_bits & 0x00000020u) {
      GOOGLE_DCHECK(_impl_.connect_ok_ != nullptr);
      _impl_.connect_ok_->Clear();
    }
    if (cached_has_bits & 0x00000040u) {
      GOOGLE_DCHECK(_impl_.connection_closed_ != nullptr);
      _impl_.connection_closed_->Clear();
    }
  }
  _impl_.to_connection_id_ = 0u;
  if (cached_has_bits & 0x00001f00u) {
    ::memset(&_impl_.ack_peer_routes_revision_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.first_reliable_msg_) -
        reinterpret_cast<char*>(&_impl_.ack_peer_routes_revision_)) + sizeof(_impl_.first_reliable_msg_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamNetworkingP2PRendezvous::_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 fixed32 to_connection_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 13)) {
          _Internal::set_has_to_connection_id(&has_bits);
          _impl_.to_connection_id_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<uint32_t>(ptr);
          ptr += sizeof(uint32_t);
        } else
          goto handle_unusual;
        continue;
      // optional bytes sdr_routes = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
          auto str = _internal_mutable_sdr_routes();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ack_peer_routes_revision = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_ack_peer_routes_revision(&has_bits);
          _impl_.ack_peer_routes_revision_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CMsgSteamNetworkingP2PRendezvous.ConnectRequest connect_request = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
          ptr = ctx->ParseMessage(_internal_mutable_connect_request(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CMsgSteamNetworkingP2PRendezvous.ConnectOK connect_ok = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
          ptr = ctx->ParseMessage(_internal_mutable_connect_ok(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional .CMsgSteamNetworkingP2PRendezvous.ConnectionClosed connection_closed = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 50)) {
          ptr = ctx->ParseMessage(_internal_mutable_connection_closed(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional bool ice_enabled = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _Internal::set_has_ice_enabled(&has_bits);
          _impl_.ice_enabled_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional string from_identity = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 66)) {
          auto str = _internal_mutable_from_identity();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CMsgSteamNetworkingP2PRendezvous.from_identity");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional fixed32 from_connection_id = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 77)) {
          _Internal::set_has_from_connection_id(&has_bits);
          _impl_.from_connection_id_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<uint32_t>(ptr);
          ptr += sizeof(uint32_t);
        } else
          goto handle_unusual;
        continue;
      // optional string to_identity = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
          auto str = _internal_mutable_to_identity();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
          #ifndef NDEBUG
          ::_pbi::VerifyUTF8(str, "CMsgSteamNetworkingP2PRendezvous.to_identity");
          #endif  // !NDEBUG
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ack_reliable_msg = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 88)) {
          _Internal::set_has_ack_reliable_msg(&has_bits);
          _impl_.ack_reliable_msg_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 first_reliable_msg = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
          _Internal::set_has_first_reliable_msg(&has_bits);
          _impl_.first_reliable_msg_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .CMsgSteamNetworkingP2PRendezvous.ReliableMessage reliable_messages = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 106)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_reliable_messages(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<106>(ptr));
        } else
          goto handle_unusual;
        continue;
      // optional bytes hosted_server_ticket = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 114)) {
          auto str = _internal_mutable_hosted_server_ticket();
          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // repeated .CMsgSteamNetworkingP2PRendezvous.ApplicationMessage application_messages = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 122)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(_internal_add_application_messages(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<122>(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* CMsgSteamNetworkingP2PRendezvous::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamNetworkingP2PRendezvous)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _impl_._has_bits_[0];
  // optional fixed32 to_connection_id = 1;
  if (cached_has_bits & 0x00000080u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFixed32ToArray(1, this->_internal_to_connection_id(), target);
  }

  // optional bytes sdr_routes = 2;
  if (cached_has_bits & 0x00000001u) {
    target = stream->WriteBytesMaybeAliased(
        2, this->_internal_sdr_routes(), target);
  }

  // optional uint32 ack_peer_routes_revision = 3;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(3, this->_internal_ack_peer_routes_revision(), target);
  }

  // optional .CMsgSteamNetworkingP2PRendezvous.ConnectRequest connect_request = 4;
  if (cached_has_bits & 0x00000010u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(4, _Internal::connect_request(this),
        _Internal::connect_request(this).GetCachedSize(), target, stream);
  }

  // optional .CMsgSteamNetworkingP2PRendezvous.ConnectOK connect_ok = 5;
  if (cached_has_bits & 0x00000020u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(5, _Internal::connect_ok(this),
        _Internal::connect_ok(this).GetCachedSize(), target, stream);
  }

  // optional .CMsgSteamNetworkingP2PRendezvous.ConnectionClosed connection_closed = 6;
  if (cached_has_bits & 0x00000040u) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(6, _Internal::connection_closed(this),
        _Internal::connection_closed(this).GetCachedSize(), target, stream);
  }

  // optional bool ice_enabled = 7;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteBoolToArray(7, this->_internal_ice_enabled(), target);
  }

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

  // optional fixed32 from_connection_id = 9;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteFixed32ToArray(9, this->_internal_from_connection_id(), target);
  }

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

  // optional uint32 ack_reliable_msg = 11;
  if (cached_has_bits & 0x00000800u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(11, this->_internal_ack_reliable_msg(), target);
  }

  // optional uint32 first_reliable_msg = 12;
  if (cached_has_bits & 0x00001000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(12, this->_internal_first_reliable_msg(), target);
  }

  // repeated .CMsgSteamNetworkingP2PRendezvous.ReliableMessage reliable_messages = 13;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_reliable_messages_size()); i < n; i++) {
    const auto& repfield = this->_internal_reliable_messages(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(13, repfield, repfield.GetCachedSize(), target, stream);
  }

  // optional bytes hosted_server_ticket = 14;
  if (cached_has_bits & 0x00000008u) {
    target = stream->WriteBytesMaybeAliased(
        14, this->_internal_hosted_server_ticket(), target);
  }

  // repeated .CMsgSteamNetworkingP2PRendezvous.ApplicationMessage application_messages = 15;
  for (unsigned i = 0,
      n = static_cast<unsigned>(this->_internal_application_messages_size()); i < n; i++) {
    const auto& repfield = this->_internal_application_messages(i);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
        InternalWriteMessage(15, 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:CMsgSteamNetworkingP2PRendezvous)
  return target;
}

size_t CMsgSteamNetworkingP2PRendezvous::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamNetworkingP2PRendezvous)
  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 .CMsgSteamNetworkingP2PRendezvous.ReliableMessage reliable_messages = 13;
  total_size += 1UL * this->_internal_reliable_messages_size();
  for (const auto& msg : this->_impl_.reliable_messages_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

  // repeated .CMsgSteamNetworkingP2PRendezvous.ApplicationMessage application_messages = 15;
  total_size += 1UL * this->_internal_application_messages_size();
  for (const auto& msg : this->_impl_.application_messages_) {
    total_size +=
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
  }

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

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

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

    // optional bytes hosted_server_ticket = 14;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::BytesSize(
          this->_internal_hosted_server_ticket());
    }

    // optional .CMsgSteamNetworkingP2PRendezvous.ConnectRequest connect_request = 4;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.connect_request_);
    }

    // optional .CMsgSteamNetworkingP2PRendezvous.ConnectOK connect_ok = 5;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.connect_ok_);
    }

    // optional .CMsgSteamNetworkingP2PRendezvous.ConnectionClosed connection_closed = 6;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *_impl_.connection_closed_);
    }

    // optional fixed32 to_connection_id = 1;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 + 4;
    }

  }
  if (cached_has_bits & 0x00001f00u) {
    // optional uint32 ack_peer_routes_revision = 3;
    if (cached_has_bits & 0x00000100u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_ack_peer_routes_revision());
    }

    // optional bool ice_enabled = 7;
    if (cached_has_bits & 0x00000200u) {
      total_size += 1 + 1;
    }

    // optional fixed32 from_connection_id = 9;
    if (cached_has_bits & 0x00000400u) {
      total_size += 1 + 4;
    }

    // optional uint32 ack_reliable_msg = 11;
    if (cached_has_bits & 0x00000800u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_ack_reliable_msg());
    }

    // optional uint32 first_reliable_msg = 12;
    if (cached_has_bits & 0x00001000u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_first_reliable_msg());
    }

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

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


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

  _this->_impl_.reliable_messages_.MergeFrom(from._impl_.reliable_messages_);
  _this->_impl_.application_messages_.MergeFrom(from._impl_.application_messages_);
  cached_has_bits = from._impl_._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _this->_internal_set_sdr_routes(from._internal_sdr_routes());
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_internal_set_from_identity(from._internal_from_identity());
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_internal_set_to_identity(from._internal_to_identity());
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_internal_set_hosted_server_ticket(from._internal_hosted_server_ticket());
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_internal_mutable_connect_request()->::CMsgSteamNetworkingP2PRendezvous_ConnectRequest::MergeFrom(
          from._internal_connect_request());
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_internal_mutable_connect_ok()->::CMsgSteamNetworkingP2PRendezvous_ConnectOK::MergeFrom(
          from._internal_connect_ok());
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_internal_mutable_connection_closed()->::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed::MergeFrom(
          from._internal_connection_closed());
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_impl_.to_connection_id_ = from._impl_.to_connection_id_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00001f00u) {
    if (cached_has_bits & 0x00000100u) {
      _this->_impl_.ack_peer_routes_revision_ = from._impl_.ack_peer_routes_revision_;
    }
    if (cached_has_bits & 0x00000200u) {
      _this->_impl_.ice_enabled_ = from._impl_.ice_enabled_;
    }
    if (cached_has_bits & 0x00000400u) {
      _this->_impl_.from_connection_id_ = from._impl_.from_connection_id_;
    }
    if (cached_has_bits & 0x00000800u) {
      _this->_impl_.ack_reliable_msg_ = from._impl_.ack_reliable_msg_;
    }
    if (cached_has_bits & 0x00001000u) {
      _this->_impl_.first_reliable_msg_ = from._impl_.first_reliable_msg_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamNetworkingP2PRendezvous::InternalSwap(CMsgSteamNetworkingP2PRendezvous* 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_.reliable_messages_.InternalSwap(&other->_impl_.reliable_messages_);
  _impl_.application_messages_.InternalSwap(&other->_impl_.application_messages_);
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.sdr_routes_, lhs_arena,
      &other->_impl_.sdr_routes_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.from_identity_, lhs_arena,
      &other->_impl_.from_identity_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.to_identity_, lhs_arena,
      &other->_impl_.to_identity_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
      &_impl_.hosted_server_ticket_, lhs_arena,
      &other->_impl_.hosted_server_ticket_, rhs_arena
  );
  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
      PROTOBUF_FIELD_OFFSET(CMsgSteamNetworkingP2PRendezvous, _impl_.first_reliable_msg_)
      + sizeof(CMsgSteamNetworkingP2PRendezvous::_impl_.first_reliable_msg_)
      - PROTOBUF_FIELD_OFFSET(CMsgSteamNetworkingP2PRendezvous, _impl_.connect_request_)>(
          reinterpret_cast<char*>(&_impl_.connect_request_),
          reinterpret_cast<char*>(&other->_impl_.connect_request_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamNetworkingP2PRendezvous::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[14]);
}

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

class CMsgSteamNetworkingICESessionSummary::_Internal {
 public:
  using HasBits = decltype(std::declval<CMsgSteamNetworkingICESessionSummary>()._impl_._has_bits_);
  static void set_has_failure_reason_code(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_local_candidate_types(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_remote_candidate_types(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_initial_route_kind(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_initial_ping(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_initial_score(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_negotiation_ms(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_best_route_kind(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_best_ping(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static void set_has_best_score(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_best_time(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_selected_seconds(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_user_settings(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_ice_enable_var(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_local_candidate_types_allowed(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
};

CMsgSteamNetworkingICESessionSummary::CMsgSteamNetworkingICESessionSummary(::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:CMsgSteamNetworkingICESessionSummary)
}
CMsgSteamNetworkingICESessionSummary::CMsgSteamNetworkingICESessionSummary(const CMsgSteamNetworkingICESessionSummary& from)
  : ::PROTOBUF_NAMESPACE_ID::Message() {
  CMsgSteamNetworkingICESessionSummary* const _this = this; (void)_this;
  new (&_impl_) Impl_{
      decltype(_impl_._has_bits_){from._impl_._has_bits_}
    , /*decltype(_impl_._cached_size_)*/{}
    , decltype(_impl_.local_candidate_types_){}
    , decltype(_impl_.remote_candidate_types_){}
    , decltype(_impl_.initial_route_kind_){}
    , decltype(_impl_.initial_ping_){}
    , decltype(_impl_.negotiation_ms_){}
    , decltype(_impl_.initial_score_){}
    , decltype(_impl_.failure_reason_code_){}
    , decltype(_impl_.selected_seconds_){}
    , decltype(_impl_.user_settings_){}
    , decltype(_impl_.ice_enable_var_){}
    , decltype(_impl_.local_candidate_types_allowed_){}
    , decltype(_impl_.best_route_kind_){}
    , decltype(_impl_.best_ping_){}
    , decltype(_impl_.best_score_){}
    , decltype(_impl_.best_time_){}};

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

inline void CMsgSteamNetworkingICESessionSummary::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_.local_candidate_types_){0u}
    , decltype(_impl_.remote_candidate_types_){0u}
    , decltype(_impl_.initial_route_kind_){0u}
    , decltype(_impl_.initial_ping_){0u}
    , decltype(_impl_.negotiation_ms_){0u}
    , decltype(_impl_.initial_score_){0u}
    , decltype(_impl_.failure_reason_code_){0u}
    , decltype(_impl_.selected_seconds_){0u}
    , decltype(_impl_.user_settings_){0u}
    , decltype(_impl_.ice_enable_var_){0u}
    , decltype(_impl_.local_candidate_types_allowed_){0u}
    , decltype(_impl_.best_route_kind_){0u}
    , decltype(_impl_.best_ping_){0u}
    , decltype(_impl_.best_score_){0u}
    , decltype(_impl_.best_time_){0u}
  };
}

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

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

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

void CMsgSteamNetworkingICESessionSummary::Clear() {
// @@protoc_insertion_point(message_clear_start:CMsgSteamNetworkingICESessionSummary)
  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) {
    ::memset(&_impl_.local_candidate_types_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.selected_seconds_) -
        reinterpret_cast<char*>(&_impl_.local_candidate_types_)) + sizeof(_impl_.selected_seconds_));
  }
  if (cached_has_bits & 0x00007f00u) {
    ::memset(&_impl_.user_settings_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&_impl_.best_time_) -
        reinterpret_cast<char*>(&_impl_.user_settings_)) + sizeof(_impl_.best_time_));
  }
  _impl_._has_bits_.Clear();
  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}

const char* CMsgSteamNetworkingICESessionSummary::_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 local_candidate_types = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
          _Internal::set_has_local_candidate_types(&has_bits);
          _impl_.local_candidate_types_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 remote_candidate_types = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
          _Internal::set_has_remote_candidate_types(&has_bits);
          _impl_.remote_candidate_types_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 initial_route_kind = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
          _Internal::set_has_initial_route_kind(&has_bits);
          _impl_.initial_route_kind_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 initial_ping = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
          _Internal::set_has_initial_ping(&has_bits);
          _impl_.initial_ping_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 negotiation_ms = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
          _Internal::set_has_negotiation_ms(&has_bits);
          _impl_.negotiation_ms_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 initial_score = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
          _Internal::set_has_initial_score(&has_bits);
          _impl_.initial_score_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 failure_reason_code = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
          _Internal::set_has_failure_reason_code(&has_bits);
          _impl_.failure_reason_code_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 selected_seconds = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
          _Internal::set_has_selected_seconds(&has_bits);
          _impl_.selected_seconds_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 user_settings = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
          _Internal::set_has_user_settings(&has_bits);
          _impl_.user_settings_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 ice_enable_var = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 112)) {
          _Internal::set_has_ice_enable_var(&has_bits);
          _impl_.ice_enable_var_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 local_candidate_types_allowed = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
          _Internal::set_has_local_candidate_types_allowed(&has_bits);
          _impl_.local_candidate_types_allowed_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 best_route_kind = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 128)) {
          _Internal::set_has_best_route_kind(&has_bits);
          _impl_.best_route_kind_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 best_ping = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 136)) {
          _Internal::set_has_best_ping(&has_bits);
          _impl_.best_ping_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 best_score = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 144)) {
          _Internal::set_has_best_score(&has_bits);
          _impl_.best_score_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // optional uint32 best_time = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 152)) {
          _Internal::set_has_best_time(&has_bits);
          _impl_.best_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* CMsgSteamNetworkingICESessionSummary::_InternalSerialize(
    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:CMsgSteamNetworkingICESessionSummary)
  uint32_t cached_has_bits = 0;
  (void) cached_has_bits;

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

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

  // optional uint32 initial_route_kind = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(3, this->_internal_initial_route_kind(), target);
  }

  // optional uint32 initial_ping = 4;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(4, this->_internal_initial_ping(), target);
  }

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

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

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

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

  // optional uint32 user_settings = 13;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(13, this->_internal_user_settings(), target);
  }

  // optional uint32 ice_enable_var = 14;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(14, this->_internal_ice_enable_var(), target);
  }

  // optional uint32 local_candidate_types_allowed = 15;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(15, this->_internal_local_candidate_types_allowed(), target);
  }

  // optional uint32 best_route_kind = 16;
  if (cached_has_bits & 0x00000800u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(16, this->_internal_best_route_kind(), target);
  }

  // optional uint32 best_ping = 17;
  if (cached_has_bits & 0x00001000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(17, this->_internal_best_ping(), target);
  }

  // optional uint32 best_score = 18;
  if (cached_has_bits & 0x00002000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(18, this->_internal_best_score(), target);
  }

  // optional uint32 best_time = 19;
  if (cached_has_bits & 0x00004000u) {
    target = stream->EnsureSpace(target);
    target = ::_pbi::WireFormatLite::WriteUInt32ToArray(19, this->_internal_best_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:CMsgSteamNetworkingICESessionSummary)
  return target;
}

size_t CMsgSteamNetworkingICESessionSummary::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:CMsgSteamNetworkingICESessionSummary)
  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 & 0x000000ffu) {
    // optional uint32 local_candidate_types = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_local_candidate_types());
    }

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

    // optional uint32 initial_route_kind = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_initial_route_kind());
    }

    // optional uint32 initial_ping = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_initial_ping());
    }

    // optional uint32 negotiation_ms = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_negotiation_ms());
    }

    // optional uint32 initial_score = 6;
    if (cached_has_bits & 0x00000020u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_initial_score());
    }

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

    // optional uint32 selected_seconds = 12;
    if (cached_has_bits & 0x00000080u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_selected_seconds());
    }

  }
  if (cached_has_bits & 0x00007f00u) {
    // optional uint32 user_settings = 13;
    if (cached_has_bits & 0x00000100u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_user_settings());
    }

    // optional uint32 ice_enable_var = 14;
    if (cached_has_bits & 0x00000200u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_ice_enable_var());
    }

    // optional uint32 local_candidate_types_allowed = 15;
    if (cached_has_bits & 0x00000400u) {
      total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_local_candidate_types_allowed());
    }

    // optional uint32 best_route_kind = 16;
    if (cached_has_bits & 0x00000800u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_best_route_kind());
    }

    // optional uint32 best_ping = 17;
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_best_ping());
    }

    // optional uint32 best_score = 18;
    if (cached_has_bits & 0x00002000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_best_score());
    }

    // optional uint32 best_time = 19;
    if (cached_has_bits & 0x00004000u) {
      total_size += 2 +
        ::_pbi::WireFormatLite::UInt32Size(
          this->_internal_best_time());
    }

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

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


void CMsgSteamNetworkingICESessionSummary::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
  auto* const _this = static_cast<CMsgSteamNetworkingICESessionSummary*>(&to_msg);
  auto& from = static_cast<const CMsgSteamNetworkingICESessionSummary&>(from_msg);
  // @@protoc_insertion_point(class_specific_merge_from_start:CMsgSteamNetworkingICESessionSummary)
  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->_impl_.local_candidate_types_ = from._impl_.local_candidate_types_;
    }
    if (cached_has_bits & 0x00000002u) {
      _this->_impl_.remote_candidate_types_ = from._impl_.remote_candidate_types_;
    }
    if (cached_has_bits & 0x00000004u) {
      _this->_impl_.initial_route_kind_ = from._impl_.initial_route_kind_;
    }
    if (cached_has_bits & 0x00000008u) {
      _this->_impl_.initial_ping_ = from._impl_.initial_ping_;
    }
    if (cached_has_bits & 0x00000010u) {
      _this->_impl_.negotiation_ms_ = from._impl_.negotiation_ms_;
    }
    if (cached_has_bits & 0x00000020u) {
      _this->_impl_.initial_score_ = from._impl_.initial_score_;
    }
    if (cached_has_bits & 0x00000040u) {
      _this->_impl_.failure_reason_code_ = from._impl_.failure_reason_code_;
    }
    if (cached_has_bits & 0x00000080u) {
      _this->_impl_.selected_seconds_ = from._impl_.selected_seconds_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00007f00u) {
    if (cached_has_bits & 0x00000100u) {
      _this->_impl_.user_settings_ = from._impl_.user_settings_;
    }
    if (cached_has_bits & 0x00000200u) {
      _this->_impl_.ice_enable_var_ = from._impl_.ice_enable_var_;
    }
    if (cached_has_bits & 0x00000400u) {
      _this->_impl_.local_candidate_types_allowed_ = from._impl_.local_candidate_types_allowed_;
    }
    if (cached_has_bits & 0x00000800u) {
      _this->_impl_.best_route_kind_ = from._impl_.best_route_kind_;
    }
    if (cached_has_bits & 0x00001000u) {
      _this->_impl_.best_ping_ = from._impl_.best_ping_;
    }
    if (cached_has_bits & 0x00002000u) {
      _this->_impl_.best_score_ = from._impl_.best_score_;
    }
    if (cached_has_bits & 0x00004000u) {
      _this->_impl_.best_time_ = from._impl_.best_time_;
    }
    _this->_impl_._has_bits_[0] |= cached_has_bits;
  }
  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}

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

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

void CMsgSteamNetworkingICESessionSummary::InternalSwap(CMsgSteamNetworkingICESessionSummary* 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(CMsgSteamNetworkingICESessionSummary, _impl_.best_time_)
      + sizeof(CMsgSteamNetworkingICESessionSummary::_impl_.best_time_)
      - PROTOBUF_FIELD_OFFSET(CMsgSteamNetworkingICESessionSummary, _impl_.local_candidate_types_)>(
          reinterpret_cast<char*>(&_impl_.local_candidate_types_),
          reinterpret_cast<char*>(&other->_impl_.local_candidate_types_));
}

::PROTOBUF_NAMESPACE_ID::Metadata CMsgSteamNetworkingICESessionSummary::GetMetadata() const {
  return ::_pbi::AssignDescriptors(
      &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_getter, &descriptor_table_steamnetworkingsockets_5fmessages_2eproto_once,
      file_level_metadata_steamnetworkingsockets_5fmessages_2eproto[15]);
}

// @@protoc_insertion_point(namespace_scope)
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::CMsgSteamDatagramSessionCryptInfo*
Arena::CreateMaybeMessage< ::CMsgSteamDatagramSessionCryptInfo >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamDatagramSessionCryptInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamDatagramSessionCryptInfoSigned*
Arena::CreateMaybeMessage< ::CMsgSteamDatagramSessionCryptInfoSigned >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamDatagramSessionCryptInfoSigned >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamDatagramDiagnostic*
Arena::CreateMaybeMessage< ::CMsgSteamDatagramDiagnostic >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamDatagramDiagnostic >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamDatagramLinkInstantaneousStats*
Arena::CreateMaybeMessage< ::CMsgSteamDatagramLinkInstantaneousStats >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamDatagramLinkInstantaneousStats >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamDatagramLinkLifetimeStats*
Arena::CreateMaybeMessage< ::CMsgSteamDatagramLinkLifetimeStats >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamDatagramLinkLifetimeStats >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamDatagramConnectionQuality*
Arena::CreateMaybeMessage< ::CMsgSteamDatagramConnectionQuality >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamDatagramConnectionQuality >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgICECandidate*
Arena::CreateMaybeMessage< ::CMsgICECandidate >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgICECandidate >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgICERendezvous_Auth*
Arena::CreateMaybeMessage< ::CMsgICERendezvous_Auth >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgICERendezvous_Auth >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgICERendezvous*
Arena::CreateMaybeMessage< ::CMsgICERendezvous >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgICERendezvous >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamNetworkingP2PRendezvous_ConnectRequest*
Arena::CreateMaybeMessage< ::CMsgSteamNetworkingP2PRendezvous_ConnectRequest >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamNetworkingP2PRendezvous_ConnectRequest >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamNetworkingP2PRendezvous_ConnectOK*
Arena::CreateMaybeMessage< ::CMsgSteamNetworkingP2PRendezvous_ConnectOK >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamNetworkingP2PRendezvous_ConnectOK >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed*
Arena::CreateMaybeMessage< ::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamNetworkingP2PRendezvous_ConnectionClosed >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamNetworkingP2PRendezvous_ReliableMessage*
Arena::CreateMaybeMessage< ::CMsgSteamNetworkingP2PRendezvous_ReliableMessage >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamNetworkingP2PRendezvous_ReliableMessage >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage*
Arena::CreateMaybeMessage< ::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamNetworkingP2PRendezvous_ApplicationMessage >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamNetworkingP2PRendezvous*
Arena::CreateMaybeMessage< ::CMsgSteamNetworkingP2PRendezvous >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamNetworkingP2PRendezvous >(arena);
}
template<> PROTOBUF_NOINLINE ::CMsgSteamNetworkingICESessionSummary*
Arena::CreateMaybeMessage< ::CMsgSteamNetworkingICESessionSummary >(Arena* arena) {
  return Arena::CreateMessageInternal< ::CMsgSteamNetworkingICESessionSummary >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

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