// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: attribute.proto
// Protobuf C++ Version: 7.35.1

#ifndef attribute_2eproto_2epb_2eh
#define attribute_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

// clang-format off
#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 7035001
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_bases.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/map.h"  // IWYU pragma: export
#include "google/protobuf/map_type_handler.h"  // IWYU pragma: export
#include "google/protobuf/map_entry.h"
#include "google/protobuf/map_field.h"
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
#include "google/protobuf/any.pb.h"
#include "gobgp.pb.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_attribute_2eproto

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_attribute_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_attribute_2eproto;
}  // extern "C"
namespace apipb {
enum AsSegment_Type : int;
extern const uint32_t AsSegment_Type_internal_data_[];
enum ENLPType : int;
extern const uint32_t ENLPType_internal_data_[];
enum LsNLRIType : int;
extern const uint32_t LsNLRIType_internal_data_[];
enum LsOspfRouteType : int;
extern const uint32_t LsOspfRouteType_internal_data_[];
enum LsProtocolID : int;
extern const uint32_t LsProtocolID_internal_data_[];
enum SRv6Behavior : int;
extern const uint32_t SRv6Behavior_internal_data_[];
class AggregatorAttribute;
struct AggregatorAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern AggregatorAttributeGlobalsTypeInternal AggregatorAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull AggregatorAttribute_class_data_;
#else
extern const AggregatorAttributeGlobalsTypeInternal AggregatorAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class AigpAttribute;
struct AigpAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern AigpAttributeGlobalsTypeInternal AigpAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull AigpAttribute_class_data_;
#else
extern const AigpAttributeGlobalsTypeInternal AigpAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class AigpTLVIGPMetric;
struct AigpTLVIGPMetricGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern AigpTLVIGPMetricGlobalsTypeInternal AigpTLVIGPMetric_globals_;
extern const ::google::protobuf::internal::ClassDataFull AigpTLVIGPMetric_class_data_;
#else
extern const AigpTLVIGPMetricGlobalsTypeInternal AigpTLVIGPMetric_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class AigpTLVUnknown;
struct AigpTLVUnknownGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern AigpTLVUnknownGlobalsTypeInternal AigpTLVUnknown_globals_;
extern const ::google::protobuf::internal::ClassDataFull AigpTLVUnknown_class_data_;
#else
extern const AigpTLVUnknownGlobalsTypeInternal AigpTLVUnknown_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class As4AggregatorAttribute;
struct As4AggregatorAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern As4AggregatorAttributeGlobalsTypeInternal As4AggregatorAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull As4AggregatorAttribute_class_data_;
#else
extern const As4AggregatorAttributeGlobalsTypeInternal As4AggregatorAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class As4PathAttribute;
struct As4PathAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern As4PathAttributeGlobalsTypeInternal As4PathAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull As4PathAttribute_class_data_;
#else
extern const As4PathAttributeGlobalsTypeInternal As4PathAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class AsPathAttribute;
struct AsPathAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern AsPathAttributeGlobalsTypeInternal AsPathAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull AsPathAttribute_class_data_;
#else
extern const AsPathAttributeGlobalsTypeInternal AsPathAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class AsSegment;
struct AsSegmentGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern AsSegmentGlobalsTypeInternal AsSegment_globals_;
extern const ::google::protobuf::internal::ClassDataFull AsSegment_class_data_;
#else
extern const AsSegmentGlobalsTypeInternal AsSegment_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class AtomicAggregateAttribute;
struct AtomicAggregateAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern AtomicAggregateAttributeGlobalsTypeInternal AtomicAggregateAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull AtomicAggregateAttribute_class_data_;
#else
extern const AtomicAggregateAttributeGlobalsTypeInternal AtomicAggregateAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ClusterListAttribute;
struct ClusterListAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ClusterListAttributeGlobalsTypeInternal ClusterListAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull ClusterListAttribute_class_data_;
#else
extern const ClusterListAttributeGlobalsTypeInternal ClusterListAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ColorExtended;
struct ColorExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ColorExtendedGlobalsTypeInternal ColorExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull ColorExtended_class_data_;
#else
extern const ColorExtendedGlobalsTypeInternal ColorExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class CommunitiesAttribute;
struct CommunitiesAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern CommunitiesAttributeGlobalsTypeInternal CommunitiesAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull CommunitiesAttribute_class_data_;
#else
extern const CommunitiesAttributeGlobalsTypeInternal CommunitiesAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class DefaultGatewayExtended;
struct DefaultGatewayExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern DefaultGatewayExtendedGlobalsTypeInternal DefaultGatewayExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull DefaultGatewayExtended_class_data_;
#else
extern const DefaultGatewayExtendedGlobalsTypeInternal DefaultGatewayExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ESILabelExtended;
struct ESILabelExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ESILabelExtendedGlobalsTypeInternal ESILabelExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull ESILabelExtended_class_data_;
#else
extern const ESILabelExtendedGlobalsTypeInternal ESILabelExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ESImportRouteTarget;
struct ESImportRouteTargetGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ESImportRouteTargetGlobalsTypeInternal ESImportRouteTarget_globals_;
extern const ::google::protobuf::internal::ClassDataFull ESImportRouteTarget_class_data_;
#else
extern const ESImportRouteTargetGlobalsTypeInternal ESImportRouteTarget_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EVPNEthernetAutoDiscoveryRoute;
struct EVPNEthernetAutoDiscoveryRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EVPNEthernetAutoDiscoveryRouteGlobalsTypeInternal EVPNEthernetAutoDiscoveryRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull EVPNEthernetAutoDiscoveryRoute_class_data_;
#else
extern const EVPNEthernetAutoDiscoveryRouteGlobalsTypeInternal EVPNEthernetAutoDiscoveryRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EVPNEthernetSegmentRoute;
struct EVPNEthernetSegmentRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EVPNEthernetSegmentRouteGlobalsTypeInternal EVPNEthernetSegmentRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull EVPNEthernetSegmentRoute_class_data_;
#else
extern const EVPNEthernetSegmentRouteGlobalsTypeInternal EVPNEthernetSegmentRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EVPNIPMSIRoute;
struct EVPNIPMSIRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EVPNIPMSIRouteGlobalsTypeInternal EVPNIPMSIRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull EVPNIPMSIRoute_class_data_;
#else
extern const EVPNIPMSIRouteGlobalsTypeInternal EVPNIPMSIRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EVPNIPPrefixRoute;
struct EVPNIPPrefixRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EVPNIPPrefixRouteGlobalsTypeInternal EVPNIPPrefixRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull EVPNIPPrefixRoute_class_data_;
#else
extern const EVPNIPPrefixRouteGlobalsTypeInternal EVPNIPPrefixRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EVPNInclusiveMulticastEthernetTagRoute;
struct EVPNInclusiveMulticastEthernetTagRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EVPNInclusiveMulticastEthernetTagRouteGlobalsTypeInternal EVPNInclusiveMulticastEthernetTagRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull EVPNInclusiveMulticastEthernetTagRoute_class_data_;
#else
extern const EVPNInclusiveMulticastEthernetTagRouteGlobalsTypeInternal EVPNInclusiveMulticastEthernetTagRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EVPNMACIPAdvertisementRoute;
struct EVPNMACIPAdvertisementRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EVPNMACIPAdvertisementRouteGlobalsTypeInternal EVPNMACIPAdvertisementRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull EVPNMACIPAdvertisementRoute_class_data_;
#else
extern const EVPNMACIPAdvertisementRouteGlobalsTypeInternal EVPNMACIPAdvertisementRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EncapExtended;
struct EncapExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EncapExtendedGlobalsTypeInternal EncapExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull EncapExtended_class_data_;
#else
extern const EncapExtendedGlobalsTypeInternal EncapExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EncapsulationNLRI;
struct EncapsulationNLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EncapsulationNLRIGlobalsTypeInternal EncapsulationNLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull EncapsulationNLRI_class_data_;
#else
extern const EncapsulationNLRIGlobalsTypeInternal EncapsulationNLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class EthernetSegmentIdentifier;
struct EthernetSegmentIdentifierGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern EthernetSegmentIdentifierGlobalsTypeInternal EthernetSegmentIdentifier_globals_;
extern const ::google::protobuf::internal::ClassDataFull EthernetSegmentIdentifier_class_data_;
#else
extern const EthernetSegmentIdentifierGlobalsTypeInternal EthernetSegmentIdentifier_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ExtendedCommunitiesAttribute;
struct ExtendedCommunitiesAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ExtendedCommunitiesAttributeGlobalsTypeInternal ExtendedCommunitiesAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull ExtendedCommunitiesAttribute_class_data_;
#else
extern const ExtendedCommunitiesAttributeGlobalsTypeInternal ExtendedCommunitiesAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class FlowSpecComponent;
struct FlowSpecComponentGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern FlowSpecComponentGlobalsTypeInternal FlowSpecComponent_globals_;
extern const ::google::protobuf::internal::ClassDataFull FlowSpecComponent_class_data_;
#else
extern const FlowSpecComponentGlobalsTypeInternal FlowSpecComponent_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class FlowSpecComponentItem;
struct FlowSpecComponentItemGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern FlowSpecComponentItemGlobalsTypeInternal FlowSpecComponentItem_globals_;
extern const ::google::protobuf::internal::ClassDataFull FlowSpecComponentItem_class_data_;
#else
extern const FlowSpecComponentItemGlobalsTypeInternal FlowSpecComponentItem_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class FlowSpecIPPrefix;
struct FlowSpecIPPrefixGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern FlowSpecIPPrefixGlobalsTypeInternal FlowSpecIPPrefix_globals_;
extern const ::google::protobuf::internal::ClassDataFull FlowSpecIPPrefix_class_data_;
#else
extern const FlowSpecIPPrefixGlobalsTypeInternal FlowSpecIPPrefix_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class FlowSpecMAC;
struct FlowSpecMACGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern FlowSpecMACGlobalsTypeInternal FlowSpecMAC_globals_;
extern const ::google::protobuf::internal::ClassDataFull FlowSpecMAC_class_data_;
#else
extern const FlowSpecMACGlobalsTypeInternal FlowSpecMAC_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class FlowSpecNLRI;
struct FlowSpecNLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern FlowSpecNLRIGlobalsTypeInternal FlowSpecNLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull FlowSpecNLRI_class_data_;
#else
extern const FlowSpecNLRIGlobalsTypeInternal FlowSpecNLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class FourOctetAsSpecificExtended;
struct FourOctetAsSpecificExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern FourOctetAsSpecificExtendedGlobalsTypeInternal FourOctetAsSpecificExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull FourOctetAsSpecificExtended_class_data_;
#else
extern const FourOctetAsSpecificExtendedGlobalsTypeInternal FourOctetAsSpecificExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class IP6ExtendedCommunitiesAttribute;
struct IP6ExtendedCommunitiesAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern IP6ExtendedCommunitiesAttributeGlobalsTypeInternal IP6ExtendedCommunitiesAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull IP6ExtendedCommunitiesAttribute_class_data_;
#else
extern const IP6ExtendedCommunitiesAttributeGlobalsTypeInternal IP6ExtendedCommunitiesAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class IPAddressPrefix;
struct IPAddressPrefixGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern IPAddressPrefixGlobalsTypeInternal IPAddressPrefix_globals_;
extern const ::google::protobuf::internal::ClassDataFull IPAddressPrefix_class_data_;
#else
extern const IPAddressPrefixGlobalsTypeInternal IPAddressPrefix_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class IPv4AddressSpecificExtended;
struct IPv4AddressSpecificExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern IPv4AddressSpecificExtendedGlobalsTypeInternal IPv4AddressSpecificExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull IPv4AddressSpecificExtended_class_data_;
#else
extern const IPv4AddressSpecificExtendedGlobalsTypeInternal IPv4AddressSpecificExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class IPv6AddressSpecificExtended;
struct IPv6AddressSpecificExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern IPv6AddressSpecificExtendedGlobalsTypeInternal IPv6AddressSpecificExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull IPv6AddressSpecificExtended_class_data_;
#else
extern const IPv6AddressSpecificExtendedGlobalsTypeInternal IPv6AddressSpecificExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LabeledIPAddressPrefix;
struct LabeledIPAddressPrefixGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LabeledIPAddressPrefixGlobalsTypeInternal LabeledIPAddressPrefix_globals_;
extern const ::google::protobuf::internal::ClassDataFull LabeledIPAddressPrefix_class_data_;
#else
extern const LabeledIPAddressPrefixGlobalsTypeInternal LabeledIPAddressPrefix_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LabeledVPNIPAddressPrefix;
struct LabeledVPNIPAddressPrefixGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LabeledVPNIPAddressPrefixGlobalsTypeInternal LabeledVPNIPAddressPrefix_globals_;
extern const ::google::protobuf::internal::ClassDataFull LabeledVPNIPAddressPrefix_class_data_;
#else
extern const LabeledVPNIPAddressPrefixGlobalsTypeInternal LabeledVPNIPAddressPrefix_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LargeCommunitiesAttribute;
struct LargeCommunitiesAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LargeCommunitiesAttributeGlobalsTypeInternal LargeCommunitiesAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull LargeCommunitiesAttribute_class_data_;
#else
extern const LargeCommunitiesAttributeGlobalsTypeInternal LargeCommunitiesAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LargeCommunity;
struct LargeCommunityGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LargeCommunityGlobalsTypeInternal LargeCommunity_globals_;
extern const ::google::protobuf::internal::ClassDataFull LargeCommunity_class_data_;
#else
extern const LargeCommunityGlobalsTypeInternal LargeCommunity_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LinkBandwidthExtended;
struct LinkBandwidthExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LinkBandwidthExtendedGlobalsTypeInternal LinkBandwidthExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull LinkBandwidthExtended_class_data_;
#else
extern const LinkBandwidthExtendedGlobalsTypeInternal LinkBandwidthExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LocalPrefAttribute;
struct LocalPrefAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LocalPrefAttributeGlobalsTypeInternal LocalPrefAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull LocalPrefAttribute_class_data_;
#else
extern const LocalPrefAttributeGlobalsTypeInternal LocalPrefAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsAddrPrefix;
struct LsAddrPrefixGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsAddrPrefixGlobalsTypeInternal LsAddrPrefix_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsAddrPrefix_class_data_;
#else
extern const LsAddrPrefixGlobalsTypeInternal LsAddrPrefix_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsAttribute;
struct LsAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsAttributeGlobalsTypeInternal LsAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsAttribute_class_data_;
#else
extern const LsAttributeGlobalsTypeInternal LsAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsAttributeBgpPeerSegment;
struct LsAttributeBgpPeerSegmentGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsAttributeBgpPeerSegmentGlobalsTypeInternal LsAttributeBgpPeerSegment_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsAttributeBgpPeerSegment_class_data_;
#else
extern const LsAttributeBgpPeerSegmentGlobalsTypeInternal LsAttributeBgpPeerSegment_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsAttributeLink;
struct LsAttributeLinkGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsAttributeLinkGlobalsTypeInternal LsAttributeLink_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsAttributeLink_class_data_;
#else
extern const LsAttributeLinkGlobalsTypeInternal LsAttributeLink_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsAttributeNode;
struct LsAttributeNodeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsAttributeNodeGlobalsTypeInternal LsAttributeNode_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsAttributeNode_class_data_;
#else
extern const LsAttributeNodeGlobalsTypeInternal LsAttributeNode_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsAttributePrefix;
struct LsAttributePrefixGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsAttributePrefixGlobalsTypeInternal LsAttributePrefix_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsAttributePrefix_class_data_;
#else
extern const LsAttributePrefixGlobalsTypeInternal LsAttributePrefix_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsBgpPeerSegmentSID;
struct LsBgpPeerSegmentSIDGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsBgpPeerSegmentSIDGlobalsTypeInternal LsBgpPeerSegmentSID_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsBgpPeerSegmentSID_class_data_;
#else
extern const LsBgpPeerSegmentSIDGlobalsTypeInternal LsBgpPeerSegmentSID_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsBgpPeerSegmentSIDFlags;
struct LsBgpPeerSegmentSIDFlagsGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsBgpPeerSegmentSIDFlagsGlobalsTypeInternal LsBgpPeerSegmentSIDFlags_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsBgpPeerSegmentSIDFlags_class_data_;
#else
extern const LsBgpPeerSegmentSIDFlagsGlobalsTypeInternal LsBgpPeerSegmentSIDFlags_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsIGPFlags;
struct LsIGPFlagsGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsIGPFlagsGlobalsTypeInternal LsIGPFlags_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsIGPFlags_class_data_;
#else
extern const LsIGPFlagsGlobalsTypeInternal LsIGPFlags_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsLinkDescriptor;
struct LsLinkDescriptorGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsLinkDescriptorGlobalsTypeInternal LsLinkDescriptor_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsLinkDescriptor_class_data_;
#else
extern const LsLinkDescriptorGlobalsTypeInternal LsLinkDescriptor_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsLinkNLRI;
struct LsLinkNLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsLinkNLRIGlobalsTypeInternal LsLinkNLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsLinkNLRI_class_data_;
#else
extern const LsLinkNLRIGlobalsTypeInternal LsLinkNLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsNodeDescriptor;
struct LsNodeDescriptorGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsNodeDescriptorGlobalsTypeInternal LsNodeDescriptor_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsNodeDescriptor_class_data_;
#else
extern const LsNodeDescriptorGlobalsTypeInternal LsNodeDescriptor_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsNodeFlags;
struct LsNodeFlagsGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsNodeFlagsGlobalsTypeInternal LsNodeFlags_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsNodeFlags_class_data_;
#else
extern const LsNodeFlagsGlobalsTypeInternal LsNodeFlags_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsNodeNLRI;
struct LsNodeNLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsNodeNLRIGlobalsTypeInternal LsNodeNLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsNodeNLRI_class_data_;
#else
extern const LsNodeNLRIGlobalsTypeInternal LsNodeNLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsPrefixDescriptor;
struct LsPrefixDescriptorGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsPrefixDescriptorGlobalsTypeInternal LsPrefixDescriptor_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsPrefixDescriptor_class_data_;
#else
extern const LsPrefixDescriptorGlobalsTypeInternal LsPrefixDescriptor_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsPrefixV4NLRI;
struct LsPrefixV4NLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsPrefixV4NLRIGlobalsTypeInternal LsPrefixV4NLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsPrefixV4NLRI_class_data_;
#else
extern const LsPrefixV4NLRIGlobalsTypeInternal LsPrefixV4NLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsPrefixV6NLRI;
struct LsPrefixV6NLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsPrefixV6NLRIGlobalsTypeInternal LsPrefixV6NLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsPrefixV6NLRI_class_data_;
#else
extern const LsPrefixV6NLRIGlobalsTypeInternal LsPrefixV6NLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsSrCapabilities;
struct LsSrCapabilitiesGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsSrCapabilitiesGlobalsTypeInternal LsSrCapabilities_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsSrCapabilities_class_data_;
#else
extern const LsSrCapabilitiesGlobalsTypeInternal LsSrCapabilities_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsSrLocalBlock;
struct LsSrLocalBlockGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsSrLocalBlockGlobalsTypeInternal LsSrLocalBlock_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsSrLocalBlock_class_data_;
#else
extern const LsSrLocalBlockGlobalsTypeInternal LsSrLocalBlock_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class LsSrRange;
struct LsSrRangeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern LsSrRangeGlobalsTypeInternal LsSrRange_globals_;
extern const ::google::protobuf::internal::ClassDataFull LsSrRange_class_data_;
#else
extern const LsSrRangeGlobalsTypeInternal LsSrRange_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MUPDirectSegmentDiscoveryRoute;
struct MUPDirectSegmentDiscoveryRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MUPDirectSegmentDiscoveryRouteGlobalsTypeInternal MUPDirectSegmentDiscoveryRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull MUPDirectSegmentDiscoveryRoute_class_data_;
#else
extern const MUPDirectSegmentDiscoveryRouteGlobalsTypeInternal MUPDirectSegmentDiscoveryRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MUPExtended;
struct MUPExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MUPExtendedGlobalsTypeInternal MUPExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull MUPExtended_class_data_;
#else
extern const MUPExtendedGlobalsTypeInternal MUPExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MUPInterworkSegmentDiscoveryRoute;
struct MUPInterworkSegmentDiscoveryRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MUPInterworkSegmentDiscoveryRouteGlobalsTypeInternal MUPInterworkSegmentDiscoveryRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull MUPInterworkSegmentDiscoveryRoute_class_data_;
#else
extern const MUPInterworkSegmentDiscoveryRouteGlobalsTypeInternal MUPInterworkSegmentDiscoveryRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MUPType1SessionTransformedRoute;
struct MUPType1SessionTransformedRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MUPType1SessionTransformedRouteGlobalsTypeInternal MUPType1SessionTransformedRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull MUPType1SessionTransformedRoute_class_data_;
#else
extern const MUPType1SessionTransformedRouteGlobalsTypeInternal MUPType1SessionTransformedRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MUPType2SessionTransformedRoute;
struct MUPType2SessionTransformedRouteGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MUPType2SessionTransformedRouteGlobalsTypeInternal MUPType2SessionTransformedRoute_globals_;
extern const ::google::protobuf::internal::ClassDataFull MUPType2SessionTransformedRoute_class_data_;
#else
extern const MUPType2SessionTransformedRouteGlobalsTypeInternal MUPType2SessionTransformedRoute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MacMobilityExtended;
struct MacMobilityExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MacMobilityExtendedGlobalsTypeInternal MacMobilityExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull MacMobilityExtended_class_data_;
#else
extern const MacMobilityExtendedGlobalsTypeInternal MacMobilityExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MpReachNLRIAttribute;
struct MpReachNLRIAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MpReachNLRIAttributeGlobalsTypeInternal MpReachNLRIAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull MpReachNLRIAttribute_class_data_;
#else
extern const MpReachNLRIAttributeGlobalsTypeInternal MpReachNLRIAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MpUnreachNLRIAttribute;
struct MpUnreachNLRIAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MpUnreachNLRIAttributeGlobalsTypeInternal MpUnreachNLRIAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull MpUnreachNLRIAttribute_class_data_;
#else
extern const MpUnreachNLRIAttributeGlobalsTypeInternal MpUnreachNLRIAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class MultiExitDiscAttribute;
struct MultiExitDiscAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern MultiExitDiscAttributeGlobalsTypeInternal MultiExitDiscAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull MultiExitDiscAttribute_class_data_;
#else
extern const MultiExitDiscAttributeGlobalsTypeInternal MultiExitDiscAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class NextHopAttribute;
struct NextHopAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern NextHopAttributeGlobalsTypeInternal NextHopAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull NextHopAttribute_class_data_;
#else
extern const NextHopAttributeGlobalsTypeInternal NextHopAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class OpaqueExtended;
struct OpaqueExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern OpaqueExtendedGlobalsTypeInternal OpaqueExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull OpaqueExtended_class_data_;
#else
extern const OpaqueExtendedGlobalsTypeInternal OpaqueExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class OpaqueNLRI;
struct OpaqueNLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern OpaqueNLRIGlobalsTypeInternal OpaqueNLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull OpaqueNLRI_class_data_;
#else
extern const OpaqueNLRIGlobalsTypeInternal OpaqueNLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class OriginAttribute;
struct OriginAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern OriginAttributeGlobalsTypeInternal OriginAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull OriginAttribute_class_data_;
#else
extern const OriginAttributeGlobalsTypeInternal OriginAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class OriginatorIdAttribute;
struct OriginatorIdAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern OriginatorIdAttributeGlobalsTypeInternal OriginatorIdAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull OriginatorIdAttribute_class_data_;
#else
extern const OriginatorIdAttributeGlobalsTypeInternal OriginatorIdAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class PmsiTunnelAttribute;
struct PmsiTunnelAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern PmsiTunnelAttributeGlobalsTypeInternal PmsiTunnelAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull PmsiTunnelAttribute_class_data_;
#else
extern const PmsiTunnelAttributeGlobalsTypeInternal PmsiTunnelAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class PrefixSID;
struct PrefixSIDGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern PrefixSIDGlobalsTypeInternal PrefixSID_globals_;
extern const ::google::protobuf::internal::ClassDataFull PrefixSID_class_data_;
#else
extern const PrefixSIDGlobalsTypeInternal PrefixSID_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class RedirectFourOctetAsSpecificExtended;
struct RedirectFourOctetAsSpecificExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern RedirectFourOctetAsSpecificExtendedGlobalsTypeInternal RedirectFourOctetAsSpecificExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull RedirectFourOctetAsSpecificExtended_class_data_;
#else
extern const RedirectFourOctetAsSpecificExtendedGlobalsTypeInternal RedirectFourOctetAsSpecificExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class RedirectIPv4AddressSpecificExtended;
struct RedirectIPv4AddressSpecificExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern RedirectIPv4AddressSpecificExtendedGlobalsTypeInternal RedirectIPv4AddressSpecificExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull RedirectIPv4AddressSpecificExtended_class_data_;
#else
extern const RedirectIPv4AddressSpecificExtendedGlobalsTypeInternal RedirectIPv4AddressSpecificExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class RedirectIPv6AddressSpecificExtended;
struct RedirectIPv6AddressSpecificExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern RedirectIPv6AddressSpecificExtendedGlobalsTypeInternal RedirectIPv6AddressSpecificExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull RedirectIPv6AddressSpecificExtended_class_data_;
#else
extern const RedirectIPv6AddressSpecificExtendedGlobalsTypeInternal RedirectIPv6AddressSpecificExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class RedirectTwoOctetAsSpecificExtended;
struct RedirectTwoOctetAsSpecificExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern RedirectTwoOctetAsSpecificExtendedGlobalsTypeInternal RedirectTwoOctetAsSpecificExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull RedirectTwoOctetAsSpecificExtended_class_data_;
#else
extern const RedirectTwoOctetAsSpecificExtendedGlobalsTypeInternal RedirectTwoOctetAsSpecificExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class RouteDistinguisherFourOctetASN;
struct RouteDistinguisherFourOctetASNGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern RouteDistinguisherFourOctetASNGlobalsTypeInternal RouteDistinguisherFourOctetASN_globals_;
extern const ::google::protobuf::internal::ClassDataFull RouteDistinguisherFourOctetASN_class_data_;
#else
extern const RouteDistinguisherFourOctetASNGlobalsTypeInternal RouteDistinguisherFourOctetASN_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class RouteDistinguisherIPAddress;
struct RouteDistinguisherIPAddressGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern RouteDistinguisherIPAddressGlobalsTypeInternal RouteDistinguisherIPAddress_globals_;
extern const ::google::protobuf::internal::ClassDataFull RouteDistinguisherIPAddress_class_data_;
#else
extern const RouteDistinguisherIPAddressGlobalsTypeInternal RouteDistinguisherIPAddress_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class RouteDistinguisherTwoOctetASN;
struct RouteDistinguisherTwoOctetASNGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern RouteDistinguisherTwoOctetASNGlobalsTypeInternal RouteDistinguisherTwoOctetASN_globals_;
extern const ::google::protobuf::internal::ClassDataFull RouteDistinguisherTwoOctetASN_class_data_;
#else
extern const RouteDistinguisherTwoOctetASNGlobalsTypeInternal RouteDistinguisherTwoOctetASN_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class RouteTargetMembershipNLRI;
struct RouteTargetMembershipNLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern RouteTargetMembershipNLRIGlobalsTypeInternal RouteTargetMembershipNLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull RouteTargetMembershipNLRI_class_data_;
#else
extern const RouteTargetMembershipNLRIGlobalsTypeInternal RouteTargetMembershipNLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class RouterMacExtended;
struct RouterMacExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern RouterMacExtendedGlobalsTypeInternal RouterMacExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull RouterMacExtended_class_data_;
#else
extern const RouterMacExtendedGlobalsTypeInternal RouterMacExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRBindingSID;
struct SRBindingSIDGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRBindingSIDGlobalsTypeInternal SRBindingSID_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRBindingSID_class_data_;
#else
extern const SRBindingSIDGlobalsTypeInternal SRBindingSID_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRPolicyNLRI;
struct SRPolicyNLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRPolicyNLRIGlobalsTypeInternal SRPolicyNLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRPolicyNLRI_class_data_;
#else
extern const SRPolicyNLRIGlobalsTypeInternal SRPolicyNLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRWeight;
struct SRWeightGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRWeightGlobalsTypeInternal SRWeight_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRWeight_class_data_;
#else
extern const SRWeightGlobalsTypeInternal SRWeight_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6BindingSID;
struct SRv6BindingSIDGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6BindingSIDGlobalsTypeInternal SRv6BindingSID_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6BindingSID_class_data_;
#else
extern const SRv6BindingSIDGlobalsTypeInternal SRv6BindingSID_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6EndPointBehavior;
struct SRv6EndPointBehaviorGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6EndPointBehaviorGlobalsTypeInternal SRv6EndPointBehavior_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6EndPointBehavior_class_data_;
#else
extern const SRv6EndPointBehaviorGlobalsTypeInternal SRv6EndPointBehavior_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6InformationSubTLV;
struct SRv6InformationSubTLVGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6InformationSubTLVGlobalsTypeInternal SRv6InformationSubTLV_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6InformationSubTLV_class_data_;
#else
extern const SRv6InformationSubTLVGlobalsTypeInternal SRv6InformationSubTLV_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse;
struct SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUseGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUseGlobalsTypeInternal SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse_class_data_;
#else
extern const SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUseGlobalsTypeInternal SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6L2ServiceTLV;
struct SRv6L2ServiceTLVGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6L2ServiceTLVGlobalsTypeInternal SRv6L2ServiceTLV_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6L2ServiceTLV_class_data_;
#else
extern const SRv6L2ServiceTLVGlobalsTypeInternal SRv6L2ServiceTLV_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse;
struct SRv6L2ServiceTLV_SubTlvsEntry_DoNotUseGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6L2ServiceTLV_SubTlvsEntry_DoNotUseGlobalsTypeInternal SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse_class_data_;
#else
extern const SRv6L2ServiceTLV_SubTlvsEntry_DoNotUseGlobalsTypeInternal SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6L3ServiceTLV;
struct SRv6L3ServiceTLVGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6L3ServiceTLVGlobalsTypeInternal SRv6L3ServiceTLV_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6L3ServiceTLV_class_data_;
#else
extern const SRv6L3ServiceTLVGlobalsTypeInternal SRv6L3ServiceTLV_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse;
struct SRv6L3ServiceTLV_SubTlvsEntry_DoNotUseGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6L3ServiceTLV_SubTlvsEntry_DoNotUseGlobalsTypeInternal SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse_class_data_;
#else
extern const SRv6L3ServiceTLV_SubTlvsEntry_DoNotUseGlobalsTypeInternal SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6SIDFlags;
struct SRv6SIDFlagsGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6SIDFlagsGlobalsTypeInternal SRv6SIDFlags_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6SIDFlags_class_data_;
#else
extern const SRv6SIDFlagsGlobalsTypeInternal SRv6SIDFlags_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6StructureSubSubTLV;
struct SRv6StructureSubSubTLVGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6StructureSubSubTLVGlobalsTypeInternal SRv6StructureSubSubTLV_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6StructureSubSubTLV_class_data_;
#else
extern const SRv6StructureSubSubTLVGlobalsTypeInternal SRv6StructureSubSubTLV_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SRv6TLV;
struct SRv6TLVGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SRv6TLVGlobalsTypeInternal SRv6TLV_globals_;
extern const ::google::protobuf::internal::ClassDataFull SRv6TLV_class_data_;
#else
extern const SRv6TLVGlobalsTypeInternal SRv6TLV_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SegmentFlags;
struct SegmentFlagsGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SegmentFlagsGlobalsTypeInternal SegmentFlags_globals_;
extern const ::google::protobuf::internal::ClassDataFull SegmentFlags_class_data_;
#else
extern const SegmentFlagsGlobalsTypeInternal SegmentFlags_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SegmentTypeA;
struct SegmentTypeAGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SegmentTypeAGlobalsTypeInternal SegmentTypeA_globals_;
extern const ::google::protobuf::internal::ClassDataFull SegmentTypeA_class_data_;
#else
extern const SegmentTypeAGlobalsTypeInternal SegmentTypeA_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class SegmentTypeB;
struct SegmentTypeBGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern SegmentTypeBGlobalsTypeInternal SegmentTypeB_globals_;
extern const ::google::protobuf::internal::ClassDataFull SegmentTypeB_class_data_;
#else
extern const SegmentTypeBGlobalsTypeInternal SegmentTypeB_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TrafficActionExtended;
struct TrafficActionExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TrafficActionExtendedGlobalsTypeInternal TrafficActionExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull TrafficActionExtended_class_data_;
#else
extern const TrafficActionExtendedGlobalsTypeInternal TrafficActionExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TrafficRateExtended;
struct TrafficRateExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TrafficRateExtendedGlobalsTypeInternal TrafficRateExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull TrafficRateExtended_class_data_;
#else
extern const TrafficRateExtendedGlobalsTypeInternal TrafficRateExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TrafficRemarkExtended;
struct TrafficRemarkExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TrafficRemarkExtendedGlobalsTypeInternal TrafficRemarkExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull TrafficRemarkExtended_class_data_;
#else
extern const TrafficRemarkExtendedGlobalsTypeInternal TrafficRemarkExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapAttribute;
struct TunnelEncapAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapAttributeGlobalsTypeInternal TunnelEncapAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapAttribute_class_data_;
#else
extern const TunnelEncapAttributeGlobalsTypeInternal TunnelEncapAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVColor;
struct TunnelEncapSubTLVColorGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVColorGlobalsTypeInternal TunnelEncapSubTLVColor_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVColor_class_data_;
#else
extern const TunnelEncapSubTLVColorGlobalsTypeInternal TunnelEncapSubTLVColor_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVEgressEndpoint;
struct TunnelEncapSubTLVEgressEndpointGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVEgressEndpointGlobalsTypeInternal TunnelEncapSubTLVEgressEndpoint_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVEgressEndpoint_class_data_;
#else
extern const TunnelEncapSubTLVEgressEndpointGlobalsTypeInternal TunnelEncapSubTLVEgressEndpoint_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVEncapsulation;
struct TunnelEncapSubTLVEncapsulationGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVEncapsulationGlobalsTypeInternal TunnelEncapSubTLVEncapsulation_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVEncapsulation_class_data_;
#else
extern const TunnelEncapSubTLVEncapsulationGlobalsTypeInternal TunnelEncapSubTLVEncapsulation_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVProtocol;
struct TunnelEncapSubTLVProtocolGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVProtocolGlobalsTypeInternal TunnelEncapSubTLVProtocol_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVProtocol_class_data_;
#else
extern const TunnelEncapSubTLVProtocolGlobalsTypeInternal TunnelEncapSubTLVProtocol_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVSRBindingSID;
struct TunnelEncapSubTLVSRBindingSIDGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVSRBindingSIDGlobalsTypeInternal TunnelEncapSubTLVSRBindingSID_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVSRBindingSID_class_data_;
#else
extern const TunnelEncapSubTLVSRBindingSIDGlobalsTypeInternal TunnelEncapSubTLVSRBindingSID_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVSRCandidatePathName;
struct TunnelEncapSubTLVSRCandidatePathNameGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVSRCandidatePathNameGlobalsTypeInternal TunnelEncapSubTLVSRCandidatePathName_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVSRCandidatePathName_class_data_;
#else
extern const TunnelEncapSubTLVSRCandidatePathNameGlobalsTypeInternal TunnelEncapSubTLVSRCandidatePathName_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVSRENLP;
struct TunnelEncapSubTLVSRENLPGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVSRENLPGlobalsTypeInternal TunnelEncapSubTLVSRENLP_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVSRENLP_class_data_;
#else
extern const TunnelEncapSubTLVSRENLPGlobalsTypeInternal TunnelEncapSubTLVSRENLP_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVSRPreference;
struct TunnelEncapSubTLVSRPreferenceGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVSRPreferenceGlobalsTypeInternal TunnelEncapSubTLVSRPreference_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVSRPreference_class_data_;
#else
extern const TunnelEncapSubTLVSRPreferenceGlobalsTypeInternal TunnelEncapSubTLVSRPreference_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVSRPriority;
struct TunnelEncapSubTLVSRPriorityGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVSRPriorityGlobalsTypeInternal TunnelEncapSubTLVSRPriority_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVSRPriority_class_data_;
#else
extern const TunnelEncapSubTLVSRPriorityGlobalsTypeInternal TunnelEncapSubTLVSRPriority_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVSRSegmentList;
struct TunnelEncapSubTLVSRSegmentListGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVSRSegmentListGlobalsTypeInternal TunnelEncapSubTLVSRSegmentList_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVSRSegmentList_class_data_;
#else
extern const TunnelEncapSubTLVSRSegmentListGlobalsTypeInternal TunnelEncapSubTLVSRSegmentList_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVUDPDestPort;
struct TunnelEncapSubTLVUDPDestPortGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVUDPDestPortGlobalsTypeInternal TunnelEncapSubTLVUDPDestPort_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVUDPDestPort_class_data_;
#else
extern const TunnelEncapSubTLVUDPDestPortGlobalsTypeInternal TunnelEncapSubTLVUDPDestPort_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapSubTLVUnknown;
struct TunnelEncapSubTLVUnknownGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapSubTLVUnknownGlobalsTypeInternal TunnelEncapSubTLVUnknown_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapSubTLVUnknown_class_data_;
#else
extern const TunnelEncapSubTLVUnknownGlobalsTypeInternal TunnelEncapSubTLVUnknown_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TunnelEncapTLV;
struct TunnelEncapTLVGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TunnelEncapTLVGlobalsTypeInternal TunnelEncapTLV_globals_;
extern const ::google::protobuf::internal::ClassDataFull TunnelEncapTLV_class_data_;
#else
extern const TunnelEncapTLVGlobalsTypeInternal TunnelEncapTLV_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class TwoOctetAsSpecificExtended;
struct TwoOctetAsSpecificExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern TwoOctetAsSpecificExtendedGlobalsTypeInternal TwoOctetAsSpecificExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull TwoOctetAsSpecificExtended_class_data_;
#else
extern const TwoOctetAsSpecificExtendedGlobalsTypeInternal TwoOctetAsSpecificExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class UnknownAttribute;
struct UnknownAttributeGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern UnknownAttributeGlobalsTypeInternal UnknownAttribute_globals_;
extern const ::google::protobuf::internal::ClassDataFull UnknownAttribute_class_data_;
#else
extern const UnknownAttributeGlobalsTypeInternal UnknownAttribute_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class UnknownExtended;
struct UnknownExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern UnknownExtendedGlobalsTypeInternal UnknownExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull UnknownExtended_class_data_;
#else
extern const UnknownExtendedGlobalsTypeInternal UnknownExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class VPNFlowSpecNLRI;
struct VPNFlowSpecNLRIGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern VPNFlowSpecNLRIGlobalsTypeInternal VPNFlowSpecNLRI_globals_;
extern const ::google::protobuf::internal::ClassDataFull VPNFlowSpecNLRI_class_data_;
#else
extern const VPNFlowSpecNLRIGlobalsTypeInternal VPNFlowSpecNLRI_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ValidationExtended;
struct ValidationExtendedGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ValidationExtendedGlobalsTypeInternal ValidationExtended_globals_;
extern const ::google::protobuf::internal::ClassDataFull ValidationExtended_class_data_;
#else
extern const ValidationExtendedGlobalsTypeInternal ValidationExtended_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
}  // namespace apipb
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::apipb::AsSegment_Type_internal_data_>
    internal::EnumTraitsImpl::value<::apipb::AsSegment_Type>;
template <>
internal::EnumTraitsT<::apipb::ENLPType_internal_data_>
    internal::EnumTraitsImpl::value<::apipb::ENLPType>;
template <>
internal::EnumTraitsT<::apipb::LsNLRIType_internal_data_>
    internal::EnumTraitsImpl::value<::apipb::LsNLRIType>;
template <>
internal::EnumTraitsT<::apipb::LsOspfRouteType_internal_data_>
    internal::EnumTraitsImpl::value<::apipb::LsOspfRouteType>;
template <>
internal::EnumTraitsT<::apipb::LsProtocolID_internal_data_>
    internal::EnumTraitsImpl::value<::apipb::LsProtocolID>;
template <>
internal::EnumTraitsT<::apipb::SRv6Behavior_internal_data_>
    internal::EnumTraitsImpl::value<::apipb::SRv6Behavior>;
}  // namespace protobuf
}  // namespace google

namespace apipb {
enum AsSegment_Type : int {
  AsSegment_Type_UNKNOWN = 0,
  AsSegment_Type_AS_SET = 1,
  AsSegment_Type_AS_SEQUENCE = 2,
  AsSegment_Type_AS_CONFED_SEQUENCE = 3,
  AsSegment_Type_AS_CONFED_SET = 4,
  AsSegment_Type_AsSegment_Type_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  AsSegment_Type_AsSegment_Type_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t AsSegment_Type_internal_data_[];
inline constexpr AsSegment_Type AsSegment_Type_Type_MIN =
    static_cast<AsSegment_Type>(0);
inline constexpr AsSegment_Type AsSegment_Type_Type_MAX =
    static_cast<AsSegment_Type>(4);
[[nodiscard]] inline bool AsSegment_Type_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int AsSegment_Type_Type_ARRAYSIZE = 4 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
AsSegment_Type_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(AsSegment_Type) {
  return AsSegment_Type_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& AsSegment_Type_Name(T value) {
  static_assert(::std::is_same<T, AsSegment_Type>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to Type_Name().");
  return AsSegment_Type_Name(static_cast<AsSegment_Type>(value));
}
template <>
[[nodiscard]] inline const ::std::string& AsSegment_Type_Name(AsSegment_Type value) {
  return ::google::protobuf::internal::NameOfDenseEnum<AsSegment_Type_descriptor, 0, 4>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool AsSegment_Type_Parse(
    ::absl::string_view name, AsSegment_Type* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<AsSegment_Type>(AsSegment_Type_descriptor(), name,
                                           value);
}
enum LsOspfRouteType : int {
  LS_OSPF_ROUTE_TYPE_UNKNOWN = 0,
  LS_OSPF_ROUTE_TYPE_INTRA_AREA = 1,
  LS_OSPF_ROUTE_TYPE_INTER_AREA = 2,
  LS_OSPF_ROUTE_TYPE_EXTERNAL1 = 3,
  LS_OSPF_ROUTE_TYPE_EXTERNAL2 = 4,
  LS_OSPF_ROUTE_TYPE_NSSA1 = 5,
  LS_OSPF_ROUTE_TYPE_NSSA2 = 6,
  LsOspfRouteType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  LsOspfRouteType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t LsOspfRouteType_internal_data_[];
inline constexpr LsOspfRouteType LsOspfRouteType_MIN =
    static_cast<LsOspfRouteType>(0);
inline constexpr LsOspfRouteType LsOspfRouteType_MAX =
    static_cast<LsOspfRouteType>(6);
[[nodiscard]] inline bool LsOspfRouteType_IsValid(int value) {
  return 0 <= value && value <= 6;
}
inline constexpr int LsOspfRouteType_ARRAYSIZE = 6 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
LsOspfRouteType_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(LsOspfRouteType) {
  return LsOspfRouteType_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& LsOspfRouteType_Name(T value) {
  static_assert(::std::is_same<T, LsOspfRouteType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to LsOspfRouteType_Name().");
  return LsOspfRouteType_Name(static_cast<LsOspfRouteType>(value));
}
template <>
[[nodiscard]] inline const ::std::string& LsOspfRouteType_Name(LsOspfRouteType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<LsOspfRouteType_descriptor, 0, 6>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool LsOspfRouteType_Parse(
    ::absl::string_view name, LsOspfRouteType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<LsOspfRouteType>(LsOspfRouteType_descriptor(), name,
                                           value);
}
enum LsNLRIType : int {
  LS_NLRI_UNKNOWN = 0,
  LS_NLRI_NODE = 1,
  LS_NLRI_LINK = 2,
  LS_NLRI_PREFIX_V4 = 3,
  LS_NLRI_PREFIX_V6 = 4,
  LsNLRIType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  LsNLRIType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t LsNLRIType_internal_data_[];
inline constexpr LsNLRIType LsNLRIType_MIN =
    static_cast<LsNLRIType>(0);
inline constexpr LsNLRIType LsNLRIType_MAX =
    static_cast<LsNLRIType>(4);
[[nodiscard]] inline bool LsNLRIType_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int LsNLRIType_ARRAYSIZE = 4 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
LsNLRIType_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(LsNLRIType) {
  return LsNLRIType_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& LsNLRIType_Name(T value) {
  static_assert(::std::is_same<T, LsNLRIType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to LsNLRIType_Name().");
  return LsNLRIType_Name(static_cast<LsNLRIType>(value));
}
template <>
[[nodiscard]] inline const ::std::string& LsNLRIType_Name(LsNLRIType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<LsNLRIType_descriptor, 0, 4>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool LsNLRIType_Parse(
    ::absl::string_view name, LsNLRIType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<LsNLRIType>(LsNLRIType_descriptor(), name,
                                           value);
}
enum LsProtocolID : int {
  LS_PROTOCOL_UNKNOWN = 0,
  LS_PROTOCOL_ISIS_L1 = 1,
  LS_PROTOCOL_ISIS_L2 = 2,
  LS_PROTOCOL_OSPF_V2 = 3,
  LS_PROTOCOL_DIRECT = 4,
  LS_PROTOCOL_STATIC = 5,
  LS_PROTOCOL_OSPF_V3 = 6,
  LsProtocolID_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  LsProtocolID_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t LsProtocolID_internal_data_[];
inline constexpr LsProtocolID LsProtocolID_MIN =
    static_cast<LsProtocolID>(0);
inline constexpr LsProtocolID LsProtocolID_MAX =
    static_cast<LsProtocolID>(6);
[[nodiscard]] inline bool LsProtocolID_IsValid(int value) {
  return 0 <= value && value <= 6;
}
inline constexpr int LsProtocolID_ARRAYSIZE = 6 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
LsProtocolID_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(LsProtocolID) {
  return LsProtocolID_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& LsProtocolID_Name(T value) {
  static_assert(::std::is_same<T, LsProtocolID>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to LsProtocolID_Name().");
  return LsProtocolID_Name(static_cast<LsProtocolID>(value));
}
template <>
[[nodiscard]] inline const ::std::string& LsProtocolID_Name(LsProtocolID value) {
  return ::google::protobuf::internal::NameOfDenseEnum<LsProtocolID_descriptor, 0, 6>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool LsProtocolID_Parse(
    ::absl::string_view name, LsProtocolID* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<LsProtocolID>(LsProtocolID_descriptor(), name,
                                           value);
}
enum SRv6Behavior : int {
  RESERVED = 0,
  END = 1,
  END_WITH_PSP = 2,
  END_WITH_USP = 3,
  END_WITH_PSP_USP = 4,
  ENDX = 5,
  ENDX_WITH_PSP = 6,
  ENDX_WITH_USP = 7,
  ENDX_WITH_PSP_USP = 8,
  ENDT = 9,
  ENDT_WITH_PSP = 10,
  ENDT_WITH_USP = 11,
  ENDT_WITH_PSP_USP = 12,
  END_B6_ENCAPS = 14,
  END_BM = 15,
  END_DX6 = 16,
  END_DX4 = 17,
  END_DT6 = 18,
  END_DT4 = 19,
  END_DT46 = 20,
  END_DX2 = 21,
  END_DX2V = 22,
  END_DT2U = 23,
  END_DT2M = 24,
  END_B6_ENCAPS_Red = 27,
  END_WITH_USD = 28,
  END_WITH_PSP_USD = 29,
  END_WITH_USP_USD = 30,
  END_WITH_PSP_USP_USD = 31,
  ENDX_WITH_USD = 32,
  ENDX_WITH_PSP_USD = 33,
  ENDX_WITH_USP_USD = 34,
  ENDX_WITH_PSP_USP_USD = 35,
  ENDT_WITH_USD = 36,
  ENDT_WITH_PSP_USD = 37,
  ENDT_WITH_USP_USD = 38,
  ENDT_WITH_PSP_USP_USD = 39,
  ENDM_GTP6D = 69,
  ENDM_GTP6DI = 70,
  ENDM_GTP6E = 71,
  ENDM_GTP4E = 72,
  SRv6Behavior_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  SRv6Behavior_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t SRv6Behavior_internal_data_[];
inline constexpr SRv6Behavior SRv6Behavior_MIN =
    static_cast<SRv6Behavior>(0);
inline constexpr SRv6Behavior SRv6Behavior_MAX =
    static_cast<SRv6Behavior>(72);
[[nodiscard]] inline bool SRv6Behavior_IsValid(int value) {
  return ::google::protobuf::internal::ValidateEnum(value, SRv6Behavior_internal_data_);
}
inline constexpr int SRv6Behavior_ARRAYSIZE = 72 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
SRv6Behavior_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(SRv6Behavior) {
  return SRv6Behavior_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& SRv6Behavior_Name(T value) {
  static_assert(::std::is_same<T, SRv6Behavior>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to SRv6Behavior_Name().");
  return SRv6Behavior_Name(static_cast<SRv6Behavior>(value));
}
template <>
[[nodiscard]] inline const ::std::string& SRv6Behavior_Name(SRv6Behavior value) {
  return ::google::protobuf::internal::NameOfDenseEnum<SRv6Behavior_descriptor, 0, 72>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool SRv6Behavior_Parse(
    ::absl::string_view name, SRv6Behavior* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<SRv6Behavior>(SRv6Behavior_descriptor(), name,
                                           value);
}
enum ENLPType : int {
  Reserved = 0,
  Type1 = 1,
  Type2 = 2,
  Type3 = 3,
  Type4 = 4,
  ENLPType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  ENLPType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t ENLPType_internal_data_[];
inline constexpr ENLPType ENLPType_MIN =
    static_cast<ENLPType>(0);
inline constexpr ENLPType ENLPType_MAX =
    static_cast<ENLPType>(4);
[[nodiscard]] inline bool ENLPType_IsValid(int value) {
  return 0 <= value && value <= 4;
}
inline constexpr int ENLPType_ARRAYSIZE = 4 + 1;
[[nodiscard]] const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL
ENLPType_descriptor();
[[nodiscard]] inline auto ProtobufInternalGetEnumDescriptor(ENLPType) {
  return ENLPType_descriptor();
}
template <typename T>
[[nodiscard]] const ::std::string& ENLPType_Name(T value) {
  static_assert(::std::is_same<T, ENLPType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to ENLPType_Name().");
  return ENLPType_Name(static_cast<ENLPType>(value));
}
template <>
[[nodiscard]] inline const ::std::string& ENLPType_Name(ENLPType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<ENLPType_descriptor, 0, 4>(
      static_cast<int>(value));
}
[[nodiscard]] inline bool ENLPType_Parse(
    ::absl::string_view name, ENLPType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<ENLPType>(ENLPType_descriptor(), name,
                                           value);
}
using ::google::protobuf::internal::generated_enum::AbslParseFlag;
using ::google::protobuf::internal::generated_enum::AbslUnparseFlag;

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


// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ValidationExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.ValidationExtended) */ {
 public:
  inline ValidationExtended() : ValidationExtended(nullptr) {}
  ~ValidationExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ValidationExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ValidationExtended));
  }
#endif

  template <typename = void>
  explicit constexpr ValidationExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline ValidationExtended(const ValidationExtended& from) : ValidationExtended(nullptr, from) {}
  inline ValidationExtended(ValidationExtended&& from) noexcept : ValidationExtended(nullptr, ::std::move(from)) {}
  inline ValidationExtended& operator=(const ValidationExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline ValidationExtended& operator=(ValidationExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const ValidationExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ValidationExtended>(&ValidationExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 52;
  friend void swap(ValidationExtended& a, ValidationExtended& b) { a.Swap(&b); }
  inline void Swap(ValidationExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ValidationExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] ValidationExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ValidationExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ValidationExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ValidationExtended& from) { ValidationExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ValidationExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.ValidationExtended"; }

  explicit ValidationExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ValidationExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ValidationExtended& from);
  ValidationExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ValidationExtended&& from) noexcept
      : ValidationExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kStateFieldNumber = 1,
  };
  // uint32 state = 1;
  void clear_state() ;
  [[nodiscard]] ::uint32_t state() const;
  void set_state(::uint32_t value);

  private:
  ::uint32_t _internal_state() const;
  void _internal_set_state(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.ValidationExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ValidationExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t state_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED UnknownExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.UnknownExtended) */ {
 public:
  inline UnknownExtended() : UnknownExtended(nullptr) {}
  ~UnknownExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(UnknownExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(UnknownExtended));
  }
#endif

  template <typename = void>
  explicit constexpr UnknownExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline UnknownExtended(const UnknownExtended& from) : UnknownExtended(nullptr, from) {}
  inline UnknownExtended(UnknownExtended&& from) noexcept : UnknownExtended(nullptr, ::std::move(from)) {}
  inline UnknownExtended& operator=(const UnknownExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline UnknownExtended& operator=(UnknownExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const UnknownExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<UnknownExtended>(&UnknownExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 68;
  friend void swap(UnknownExtended& a, UnknownExtended& b) { a.Swap(&b); }
  inline void Swap(UnknownExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(UnknownExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] UnknownExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<UnknownExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const UnknownExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const UnknownExtended& from) { UnknownExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(UnknownExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.UnknownExtended"; }

  explicit UnknownExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  UnknownExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const UnknownExtended& from);
  UnknownExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, UnknownExtended&& from) noexcept
      : UnknownExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 2,
    kTypeFieldNumber = 1,
  };
  // bytes value = 2;
  void clear_value() ;
  [[nodiscard]] const ::std::string& value() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_value();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_value();
  void set_allocated_value(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_value() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_value(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // uint32 type = 1;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.UnknownExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const UnknownExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr value_;
    ::uint32_t type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED UnknownAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.UnknownAttribute) */ {
 public:
  inline UnknownAttribute() : UnknownAttribute(nullptr) {}
  ~UnknownAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(UnknownAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(UnknownAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr UnknownAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline UnknownAttribute(const UnknownAttribute& from) : UnknownAttribute(nullptr, from) {}
  inline UnknownAttribute(UnknownAttribute&& from) noexcept : UnknownAttribute(nullptr, ::std::move(from)) {}
  inline UnknownAttribute& operator=(const UnknownAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline UnknownAttribute& operator=(UnknownAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const UnknownAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<UnknownAttribute>(&UnknownAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 114;
  friend void swap(UnknownAttribute& a, UnknownAttribute& b) { a.Swap(&b); }
  inline void Swap(UnknownAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(UnknownAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] UnknownAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<UnknownAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const UnknownAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const UnknownAttribute& from) { UnknownAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(UnknownAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.UnknownAttribute"; }

  explicit UnknownAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  UnknownAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const UnknownAttribute& from);
  UnknownAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, UnknownAttribute&& from) noexcept
      : UnknownAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 3,
    kFlagsFieldNumber = 1,
    kTypeFieldNumber = 2,
  };
  // bytes value = 3;
  void clear_value() ;
  [[nodiscard]] const ::std::string& value() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_value();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_value();
  void set_allocated_value(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_value() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_value(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // uint32 flags = 1;
  void clear_flags() ;
  [[nodiscard]] ::uint32_t flags() const;
  void set_flags(::uint32_t value);

  private:
  ::uint32_t _internal_flags() const;
  void _internal_set_flags(::uint32_t value);

  public:
  // uint32 type = 2;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.UnknownAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const UnknownAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr value_;
    ::uint32_t flags_;
    ::uint32_t type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TwoOctetAsSpecificExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TwoOctetAsSpecificExtended) */ {
 public:
  inline TwoOctetAsSpecificExtended() : TwoOctetAsSpecificExtended(nullptr) {}
  ~TwoOctetAsSpecificExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TwoOctetAsSpecificExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TwoOctetAsSpecificExtended));
  }
#endif

  template <typename = void>
  explicit constexpr TwoOctetAsSpecificExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TwoOctetAsSpecificExtended(const TwoOctetAsSpecificExtended& from) : TwoOctetAsSpecificExtended(nullptr, from) {}
  inline TwoOctetAsSpecificExtended(TwoOctetAsSpecificExtended&& from) noexcept : TwoOctetAsSpecificExtended(nullptr, ::std::move(from)) {}
  inline TwoOctetAsSpecificExtended& operator=(const TwoOctetAsSpecificExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline TwoOctetAsSpecificExtended& operator=(TwoOctetAsSpecificExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TwoOctetAsSpecificExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TwoOctetAsSpecificExtended>(&TwoOctetAsSpecificExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 48;
  friend void swap(TwoOctetAsSpecificExtended& a, TwoOctetAsSpecificExtended& b) { a.Swap(&b); }
  inline void Swap(TwoOctetAsSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TwoOctetAsSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TwoOctetAsSpecificExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TwoOctetAsSpecificExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TwoOctetAsSpecificExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TwoOctetAsSpecificExtended& from) { TwoOctetAsSpecificExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TwoOctetAsSpecificExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TwoOctetAsSpecificExtended"; }

  explicit TwoOctetAsSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TwoOctetAsSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TwoOctetAsSpecificExtended& from);
  TwoOctetAsSpecificExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TwoOctetAsSpecificExtended&& from) noexcept
      : TwoOctetAsSpecificExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIsTransitiveFieldNumber = 1,
    kSubTypeFieldNumber = 2,
    kAsnFieldNumber = 3,
    kLocalAdminFieldNumber = 4,
  };
  // bool is_transitive = 1;
  void clear_is_transitive() ;
  [[nodiscard]] bool is_transitive() const;
  void set_is_transitive(bool value);

  private:
  bool _internal_is_transitive() const;
  void _internal_set_is_transitive(bool value);

  public:
  // uint32 sub_type = 2;
  void clear_sub_type() ;
  [[nodiscard]] ::uint32_t sub_type() const;
  void set_sub_type(::uint32_t value);

  private:
  ::uint32_t _internal_sub_type() const;
  void _internal_set_sub_type(::uint32_t value);

  public:
  // uint32 asn = 3;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // uint32 local_admin = 4;
  void clear_local_admin() ;
  [[nodiscard]] ::uint32_t local_admin() const;
  void set_local_admin(::uint32_t value);

  private:
  ::uint32_t _internal_local_admin() const;
  void _internal_set_local_admin(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TwoOctetAsSpecificExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TwoOctetAsSpecificExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool is_transitive_;
    ::uint32_t sub_type_;
    ::uint32_t asn_;
    ::uint32_t local_admin_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVUnknown final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVUnknown) */ {
 public:
  inline TunnelEncapSubTLVUnknown() : TunnelEncapSubTLVUnknown(nullptr) {}
  ~TunnelEncapSubTLVUnknown() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVUnknown* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVUnknown));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVUnknown(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVUnknown(const TunnelEncapSubTLVUnknown& from) : TunnelEncapSubTLVUnknown(nullptr, from) {}
  inline TunnelEncapSubTLVUnknown(TunnelEncapSubTLVUnknown&& from) noexcept : TunnelEncapSubTLVUnknown(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVUnknown& operator=(const TunnelEncapSubTLVUnknown& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVUnknown& operator=(TunnelEncapSubTLVUnknown&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVUnknown& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVUnknown>(&TunnelEncapSubTLVUnknown_globals_);
  }
  static constexpr int kIndexInFileMessages = 91;
  friend void swap(TunnelEncapSubTLVUnknown& a, TunnelEncapSubTLVUnknown& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVUnknown* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVUnknown* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVUnknown* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVUnknown>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVUnknown& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVUnknown& from) { TunnelEncapSubTLVUnknown::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVUnknown* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVUnknown"; }

  explicit TunnelEncapSubTLVUnknown(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVUnknown(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVUnknown& from);
  TunnelEncapSubTLVUnknown(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVUnknown&& from) noexcept
      : TunnelEncapSubTLVUnknown(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 2,
    kTypeFieldNumber = 1,
  };
  // bytes value = 2;
  void clear_value() ;
  [[nodiscard]] const ::std::string& value() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_value();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_value();
  void set_allocated_value(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_value() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_value(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // uint32 type = 1;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVUnknown)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVUnknown& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr value_;
    ::uint32_t type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVUDPDestPort final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVUDPDestPort) */ {
 public:
  inline TunnelEncapSubTLVUDPDestPort() : TunnelEncapSubTLVUDPDestPort(nullptr) {}
  ~TunnelEncapSubTLVUDPDestPort() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVUDPDestPort* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVUDPDestPort));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVUDPDestPort(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVUDPDestPort(const TunnelEncapSubTLVUDPDestPort& from) : TunnelEncapSubTLVUDPDestPort(nullptr, from) {}
  inline TunnelEncapSubTLVUDPDestPort(TunnelEncapSubTLVUDPDestPort&& from) noexcept : TunnelEncapSubTLVUDPDestPort(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVUDPDestPort& operator=(const TunnelEncapSubTLVUDPDestPort& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVUDPDestPort& operator=(TunnelEncapSubTLVUDPDestPort&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVUDPDestPort& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVUDPDestPort>(&TunnelEncapSubTLVUDPDestPort_globals_);
  }
  static constexpr int kIndexInFileMessages = 90;
  friend void swap(TunnelEncapSubTLVUDPDestPort& a, TunnelEncapSubTLVUDPDestPort& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVUDPDestPort* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVUDPDestPort* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVUDPDestPort* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVUDPDestPort>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVUDPDestPort& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVUDPDestPort& from) { TunnelEncapSubTLVUDPDestPort::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVUDPDestPort* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVUDPDestPort"; }

  explicit TunnelEncapSubTLVUDPDestPort(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVUDPDestPort(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVUDPDestPort& from);
  TunnelEncapSubTLVUDPDestPort(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVUDPDestPort&& from) noexcept
      : TunnelEncapSubTLVUDPDestPort(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPortFieldNumber = 1,
  };
  // uint32 port = 1;
  void clear_port() ;
  [[nodiscard]] ::uint32_t port() const;
  void set_port(::uint32_t value);

  private:
  ::uint32_t _internal_port() const;
  void _internal_set_port(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVUDPDestPort)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVUDPDestPort& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t port_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVSRPriority final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVSRPriority) */ {
 public:
  inline TunnelEncapSubTLVSRPriority() : TunnelEncapSubTLVSRPriority(nullptr) {}
  ~TunnelEncapSubTLVSRPriority() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVSRPriority* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVSRPriority));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVSRPriority(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVSRPriority(const TunnelEncapSubTLVSRPriority& from) : TunnelEncapSubTLVSRPriority(nullptr, from) {}
  inline TunnelEncapSubTLVSRPriority(TunnelEncapSubTLVSRPriority&& from) noexcept : TunnelEncapSubTLVSRPriority(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVSRPriority& operator=(const TunnelEncapSubTLVSRPriority& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVSRPriority& operator=(TunnelEncapSubTLVSRPriority&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVSRPriority& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVSRPriority>(&TunnelEncapSubTLVSRPriority_globals_);
  }
  static constexpr int kIndexInFileMessages = 78;
  friend void swap(TunnelEncapSubTLVSRPriority& a, TunnelEncapSubTLVSRPriority& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVSRPriority* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVSRPriority* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVSRPriority* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVSRPriority>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVSRPriority& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVSRPriority& from) { TunnelEncapSubTLVSRPriority::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVSRPriority* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVSRPriority"; }

  explicit TunnelEncapSubTLVSRPriority(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVSRPriority(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVSRPriority& from);
  TunnelEncapSubTLVSRPriority(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVSRPriority&& from) noexcept
      : TunnelEncapSubTLVSRPriority(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPriorityFieldNumber = 1,
  };
  // uint32 priority = 1;
  void clear_priority() ;
  [[nodiscard]] ::uint32_t priority() const;
  void set_priority(::uint32_t value);

  private:
  ::uint32_t _internal_priority() const;
  void _internal_set_priority(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVSRPriority)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVSRPriority& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t priority_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVSRPreference final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVSRPreference) */ {
 public:
  inline TunnelEncapSubTLVSRPreference() : TunnelEncapSubTLVSRPreference(nullptr) {}
  ~TunnelEncapSubTLVSRPreference() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVSRPreference* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVSRPreference));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVSRPreference(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVSRPreference(const TunnelEncapSubTLVSRPreference& from) : TunnelEncapSubTLVSRPreference(nullptr, from) {}
  inline TunnelEncapSubTLVSRPreference(TunnelEncapSubTLVSRPreference&& from) noexcept : TunnelEncapSubTLVSRPreference(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVSRPreference& operator=(const TunnelEncapSubTLVSRPreference& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVSRPreference& operator=(TunnelEncapSubTLVSRPreference&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVSRPreference& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVSRPreference>(&TunnelEncapSubTLVSRPreference_globals_);
  }
  static constexpr int kIndexInFileMessages = 76;
  friend void swap(TunnelEncapSubTLVSRPreference& a, TunnelEncapSubTLVSRPreference& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVSRPreference* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVSRPreference* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVSRPreference* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVSRPreference>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVSRPreference& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVSRPreference& from) { TunnelEncapSubTLVSRPreference::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVSRPreference* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVSRPreference"; }

  explicit TunnelEncapSubTLVSRPreference(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVSRPreference(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVSRPreference& from);
  TunnelEncapSubTLVSRPreference(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVSRPreference&& from) noexcept
      : TunnelEncapSubTLVSRPreference(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFlagsFieldNumber = 1,
    kPreferenceFieldNumber = 2,
  };
  // uint32 flags = 1;
  void clear_flags() ;
  [[nodiscard]] ::uint32_t flags() const;
  void set_flags(::uint32_t value);

  private:
  ::uint32_t _internal_flags() const;
  void _internal_set_flags(::uint32_t value);

  public:
  // uint32 preference = 2;
  void clear_preference() ;
  [[nodiscard]] ::uint32_t preference() const;
  void set_preference(::uint32_t value);

  private:
  ::uint32_t _internal_preference() const;
  void _internal_set_preference(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVSRPreference)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVSRPreference& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t flags_;
    ::uint32_t preference_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVSRENLP final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVSRENLP) */ {
 public:
  inline TunnelEncapSubTLVSRENLP() : TunnelEncapSubTLVSRENLP(nullptr) {}
  ~TunnelEncapSubTLVSRENLP() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVSRENLP* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVSRENLP));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVSRENLP(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVSRENLP(const TunnelEncapSubTLVSRENLP& from) : TunnelEncapSubTLVSRENLP(nullptr, from) {}
  inline TunnelEncapSubTLVSRENLP(TunnelEncapSubTLVSRENLP&& from) noexcept : TunnelEncapSubTLVSRENLP(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVSRENLP& operator=(const TunnelEncapSubTLVSRENLP& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVSRENLP& operator=(TunnelEncapSubTLVSRENLP&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVSRENLP& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVSRENLP>(&TunnelEncapSubTLVSRENLP_globals_);
  }
  static constexpr int kIndexInFileMessages = 83;
  friend void swap(TunnelEncapSubTLVSRENLP& a, TunnelEncapSubTLVSRENLP& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVSRENLP* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVSRENLP* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVSRENLP* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVSRENLP>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVSRENLP& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVSRENLP& from) { TunnelEncapSubTLVSRENLP::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVSRENLP* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVSRENLP"; }

  explicit TunnelEncapSubTLVSRENLP(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVSRENLP(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVSRENLP& from);
  TunnelEncapSubTLVSRENLP(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVSRENLP&& from) noexcept
      : TunnelEncapSubTLVSRENLP(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFlagsFieldNumber = 1,
    kEnlpFieldNumber = 2,
  };
  // uint32 flags = 1;
  void clear_flags() ;
  [[nodiscard]] ::uint32_t flags() const;
  void set_flags(::uint32_t value);

  private:
  ::uint32_t _internal_flags() const;
  void _internal_set_flags(::uint32_t value);

  public:
  // .apipb.ENLPType enlp = 2;
  void clear_enlp() ;
  [[nodiscard]] ::apipb::ENLPType enlp() const;
  void set_enlp(::apipb::ENLPType value);

  private:
  ::apipb::ENLPType _internal_enlp() const;
  void _internal_set_enlp(::apipb::ENLPType value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVSRENLP)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVSRENLP& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t flags_;
    int enlp_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVSRCandidatePathName final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVSRCandidatePathName) */ {
 public:
  inline TunnelEncapSubTLVSRCandidatePathName() : TunnelEncapSubTLVSRCandidatePathName(nullptr) {}
  ~TunnelEncapSubTLVSRCandidatePathName() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVSRCandidatePathName* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVSRCandidatePathName));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVSRCandidatePathName(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVSRCandidatePathName(const TunnelEncapSubTLVSRCandidatePathName& from) : TunnelEncapSubTLVSRCandidatePathName(nullptr, from) {}
  inline TunnelEncapSubTLVSRCandidatePathName(TunnelEncapSubTLVSRCandidatePathName&& from) noexcept : TunnelEncapSubTLVSRCandidatePathName(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVSRCandidatePathName& operator=(const TunnelEncapSubTLVSRCandidatePathName& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVSRCandidatePathName& operator=(TunnelEncapSubTLVSRCandidatePathName&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVSRCandidatePathName& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVSRCandidatePathName>(&TunnelEncapSubTLVSRCandidatePathName_globals_);
  }
  static constexpr int kIndexInFileMessages = 77;
  friend void swap(TunnelEncapSubTLVSRCandidatePathName& a, TunnelEncapSubTLVSRCandidatePathName& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVSRCandidatePathName* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVSRCandidatePathName* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVSRCandidatePathName* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVSRCandidatePathName>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVSRCandidatePathName& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVSRCandidatePathName& from) { TunnelEncapSubTLVSRCandidatePathName::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVSRCandidatePathName* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVSRCandidatePathName"; }

  explicit TunnelEncapSubTLVSRCandidatePathName(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVSRCandidatePathName(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVSRCandidatePathName& from);
  TunnelEncapSubTLVSRCandidatePathName(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVSRCandidatePathName&& from) noexcept
      : TunnelEncapSubTLVSRCandidatePathName(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kCandidatePathNameFieldNumber = 1,
  };
  // string candidate_path_name = 1;
  void clear_candidate_path_name() ;
  [[nodiscard]] const ::std::string& candidate_path_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_candidate_path_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_candidate_path_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_candidate_path_name();
  void set_allocated_candidate_path_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_candidate_path_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_candidate_path_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_candidate_path_name();

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVSRCandidatePathName)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 70,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVSRCandidatePathName& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr candidate_path_name_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVProtocol final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVProtocol) */ {
 public:
  inline TunnelEncapSubTLVProtocol() : TunnelEncapSubTLVProtocol(nullptr) {}
  ~TunnelEncapSubTLVProtocol() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVProtocol* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVProtocol));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVProtocol(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVProtocol(const TunnelEncapSubTLVProtocol& from) : TunnelEncapSubTLVProtocol(nullptr, from) {}
  inline TunnelEncapSubTLVProtocol(TunnelEncapSubTLVProtocol&& from) noexcept : TunnelEncapSubTLVProtocol(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVProtocol& operator=(const TunnelEncapSubTLVProtocol& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVProtocol& operator=(TunnelEncapSubTLVProtocol&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVProtocol& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVProtocol>(&TunnelEncapSubTLVProtocol_globals_);
  }
  static constexpr int kIndexInFileMessages = 74;
  friend void swap(TunnelEncapSubTLVProtocol& a, TunnelEncapSubTLVProtocol& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVProtocol* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVProtocol* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVProtocol* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVProtocol>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVProtocol& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVProtocol& from) { TunnelEncapSubTLVProtocol::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVProtocol* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVProtocol"; }

  explicit TunnelEncapSubTLVProtocol(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVProtocol(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVProtocol& from);
  TunnelEncapSubTLVProtocol(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVProtocol&& from) noexcept
      : TunnelEncapSubTLVProtocol(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kProtocolFieldNumber = 1,
  };
  // uint32 protocol = 1;
  void clear_protocol() ;
  [[nodiscard]] ::uint32_t protocol() const;
  void set_protocol(::uint32_t value);

  private:
  ::uint32_t _internal_protocol() const;
  void _internal_set_protocol(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVProtocol)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVProtocol& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t protocol_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVEncapsulation final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVEncapsulation) */ {
 public:
  inline TunnelEncapSubTLVEncapsulation() : TunnelEncapSubTLVEncapsulation(nullptr) {}
  ~TunnelEncapSubTLVEncapsulation() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVEncapsulation* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVEncapsulation));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVEncapsulation(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVEncapsulation(const TunnelEncapSubTLVEncapsulation& from) : TunnelEncapSubTLVEncapsulation(nullptr, from) {}
  inline TunnelEncapSubTLVEncapsulation(TunnelEncapSubTLVEncapsulation&& from) noexcept : TunnelEncapSubTLVEncapsulation(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVEncapsulation& operator=(const TunnelEncapSubTLVEncapsulation& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVEncapsulation& operator=(TunnelEncapSubTLVEncapsulation&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVEncapsulation& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVEncapsulation>(&TunnelEncapSubTLVEncapsulation_globals_);
  }
  static constexpr int kIndexInFileMessages = 73;
  friend void swap(TunnelEncapSubTLVEncapsulation& a, TunnelEncapSubTLVEncapsulation& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVEncapsulation* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVEncapsulation* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVEncapsulation* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVEncapsulation>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVEncapsulation& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVEncapsulation& from) { TunnelEncapSubTLVEncapsulation::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVEncapsulation* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVEncapsulation"; }

  explicit TunnelEncapSubTLVEncapsulation(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVEncapsulation(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVEncapsulation& from);
  TunnelEncapSubTLVEncapsulation(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVEncapsulation&& from) noexcept
      : TunnelEncapSubTLVEncapsulation(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kCookieFieldNumber = 2,
    kKeyFieldNumber = 1,
  };
  // bytes cookie = 2;
  void clear_cookie() ;
  [[nodiscard]] const ::std::string& cookie() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_cookie(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_cookie();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_cookie();
  void set_allocated_cookie(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_cookie() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_cookie(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_cookie();

  public:
  // uint32 key = 1;
  void clear_key() ;
  [[nodiscard]] ::uint32_t key() const;
  void set_key(::uint32_t value);

  private:
  ::uint32_t _internal_key() const;
  void _internal_set_key(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVEncapsulation)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVEncapsulation& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr cookie_;
    ::uint32_t key_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVEgressEndpoint final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVEgressEndpoint) */ {
 public:
  inline TunnelEncapSubTLVEgressEndpoint() : TunnelEncapSubTLVEgressEndpoint(nullptr) {}
  ~TunnelEncapSubTLVEgressEndpoint() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVEgressEndpoint* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVEgressEndpoint));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVEgressEndpoint(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVEgressEndpoint(const TunnelEncapSubTLVEgressEndpoint& from) : TunnelEncapSubTLVEgressEndpoint(nullptr, from) {}
  inline TunnelEncapSubTLVEgressEndpoint(TunnelEncapSubTLVEgressEndpoint&& from) noexcept : TunnelEncapSubTLVEgressEndpoint(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVEgressEndpoint& operator=(const TunnelEncapSubTLVEgressEndpoint& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVEgressEndpoint& operator=(TunnelEncapSubTLVEgressEndpoint&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVEgressEndpoint& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVEgressEndpoint>(&TunnelEncapSubTLVEgressEndpoint_globals_);
  }
  static constexpr int kIndexInFileMessages = 89;
  friend void swap(TunnelEncapSubTLVEgressEndpoint& a, TunnelEncapSubTLVEgressEndpoint& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVEgressEndpoint* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVEgressEndpoint* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVEgressEndpoint* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVEgressEndpoint>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVEgressEndpoint& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVEgressEndpoint& from) { TunnelEncapSubTLVEgressEndpoint::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVEgressEndpoint* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVEgressEndpoint"; }

  explicit TunnelEncapSubTLVEgressEndpoint(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVEgressEndpoint(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVEgressEndpoint& from);
  TunnelEncapSubTLVEgressEndpoint(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVEgressEndpoint&& from) noexcept
      : TunnelEncapSubTLVEgressEndpoint(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 1,
  };
  // string address = 1;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVEgressEndpoint)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 53,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVEgressEndpoint& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVColor final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVColor) */ {
 public:
  inline TunnelEncapSubTLVColor() : TunnelEncapSubTLVColor(nullptr) {}
  ~TunnelEncapSubTLVColor() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVColor* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVColor));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVColor(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVColor(const TunnelEncapSubTLVColor& from) : TunnelEncapSubTLVColor(nullptr, from) {}
  inline TunnelEncapSubTLVColor(TunnelEncapSubTLVColor&& from) noexcept : TunnelEncapSubTLVColor(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVColor& operator=(const TunnelEncapSubTLVColor& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVColor& operator=(TunnelEncapSubTLVColor&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVColor& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVColor>(&TunnelEncapSubTLVColor_globals_);
  }
  static constexpr int kIndexInFileMessages = 75;
  friend void swap(TunnelEncapSubTLVColor& a, TunnelEncapSubTLVColor& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVColor* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVColor* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVColor* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVColor>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVColor& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVColor& from) { TunnelEncapSubTLVColor::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVColor* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVColor"; }

  explicit TunnelEncapSubTLVColor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVColor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVColor& from);
  TunnelEncapSubTLVColor(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVColor&& from) noexcept
      : TunnelEncapSubTLVColor(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kColorFieldNumber = 1,
  };
  // uint32 color = 1;
  void clear_color() ;
  [[nodiscard]] ::uint32_t color() const;
  void set_color(::uint32_t value);

  private:
  ::uint32_t _internal_color() const;
  void _internal_set_color(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVColor)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVColor& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t color_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TrafficRemarkExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TrafficRemarkExtended) */ {
 public:
  inline TrafficRemarkExtended() : TrafficRemarkExtended(nullptr) {}
  ~TrafficRemarkExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TrafficRemarkExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TrafficRemarkExtended));
  }
#endif

  template <typename = void>
  explicit constexpr TrafficRemarkExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TrafficRemarkExtended(const TrafficRemarkExtended& from) : TrafficRemarkExtended(nullptr, from) {}
  inline TrafficRemarkExtended(TrafficRemarkExtended&& from) noexcept : TrafficRemarkExtended(nullptr, ::std::move(from)) {}
  inline TrafficRemarkExtended& operator=(const TrafficRemarkExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline TrafficRemarkExtended& operator=(TrafficRemarkExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TrafficRemarkExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TrafficRemarkExtended>(&TrafficRemarkExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 66;
  friend void swap(TrafficRemarkExtended& a, TrafficRemarkExtended& b) { a.Swap(&b); }
  inline void Swap(TrafficRemarkExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TrafficRemarkExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TrafficRemarkExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TrafficRemarkExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TrafficRemarkExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TrafficRemarkExtended& from) { TrafficRemarkExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TrafficRemarkExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TrafficRemarkExtended"; }

  explicit TrafficRemarkExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TrafficRemarkExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TrafficRemarkExtended& from);
  TrafficRemarkExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TrafficRemarkExtended&& from) noexcept
      : TrafficRemarkExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kDscpFieldNumber = 1,
  };
  // uint32 dscp = 1;
  void clear_dscp() ;
  [[nodiscard]] ::uint32_t dscp() const;
  void set_dscp(::uint32_t value);

  private:
  ::uint32_t _internal_dscp() const;
  void _internal_set_dscp(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TrafficRemarkExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TrafficRemarkExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t dscp_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TrafficRateExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TrafficRateExtended) */ {
 public:
  inline TrafficRateExtended() : TrafficRateExtended(nullptr) {}
  ~TrafficRateExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TrafficRateExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TrafficRateExtended));
  }
#endif

  template <typename = void>
  explicit constexpr TrafficRateExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TrafficRateExtended(const TrafficRateExtended& from) : TrafficRateExtended(nullptr, from) {}
  inline TrafficRateExtended(TrafficRateExtended&& from) noexcept : TrafficRateExtended(nullptr, ::std::move(from)) {}
  inline TrafficRateExtended& operator=(const TrafficRateExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline TrafficRateExtended& operator=(TrafficRateExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TrafficRateExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TrafficRateExtended>(&TrafficRateExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 61;
  friend void swap(TrafficRateExtended& a, TrafficRateExtended& b) { a.Swap(&b); }
  inline void Swap(TrafficRateExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TrafficRateExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TrafficRateExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TrafficRateExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TrafficRateExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TrafficRateExtended& from) { TrafficRateExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TrafficRateExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TrafficRateExtended"; }

  explicit TrafficRateExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TrafficRateExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TrafficRateExtended& from);
  TrafficRateExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TrafficRateExtended&& from) noexcept
      : TrafficRateExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAsnFieldNumber = 1,
    kRateFieldNumber = 2,
  };
  // uint32 asn = 1;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // float rate = 2;
  void clear_rate() ;
  [[nodiscard]] float rate() const;
  void set_rate(float value);

  private:
  float _internal_rate() const;
  void _internal_set_rate(float value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TrafficRateExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TrafficRateExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t asn_;
    float rate_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TrafficActionExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TrafficActionExtended) */ {
 public:
  inline TrafficActionExtended() : TrafficActionExtended(nullptr) {}
  ~TrafficActionExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TrafficActionExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TrafficActionExtended));
  }
#endif

  template <typename = void>
  explicit constexpr TrafficActionExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TrafficActionExtended(const TrafficActionExtended& from) : TrafficActionExtended(nullptr, from) {}
  inline TrafficActionExtended(TrafficActionExtended&& from) noexcept : TrafficActionExtended(nullptr, ::std::move(from)) {}
  inline TrafficActionExtended& operator=(const TrafficActionExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline TrafficActionExtended& operator=(TrafficActionExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TrafficActionExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TrafficActionExtended>(&TrafficActionExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 62;
  friend void swap(TrafficActionExtended& a, TrafficActionExtended& b) { a.Swap(&b); }
  inline void Swap(TrafficActionExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TrafficActionExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TrafficActionExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TrafficActionExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TrafficActionExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TrafficActionExtended& from) { TrafficActionExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TrafficActionExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TrafficActionExtended"; }

  explicit TrafficActionExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TrafficActionExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TrafficActionExtended& from);
  TrafficActionExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TrafficActionExtended&& from) noexcept
      : TrafficActionExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTerminalFieldNumber = 1,
    kSampleFieldNumber = 2,
  };
  // bool terminal = 1;
  void clear_terminal() ;
  [[nodiscard]] bool terminal() const;
  void set_terminal(bool value);

  private:
  bool _internal_terminal() const;
  void _internal_set_terminal(bool value);

  public:
  // bool sample = 2;
  void clear_sample() ;
  [[nodiscard]] bool sample() const;
  void set_sample(bool value);

  private:
  bool _internal_sample() const;
  void _internal_set_sample(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TrafficActionExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TrafficActionExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool terminal_;
    bool sample_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SegmentFlags final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SegmentFlags) */ {
 public:
  inline SegmentFlags() : SegmentFlags(nullptr) {}
  ~SegmentFlags() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SegmentFlags* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SegmentFlags));
  }
#endif

  template <typename = void>
  explicit constexpr SegmentFlags(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SegmentFlags(const SegmentFlags& from) : SegmentFlags(nullptr, from) {}
  inline SegmentFlags(SegmentFlags&& from) noexcept : SegmentFlags(nullptr, ::std::move(from)) {}
  inline SegmentFlags& operator=(const SegmentFlags& from) {
    CopyFrom(from);
    return *this;
  }
  inline SegmentFlags& operator=(SegmentFlags&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SegmentFlags& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SegmentFlags>(&SegmentFlags_globals_);
  }
  static constexpr int kIndexInFileMessages = 85;
  friend void swap(SegmentFlags& a, SegmentFlags& b) { a.Swap(&b); }
  inline void Swap(SegmentFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SegmentFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SegmentFlags* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SegmentFlags>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SegmentFlags& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SegmentFlags& from) { SegmentFlags::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SegmentFlags* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SegmentFlags"; }

  explicit SegmentFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SegmentFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SegmentFlags& from);
  SegmentFlags(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SegmentFlags&& from) noexcept
      : SegmentFlags(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kVFlagFieldNumber = 1,
    kAFlagFieldNumber = 2,
    kSFlagFieldNumber = 3,
    kBFlagFieldNumber = 4,
  };
  // bool v_flag = 1;
  void clear_v_flag() ;
  [[nodiscard]] bool v_flag() const;
  void set_v_flag(bool value);

  private:
  bool _internal_v_flag() const;
  void _internal_set_v_flag(bool value);

  public:
  // bool a_flag = 2;
  void clear_a_flag() ;
  [[nodiscard]] bool a_flag() const;
  void set_a_flag(bool value);

  private:
  bool _internal_a_flag() const;
  void _internal_set_a_flag(bool value);

  public:
  // bool s_flag = 3;
  void clear_s_flag() ;
  [[nodiscard]] bool s_flag() const;
  void set_s_flag(bool value);

  private:
  bool _internal_s_flag() const;
  void _internal_set_s_flag(bool value);

  public:
  // bool b_flag = 4;
  void clear_b_flag() ;
  [[nodiscard]] bool b_flag() const;
  void set_b_flag(bool value);

  private:
  bool _internal_b_flag() const;
  void _internal_set_b_flag(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.SegmentFlags)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SegmentFlags& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool v_flag_;
    bool a_flag_;
    bool s_flag_;
    bool b_flag_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6StructureSubSubTLV final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRv6StructureSubSubTLV) */ {
 public:
  inline SRv6StructureSubSubTLV() : SRv6StructureSubSubTLV(nullptr) {}
  ~SRv6StructureSubSubTLV() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRv6StructureSubSubTLV* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRv6StructureSubSubTLV));
  }
#endif

  template <typename = void>
  explicit constexpr SRv6StructureSubSubTLV(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRv6StructureSubSubTLV(const SRv6StructureSubSubTLV& from) : SRv6StructureSubSubTLV(nullptr, from) {}
  inline SRv6StructureSubSubTLV(SRv6StructureSubSubTLV&& from) noexcept : SRv6StructureSubSubTLV(nullptr, ::std::move(from)) {}
  inline SRv6StructureSubSubTLV& operator=(const SRv6StructureSubSubTLV& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRv6StructureSubSubTLV& operator=(SRv6StructureSubSubTLV&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRv6StructureSubSubTLV& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRv6StructureSubSubTLV>(&SRv6StructureSubSubTLV_globals_);
  }
  static constexpr int kIndexInFileMessages = 115;
  friend void swap(SRv6StructureSubSubTLV& a, SRv6StructureSubSubTLV& b) { a.Swap(&b); }
  inline void Swap(SRv6StructureSubSubTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRv6StructureSubSubTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRv6StructureSubSubTLV* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRv6StructureSubSubTLV>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRv6StructureSubSubTLV& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRv6StructureSubSubTLV& from) { SRv6StructureSubSubTLV::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRv6StructureSubSubTLV* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRv6StructureSubSubTLV"; }

  explicit SRv6StructureSubSubTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRv6StructureSubSubTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRv6StructureSubSubTLV& from);
  SRv6StructureSubSubTLV(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRv6StructureSubSubTLV&& from) noexcept
      : SRv6StructureSubSubTLV(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLocatorBlockLengthFieldNumber = 1,
    kLocatorNodeLengthFieldNumber = 2,
    kFunctionLengthFieldNumber = 3,
    kArgumentLengthFieldNumber = 4,
    kTranspositionLengthFieldNumber = 5,
    kTranspositionOffsetFieldNumber = 6,
  };
  // uint32 locator_block_length = 1;
  void clear_locator_block_length() ;
  [[nodiscard]] ::uint32_t locator_block_length() const;
  void set_locator_block_length(::uint32_t value);

  private:
  ::uint32_t _internal_locator_block_length() const;
  void _internal_set_locator_block_length(::uint32_t value);

  public:
  // uint32 locator_node_length = 2;
  void clear_locator_node_length() ;
  [[nodiscard]] ::uint32_t locator_node_length() const;
  void set_locator_node_length(::uint32_t value);

  private:
  ::uint32_t _internal_locator_node_length() const;
  void _internal_set_locator_node_length(::uint32_t value);

  public:
  // uint32 function_length = 3;
  void clear_function_length() ;
  [[nodiscard]] ::uint32_t function_length() const;
  void set_function_length(::uint32_t value);

  private:
  ::uint32_t _internal_function_length() const;
  void _internal_set_function_length(::uint32_t value);

  public:
  // uint32 argument_length = 4;
  void clear_argument_length() ;
  [[nodiscard]] ::uint32_t argument_length() const;
  void set_argument_length(::uint32_t value);

  private:
  ::uint32_t _internal_argument_length() const;
  void _internal_set_argument_length(::uint32_t value);

  public:
  // uint32 transposition_length = 5;
  void clear_transposition_length() ;
  [[nodiscard]] ::uint32_t transposition_length() const;
  void set_transposition_length(::uint32_t value);

  private:
  ::uint32_t _internal_transposition_length() const;
  void _internal_set_transposition_length(::uint32_t value);

  public:
  // uint32 transposition_offset = 6;
  void clear_transposition_offset() ;
  [[nodiscard]] ::uint32_t transposition_offset() const;
  void set_transposition_offset(::uint32_t value);

  private:
  ::uint32_t _internal_transposition_offset() const;
  void _internal_set_transposition_offset(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRv6StructureSubSubTLV)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 6,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRv6StructureSubSubTLV& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t locator_block_length_;
    ::uint32_t locator_node_length_;
    ::uint32_t function_length_;
    ::uint32_t argument_length_;
    ::uint32_t transposition_length_;
    ::uint32_t transposition_offset_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6SIDFlags final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRv6SIDFlags) */ {
 public:
  inline SRv6SIDFlags() : SRv6SIDFlags(nullptr) {}
  ~SRv6SIDFlags() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRv6SIDFlags* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRv6SIDFlags));
  }
#endif

  template <typename = void>
  explicit constexpr SRv6SIDFlags(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRv6SIDFlags(const SRv6SIDFlags& from) : SRv6SIDFlags(nullptr, from) {}
  inline SRv6SIDFlags(SRv6SIDFlags&& from) noexcept : SRv6SIDFlags(nullptr, ::std::move(from)) {}
  inline SRv6SIDFlags& operator=(const SRv6SIDFlags& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRv6SIDFlags& operator=(SRv6SIDFlags&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRv6SIDFlags& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRv6SIDFlags>(&SRv6SIDFlags_globals_);
  }
  static constexpr int kIndexInFileMessages = 116;
  friend void swap(SRv6SIDFlags& a, SRv6SIDFlags& b) { a.Swap(&b); }
  inline void Swap(SRv6SIDFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRv6SIDFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRv6SIDFlags* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRv6SIDFlags>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRv6SIDFlags& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRv6SIDFlags& from) { SRv6SIDFlags::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRv6SIDFlags* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRv6SIDFlags"; }

  explicit SRv6SIDFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRv6SIDFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRv6SIDFlags& from);
  SRv6SIDFlags(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRv6SIDFlags&& from) noexcept
      : SRv6SIDFlags(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFlag1FieldNumber = 1,
  };
  // bool flag_1 = 1;
  void clear_flag_1() ;
  [[nodiscard]] bool flag_1() const;
  void set_flag_1(bool value);

  private:
  bool _internal_flag_1() const;
  void _internal_set_flag_1(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRv6SIDFlags)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRv6SIDFlags& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool flag_1_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6EndPointBehavior final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRv6EndPointBehavior) */ {
 public:
  inline SRv6EndPointBehavior() : SRv6EndPointBehavior(nullptr) {}
  ~SRv6EndPointBehavior() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRv6EndPointBehavior* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRv6EndPointBehavior));
  }
#endif

  template <typename = void>
  explicit constexpr SRv6EndPointBehavior(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRv6EndPointBehavior(const SRv6EndPointBehavior& from) : SRv6EndPointBehavior(nullptr, from) {}
  inline SRv6EndPointBehavior(SRv6EndPointBehavior&& from) noexcept : SRv6EndPointBehavior(nullptr, ::std::move(from)) {}
  inline SRv6EndPointBehavior& operator=(const SRv6EndPointBehavior& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRv6EndPointBehavior& operator=(SRv6EndPointBehavior&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRv6EndPointBehavior& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRv6EndPointBehavior>(&SRv6EndPointBehavior_globals_);
  }
  static constexpr int kIndexInFileMessages = 81;
  friend void swap(SRv6EndPointBehavior& a, SRv6EndPointBehavior& b) { a.Swap(&b); }
  inline void Swap(SRv6EndPointBehavior* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRv6EndPointBehavior* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRv6EndPointBehavior* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRv6EndPointBehavior>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRv6EndPointBehavior& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRv6EndPointBehavior& from) { SRv6EndPointBehavior::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRv6EndPointBehavior* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRv6EndPointBehavior"; }

  explicit SRv6EndPointBehavior(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRv6EndPointBehavior(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRv6EndPointBehavior& from);
  SRv6EndPointBehavior(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRv6EndPointBehavior&& from) noexcept
      : SRv6EndPointBehavior(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBehaviorFieldNumber = 1,
    kBlockLenFieldNumber = 2,
    kNodeLenFieldNumber = 3,
    kFuncLenFieldNumber = 4,
    kArgLenFieldNumber = 5,
  };
  // .apipb.SRv6Behavior behavior = 1;
  void clear_behavior() ;
  [[nodiscard]] ::apipb::SRv6Behavior behavior() const;
  void set_behavior(::apipb::SRv6Behavior value);

  private:
  ::apipb::SRv6Behavior _internal_behavior() const;
  void _internal_set_behavior(::apipb::SRv6Behavior value);

  public:
  // uint32 block_len = 2;
  void clear_block_len() ;
  [[nodiscard]] ::uint32_t block_len() const;
  void set_block_len(::uint32_t value);

  private:
  ::uint32_t _internal_block_len() const;
  void _internal_set_block_len(::uint32_t value);

  public:
  // uint32 node_len = 3;
  void clear_node_len() ;
  [[nodiscard]] ::uint32_t node_len() const;
  void set_node_len(::uint32_t value);

  private:
  ::uint32_t _internal_node_len() const;
  void _internal_set_node_len(::uint32_t value);

  public:
  // uint32 func_len = 4;
  void clear_func_len() ;
  [[nodiscard]] ::uint32_t func_len() const;
  void set_func_len(::uint32_t value);

  private:
  ::uint32_t _internal_func_len() const;
  void _internal_set_func_len(::uint32_t value);

  public:
  // uint32 arg_len = 5;
  void clear_arg_len() ;
  [[nodiscard]] ::uint32_t arg_len() const;
  void set_arg_len(::uint32_t value);

  private:
  ::uint32_t _internal_arg_len() const;
  void _internal_set_arg_len(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRv6EndPointBehavior)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 5,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRv6EndPointBehavior& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    int behavior_;
    ::uint32_t block_len_;
    ::uint32_t node_len_;
    ::uint32_t func_len_;
    ::uint32_t arg_len_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRWeight final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRWeight) */ {
 public:
  inline SRWeight() : SRWeight(nullptr) {}
  ~SRWeight() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRWeight* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRWeight));
  }
#endif

  template <typename = void>
  explicit constexpr SRWeight(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRWeight(const SRWeight& from) : SRWeight(nullptr, from) {}
  inline SRWeight(SRWeight&& from) noexcept : SRWeight(nullptr, ::std::move(from)) {}
  inline SRWeight& operator=(const SRWeight& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRWeight& operator=(SRWeight&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRWeight& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRWeight>(&SRWeight_globals_);
  }
  static constexpr int kIndexInFileMessages = 84;
  friend void swap(SRWeight& a, SRWeight& b) { a.Swap(&b); }
  inline void Swap(SRWeight* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRWeight* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRWeight* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRWeight>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRWeight& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRWeight& from) { SRWeight::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRWeight* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRWeight"; }

  explicit SRWeight(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRWeight(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRWeight& from);
  SRWeight(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRWeight&& from) noexcept
      : SRWeight(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFlagsFieldNumber = 1,
    kWeightFieldNumber = 2,
  };
  // uint32 flags = 1;
  void clear_flags() ;
  [[nodiscard]] ::uint32_t flags() const;
  void set_flags(::uint32_t value);

  private:
  ::uint32_t _internal_flags() const;
  void _internal_set_flags(::uint32_t value);

  public:
  // uint32 weight = 2;
  void clear_weight() ;
  [[nodiscard]] ::uint32_t weight() const;
  void set_weight(::uint32_t value);

  private:
  ::uint32_t _internal_weight() const;
  void _internal_set_weight(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRWeight)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRWeight& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t flags_;
    ::uint32_t weight_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRPolicyNLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRPolicyNLRI) */ {
 public:
  inline SRPolicyNLRI() : SRPolicyNLRI(nullptr) {}
  ~SRPolicyNLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRPolicyNLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRPolicyNLRI));
  }
#endif

  template <typename = void>
  explicit constexpr SRPolicyNLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRPolicyNLRI(const SRPolicyNLRI& from) : SRPolicyNLRI(nullptr, from) {}
  inline SRPolicyNLRI(SRPolicyNLRI&& from) noexcept : SRPolicyNLRI(nullptr, ::std::move(from)) {}
  inline SRPolicyNLRI& operator=(const SRPolicyNLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRPolicyNLRI& operator=(SRPolicyNLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRPolicyNLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRPolicyNLRI>(&SRPolicyNLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 24;
  friend void swap(SRPolicyNLRI& a, SRPolicyNLRI& b) { a.Swap(&b); }
  inline void Swap(SRPolicyNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRPolicyNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRPolicyNLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRPolicyNLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRPolicyNLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRPolicyNLRI& from) { SRPolicyNLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRPolicyNLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRPolicyNLRI"; }

  explicit SRPolicyNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRPolicyNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRPolicyNLRI& from);
  SRPolicyNLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRPolicyNLRI&& from) noexcept
      : SRPolicyNLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kEndpointFieldNumber = 4,
    kLengthFieldNumber = 1,
    kDistinguisherFieldNumber = 2,
    kColorFieldNumber = 3,
  };
  // bytes endpoint = 4;
  void clear_endpoint() ;
  [[nodiscard]] const ::std::string& endpoint() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_endpoint(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_endpoint();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_endpoint();
  void set_allocated_endpoint(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_endpoint() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_endpoint(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_endpoint();

  public:
  // uint32 length = 1;
  void clear_length() ;
  [[nodiscard]] ::uint32_t length() const;
  void set_length(::uint32_t value);

  private:
  ::uint32_t _internal_length() const;
  void _internal_set_length(::uint32_t value);

  public:
  // uint32 distinguisher = 2;
  void clear_distinguisher() ;
  [[nodiscard]] ::uint32_t distinguisher() const;
  void set_distinguisher(::uint32_t value);

  private:
  ::uint32_t _internal_distinguisher() const;
  void _internal_set_distinguisher(::uint32_t value);

  public:
  // uint32 color = 3;
  void clear_color() ;
  [[nodiscard]] ::uint32_t color() const;
  void set_color(::uint32_t value);

  private:
  ::uint32_t _internal_color() const;
  void _internal_set_color(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRPolicyNLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRPolicyNLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr endpoint_;
    ::uint32_t length_;
    ::uint32_t distinguisher_;
    ::uint32_t color_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRBindingSID final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRBindingSID) */ {
 public:
  inline SRBindingSID() : SRBindingSID(nullptr) {}
  ~SRBindingSID() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRBindingSID* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRBindingSID));
  }
#endif

  template <typename = void>
  explicit constexpr SRBindingSID(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRBindingSID(const SRBindingSID& from) : SRBindingSID(nullptr, from) {}
  inline SRBindingSID(SRBindingSID&& from) noexcept : SRBindingSID(nullptr, ::std::move(from)) {}
  inline SRBindingSID& operator=(const SRBindingSID& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRBindingSID& operator=(SRBindingSID&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRBindingSID& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRBindingSID>(&SRBindingSID_globals_);
  }
  static constexpr int kIndexInFileMessages = 80;
  friend void swap(SRBindingSID& a, SRBindingSID& b) { a.Swap(&b); }
  inline void Swap(SRBindingSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRBindingSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRBindingSID* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRBindingSID>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRBindingSID& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRBindingSID& from) { SRBindingSID::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRBindingSID* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRBindingSID"; }

  explicit SRBindingSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRBindingSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRBindingSID& from);
  SRBindingSID(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRBindingSID&& from) noexcept
      : SRBindingSID(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSidFieldNumber = 3,
    kSFlagFieldNumber = 1,
    kIFlagFieldNumber = 2,
  };
  // bytes sid = 3;
  void clear_sid() ;
  [[nodiscard]] const ::std::string& sid() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_sid(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_sid();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_sid();
  void set_allocated_sid(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_sid() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_sid(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_sid();

  public:
  // bool s_flag = 1;
  void clear_s_flag() ;
  [[nodiscard]] bool s_flag() const;
  void set_s_flag(bool value);

  private:
  bool _internal_s_flag() const;
  void _internal_set_s_flag(bool value);

  public:
  // bool i_flag = 2;
  void clear_i_flag() ;
  [[nodiscard]] bool i_flag() const;
  void set_i_flag(bool value);

  private:
  bool _internal_i_flag() const;
  void _internal_set_i_flag(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRBindingSID)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRBindingSID& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr sid_;
    bool s_flag_;
    bool i_flag_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED RouterMacExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.RouterMacExtended) */ {
 public:
  inline RouterMacExtended() : RouterMacExtended(nullptr) {}
  ~RouterMacExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(RouterMacExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(RouterMacExtended));
  }
#endif

  template <typename = void>
  explicit constexpr RouterMacExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline RouterMacExtended(const RouterMacExtended& from) : RouterMacExtended(nullptr, from) {}
  inline RouterMacExtended(RouterMacExtended&& from) noexcept : RouterMacExtended(nullptr, ::std::move(from)) {}
  inline RouterMacExtended& operator=(const RouterMacExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline RouterMacExtended& operator=(RouterMacExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const RouterMacExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<RouterMacExtended>(&RouterMacExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 60;
  friend void swap(RouterMacExtended& a, RouterMacExtended& b) { a.Swap(&b); }
  inline void Swap(RouterMacExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RouterMacExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] RouterMacExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RouterMacExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RouterMacExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RouterMacExtended& from) { RouterMacExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(RouterMacExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.RouterMacExtended"; }

  explicit RouterMacExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RouterMacExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RouterMacExtended& from);
  RouterMacExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RouterMacExtended&& from) noexcept
      : RouterMacExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMacFieldNumber = 1,
  };
  // string mac = 1;
  void clear_mac() ;
  [[nodiscard]] const ::std::string& mac() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_mac(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_mac();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_mac();
  void set_allocated_mac(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_mac() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_mac(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_mac();

  public:
  // @@protoc_insertion_point(class_scope:apipb.RouterMacExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 35,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RouterMacExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr mac_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED RouteDistinguisherTwoOctetASN final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.RouteDistinguisherTwoOctetASN) */ {
 public:
  inline RouteDistinguisherTwoOctetASN() : RouteDistinguisherTwoOctetASN(nullptr) {}
  ~RouteDistinguisherTwoOctetASN() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(RouteDistinguisherTwoOctetASN* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(RouteDistinguisherTwoOctetASN));
  }
#endif

  template <typename = void>
  explicit constexpr RouteDistinguisherTwoOctetASN(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline RouteDistinguisherTwoOctetASN(const RouteDistinguisherTwoOctetASN& from) : RouteDistinguisherTwoOctetASN(nullptr, from) {}
  inline RouteDistinguisherTwoOctetASN(RouteDistinguisherTwoOctetASN&& from) noexcept : RouteDistinguisherTwoOctetASN(nullptr, ::std::move(from)) {}
  inline RouteDistinguisherTwoOctetASN& operator=(const RouteDistinguisherTwoOctetASN& from) {
    CopyFrom(from);
    return *this;
  }
  inline RouteDistinguisherTwoOctetASN& operator=(RouteDistinguisherTwoOctetASN&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const RouteDistinguisherTwoOctetASN& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<RouteDistinguisherTwoOctetASN>(&RouteDistinguisherTwoOctetASN_globals_);
  }
  static constexpr int kIndexInFileMessages = 14;
  friend void swap(RouteDistinguisherTwoOctetASN& a, RouteDistinguisherTwoOctetASN& b) { a.Swap(&b); }
  inline void Swap(RouteDistinguisherTwoOctetASN* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RouteDistinguisherTwoOctetASN* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] RouteDistinguisherTwoOctetASN* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RouteDistinguisherTwoOctetASN>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RouteDistinguisherTwoOctetASN& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RouteDistinguisherTwoOctetASN& from) { RouteDistinguisherTwoOctetASN::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(RouteDistinguisherTwoOctetASN* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.RouteDistinguisherTwoOctetASN"; }

  explicit RouteDistinguisherTwoOctetASN(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RouteDistinguisherTwoOctetASN(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RouteDistinguisherTwoOctetASN& from);
  RouteDistinguisherTwoOctetASN(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RouteDistinguisherTwoOctetASN&& from) noexcept
      : RouteDistinguisherTwoOctetASN(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAdminFieldNumber = 1,
    kAssignedFieldNumber = 2,
  };
  // uint32 admin = 1;
  void clear_admin() ;
  [[nodiscard]] ::uint32_t admin() const;
  void set_admin(::uint32_t value);

  private:
  ::uint32_t _internal_admin() const;
  void _internal_set_admin(::uint32_t value);

  public:
  // uint32 assigned = 2;
  void clear_assigned() ;
  [[nodiscard]] ::uint32_t assigned() const;
  void set_assigned(::uint32_t value);

  private:
  ::uint32_t _internal_assigned() const;
  void _internal_set_assigned(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.RouteDistinguisherTwoOctetASN)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RouteDistinguisherTwoOctetASN& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t admin_;
    ::uint32_t assigned_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED RouteDistinguisherIPAddress final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.RouteDistinguisherIPAddress) */ {
 public:
  inline RouteDistinguisherIPAddress() : RouteDistinguisherIPAddress(nullptr) {}
  ~RouteDistinguisherIPAddress() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(RouteDistinguisherIPAddress* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(RouteDistinguisherIPAddress));
  }
#endif

  template <typename = void>
  explicit constexpr RouteDistinguisherIPAddress(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline RouteDistinguisherIPAddress(const RouteDistinguisherIPAddress& from) : RouteDistinguisherIPAddress(nullptr, from) {}
  inline RouteDistinguisherIPAddress(RouteDistinguisherIPAddress&& from) noexcept : RouteDistinguisherIPAddress(nullptr, ::std::move(from)) {}
  inline RouteDistinguisherIPAddress& operator=(const RouteDistinguisherIPAddress& from) {
    CopyFrom(from);
    return *this;
  }
  inline RouteDistinguisherIPAddress& operator=(RouteDistinguisherIPAddress&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const RouteDistinguisherIPAddress& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<RouteDistinguisherIPAddress>(&RouteDistinguisherIPAddress_globals_);
  }
  static constexpr int kIndexInFileMessages = 15;
  friend void swap(RouteDistinguisherIPAddress& a, RouteDistinguisherIPAddress& b) { a.Swap(&b); }
  inline void Swap(RouteDistinguisherIPAddress* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RouteDistinguisherIPAddress* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] RouteDistinguisherIPAddress* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RouteDistinguisherIPAddress>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RouteDistinguisherIPAddress& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RouteDistinguisherIPAddress& from) { RouteDistinguisherIPAddress::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(RouteDistinguisherIPAddress* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.RouteDistinguisherIPAddress"; }

  explicit RouteDistinguisherIPAddress(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RouteDistinguisherIPAddress(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RouteDistinguisherIPAddress& from);
  RouteDistinguisherIPAddress(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RouteDistinguisherIPAddress&& from) noexcept
      : RouteDistinguisherIPAddress(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAdminFieldNumber = 1,
    kAssignedFieldNumber = 2,
  };
  // string admin = 1;
  void clear_admin() ;
  [[nodiscard]] const ::std::string& admin() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_admin(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_admin();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_admin();
  void set_allocated_admin(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_admin() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_admin(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_admin();

  public:
  // uint32 assigned = 2;
  void clear_assigned() ;
  [[nodiscard]] ::uint32_t assigned() const;
  void set_assigned(::uint32_t value);

  private:
  ::uint32_t _internal_assigned() const;
  void _internal_set_assigned(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.RouteDistinguisherIPAddress)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 47,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RouteDistinguisherIPAddress& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr admin_;
    ::uint32_t assigned_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED RouteDistinguisherFourOctetASN final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.RouteDistinguisherFourOctetASN) */ {
 public:
  inline RouteDistinguisherFourOctetASN() : RouteDistinguisherFourOctetASN(nullptr) {}
  ~RouteDistinguisherFourOctetASN() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(RouteDistinguisherFourOctetASN* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(RouteDistinguisherFourOctetASN));
  }
#endif

  template <typename = void>
  explicit constexpr RouteDistinguisherFourOctetASN(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline RouteDistinguisherFourOctetASN(const RouteDistinguisherFourOctetASN& from) : RouteDistinguisherFourOctetASN(nullptr, from) {}
  inline RouteDistinguisherFourOctetASN(RouteDistinguisherFourOctetASN&& from) noexcept : RouteDistinguisherFourOctetASN(nullptr, ::std::move(from)) {}
  inline RouteDistinguisherFourOctetASN& operator=(const RouteDistinguisherFourOctetASN& from) {
    CopyFrom(from);
    return *this;
  }
  inline RouteDistinguisherFourOctetASN& operator=(RouteDistinguisherFourOctetASN&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const RouteDistinguisherFourOctetASN& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<RouteDistinguisherFourOctetASN>(&RouteDistinguisherFourOctetASN_globals_);
  }
  static constexpr int kIndexInFileMessages = 16;
  friend void swap(RouteDistinguisherFourOctetASN& a, RouteDistinguisherFourOctetASN& b) { a.Swap(&b); }
  inline void Swap(RouteDistinguisherFourOctetASN* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RouteDistinguisherFourOctetASN* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] RouteDistinguisherFourOctetASN* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RouteDistinguisherFourOctetASN>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RouteDistinguisherFourOctetASN& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RouteDistinguisherFourOctetASN& from) { RouteDistinguisherFourOctetASN::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(RouteDistinguisherFourOctetASN* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.RouteDistinguisherFourOctetASN"; }

  explicit RouteDistinguisherFourOctetASN(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RouteDistinguisherFourOctetASN(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RouteDistinguisherFourOctetASN& from);
  RouteDistinguisherFourOctetASN(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RouteDistinguisherFourOctetASN&& from) noexcept
      : RouteDistinguisherFourOctetASN(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAdminFieldNumber = 1,
    kAssignedFieldNumber = 2,
  };
  // uint32 admin = 1;
  void clear_admin() ;
  [[nodiscard]] ::uint32_t admin() const;
  void set_admin(::uint32_t value);

  private:
  ::uint32_t _internal_admin() const;
  void _internal_set_admin(::uint32_t value);

  public:
  // uint32 assigned = 2;
  void clear_assigned() ;
  [[nodiscard]] ::uint32_t assigned() const;
  void set_assigned(::uint32_t value);

  private:
  ::uint32_t _internal_assigned() const;
  void _internal_set_assigned(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.RouteDistinguisherFourOctetASN)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RouteDistinguisherFourOctetASN& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t admin_;
    ::uint32_t assigned_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED RedirectTwoOctetAsSpecificExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.RedirectTwoOctetAsSpecificExtended) */ {
 public:
  inline RedirectTwoOctetAsSpecificExtended() : RedirectTwoOctetAsSpecificExtended(nullptr) {}
  ~RedirectTwoOctetAsSpecificExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(RedirectTwoOctetAsSpecificExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(RedirectTwoOctetAsSpecificExtended));
  }
#endif

  template <typename = void>
  explicit constexpr RedirectTwoOctetAsSpecificExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline RedirectTwoOctetAsSpecificExtended(const RedirectTwoOctetAsSpecificExtended& from) : RedirectTwoOctetAsSpecificExtended(nullptr, from) {}
  inline RedirectTwoOctetAsSpecificExtended(RedirectTwoOctetAsSpecificExtended&& from) noexcept : RedirectTwoOctetAsSpecificExtended(nullptr, ::std::move(from)) {}
  inline RedirectTwoOctetAsSpecificExtended& operator=(const RedirectTwoOctetAsSpecificExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline RedirectTwoOctetAsSpecificExtended& operator=(RedirectTwoOctetAsSpecificExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const RedirectTwoOctetAsSpecificExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<RedirectTwoOctetAsSpecificExtended>(&RedirectTwoOctetAsSpecificExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 63;
  friend void swap(RedirectTwoOctetAsSpecificExtended& a, RedirectTwoOctetAsSpecificExtended& b) { a.Swap(&b); }
  inline void Swap(RedirectTwoOctetAsSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RedirectTwoOctetAsSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] RedirectTwoOctetAsSpecificExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RedirectTwoOctetAsSpecificExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RedirectTwoOctetAsSpecificExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RedirectTwoOctetAsSpecificExtended& from) { RedirectTwoOctetAsSpecificExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(RedirectTwoOctetAsSpecificExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.RedirectTwoOctetAsSpecificExtended"; }

  explicit RedirectTwoOctetAsSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RedirectTwoOctetAsSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RedirectTwoOctetAsSpecificExtended& from);
  RedirectTwoOctetAsSpecificExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RedirectTwoOctetAsSpecificExtended&& from) noexcept
      : RedirectTwoOctetAsSpecificExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAsnFieldNumber = 1,
    kLocalAdminFieldNumber = 2,
  };
  // uint32 asn = 1;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // uint32 local_admin = 2;
  void clear_local_admin() ;
  [[nodiscard]] ::uint32_t local_admin() const;
  void set_local_admin(::uint32_t value);

  private:
  ::uint32_t _internal_local_admin() const;
  void _internal_set_local_admin(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.RedirectTwoOctetAsSpecificExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RedirectTwoOctetAsSpecificExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t asn_;
    ::uint32_t local_admin_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED RedirectIPv6AddressSpecificExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.RedirectIPv6AddressSpecificExtended) */ {
 public:
  inline RedirectIPv6AddressSpecificExtended() : RedirectIPv6AddressSpecificExtended(nullptr) {}
  ~RedirectIPv6AddressSpecificExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(RedirectIPv6AddressSpecificExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(RedirectIPv6AddressSpecificExtended));
  }
#endif

  template <typename = void>
  explicit constexpr RedirectIPv6AddressSpecificExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline RedirectIPv6AddressSpecificExtended(const RedirectIPv6AddressSpecificExtended& from) : RedirectIPv6AddressSpecificExtended(nullptr, from) {}
  inline RedirectIPv6AddressSpecificExtended(RedirectIPv6AddressSpecificExtended&& from) noexcept : RedirectIPv6AddressSpecificExtended(nullptr, ::std::move(from)) {}
  inline RedirectIPv6AddressSpecificExtended& operator=(const RedirectIPv6AddressSpecificExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline RedirectIPv6AddressSpecificExtended& operator=(RedirectIPv6AddressSpecificExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const RedirectIPv6AddressSpecificExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<RedirectIPv6AddressSpecificExtended>(&RedirectIPv6AddressSpecificExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 95;
  friend void swap(RedirectIPv6AddressSpecificExtended& a, RedirectIPv6AddressSpecificExtended& b) { a.Swap(&b); }
  inline void Swap(RedirectIPv6AddressSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RedirectIPv6AddressSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] RedirectIPv6AddressSpecificExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RedirectIPv6AddressSpecificExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RedirectIPv6AddressSpecificExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RedirectIPv6AddressSpecificExtended& from) { RedirectIPv6AddressSpecificExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(RedirectIPv6AddressSpecificExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.RedirectIPv6AddressSpecificExtended"; }

  explicit RedirectIPv6AddressSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RedirectIPv6AddressSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RedirectIPv6AddressSpecificExtended& from);
  RedirectIPv6AddressSpecificExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RedirectIPv6AddressSpecificExtended&& from) noexcept
      : RedirectIPv6AddressSpecificExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 1,
    kLocalAdminFieldNumber = 2,
  };
  // string address = 1;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // uint32 local_admin = 2;
  void clear_local_admin() ;
  [[nodiscard]] ::uint32_t local_admin() const;
  void set_local_admin(::uint32_t value);

  private:
  ::uint32_t _internal_local_admin() const;
  void _internal_set_local_admin(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.RedirectIPv6AddressSpecificExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 57,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RedirectIPv6AddressSpecificExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    ::uint32_t local_admin_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED RedirectIPv4AddressSpecificExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.RedirectIPv4AddressSpecificExtended) */ {
 public:
  inline RedirectIPv4AddressSpecificExtended() : RedirectIPv4AddressSpecificExtended(nullptr) {}
  ~RedirectIPv4AddressSpecificExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(RedirectIPv4AddressSpecificExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(RedirectIPv4AddressSpecificExtended));
  }
#endif

  template <typename = void>
  explicit constexpr RedirectIPv4AddressSpecificExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline RedirectIPv4AddressSpecificExtended(const RedirectIPv4AddressSpecificExtended& from) : RedirectIPv4AddressSpecificExtended(nullptr, from) {}
  inline RedirectIPv4AddressSpecificExtended(RedirectIPv4AddressSpecificExtended&& from) noexcept : RedirectIPv4AddressSpecificExtended(nullptr, ::std::move(from)) {}
  inline RedirectIPv4AddressSpecificExtended& operator=(const RedirectIPv4AddressSpecificExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline RedirectIPv4AddressSpecificExtended& operator=(RedirectIPv4AddressSpecificExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const RedirectIPv4AddressSpecificExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<RedirectIPv4AddressSpecificExtended>(&RedirectIPv4AddressSpecificExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 64;
  friend void swap(RedirectIPv4AddressSpecificExtended& a, RedirectIPv4AddressSpecificExtended& b) { a.Swap(&b); }
  inline void Swap(RedirectIPv4AddressSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RedirectIPv4AddressSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] RedirectIPv4AddressSpecificExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RedirectIPv4AddressSpecificExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RedirectIPv4AddressSpecificExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RedirectIPv4AddressSpecificExtended& from) { RedirectIPv4AddressSpecificExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(RedirectIPv4AddressSpecificExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.RedirectIPv4AddressSpecificExtended"; }

  explicit RedirectIPv4AddressSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RedirectIPv4AddressSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RedirectIPv4AddressSpecificExtended& from);
  RedirectIPv4AddressSpecificExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RedirectIPv4AddressSpecificExtended&& from) noexcept
      : RedirectIPv4AddressSpecificExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 1,
    kLocalAdminFieldNumber = 2,
  };
  // string address = 1;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // uint32 local_admin = 2;
  void clear_local_admin() ;
  [[nodiscard]] ::uint32_t local_admin() const;
  void set_local_admin(::uint32_t value);

  private:
  ::uint32_t _internal_local_admin() const;
  void _internal_set_local_admin(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.RedirectIPv4AddressSpecificExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 57,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RedirectIPv4AddressSpecificExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    ::uint32_t local_admin_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED RedirectFourOctetAsSpecificExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.RedirectFourOctetAsSpecificExtended) */ {
 public:
  inline RedirectFourOctetAsSpecificExtended() : RedirectFourOctetAsSpecificExtended(nullptr) {}
  ~RedirectFourOctetAsSpecificExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(RedirectFourOctetAsSpecificExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(RedirectFourOctetAsSpecificExtended));
  }
#endif

  template <typename = void>
  explicit constexpr RedirectFourOctetAsSpecificExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline RedirectFourOctetAsSpecificExtended(const RedirectFourOctetAsSpecificExtended& from) : RedirectFourOctetAsSpecificExtended(nullptr, from) {}
  inline RedirectFourOctetAsSpecificExtended(RedirectFourOctetAsSpecificExtended&& from) noexcept : RedirectFourOctetAsSpecificExtended(nullptr, ::std::move(from)) {}
  inline RedirectFourOctetAsSpecificExtended& operator=(const RedirectFourOctetAsSpecificExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline RedirectFourOctetAsSpecificExtended& operator=(RedirectFourOctetAsSpecificExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const RedirectFourOctetAsSpecificExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<RedirectFourOctetAsSpecificExtended>(&RedirectFourOctetAsSpecificExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 65;
  friend void swap(RedirectFourOctetAsSpecificExtended& a, RedirectFourOctetAsSpecificExtended& b) { a.Swap(&b); }
  inline void Swap(RedirectFourOctetAsSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RedirectFourOctetAsSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] RedirectFourOctetAsSpecificExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RedirectFourOctetAsSpecificExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RedirectFourOctetAsSpecificExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RedirectFourOctetAsSpecificExtended& from) { RedirectFourOctetAsSpecificExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(RedirectFourOctetAsSpecificExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.RedirectFourOctetAsSpecificExtended"; }

  explicit RedirectFourOctetAsSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RedirectFourOctetAsSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RedirectFourOctetAsSpecificExtended& from);
  RedirectFourOctetAsSpecificExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RedirectFourOctetAsSpecificExtended&& from) noexcept
      : RedirectFourOctetAsSpecificExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAsnFieldNumber = 1,
    kLocalAdminFieldNumber = 2,
  };
  // uint32 asn = 1;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // uint32 local_admin = 2;
  void clear_local_admin() ;
  [[nodiscard]] ::uint32_t local_admin() const;
  void set_local_admin(::uint32_t value);

  private:
  ::uint32_t _internal_local_admin() const;
  void _internal_set_local_admin(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.RedirectFourOctetAsSpecificExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RedirectFourOctetAsSpecificExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t asn_;
    ::uint32_t local_admin_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED PmsiTunnelAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.PmsiTunnelAttribute) */ {
 public:
  inline PmsiTunnelAttribute() : PmsiTunnelAttribute(nullptr) {}
  ~PmsiTunnelAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(PmsiTunnelAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(PmsiTunnelAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr PmsiTunnelAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline PmsiTunnelAttribute(const PmsiTunnelAttribute& from) : PmsiTunnelAttribute(nullptr, from) {}
  inline PmsiTunnelAttribute(PmsiTunnelAttribute&& from) noexcept : PmsiTunnelAttribute(nullptr, ::std::move(from)) {}
  inline PmsiTunnelAttribute& operator=(const PmsiTunnelAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline PmsiTunnelAttribute& operator=(PmsiTunnelAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const PmsiTunnelAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<PmsiTunnelAttribute>(&PmsiTunnelAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 72;
  friend void swap(PmsiTunnelAttribute& a, PmsiTunnelAttribute& b) { a.Swap(&b); }
  inline void Swap(PmsiTunnelAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PmsiTunnelAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] PmsiTunnelAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<PmsiTunnelAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const PmsiTunnelAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const PmsiTunnelAttribute& from) { PmsiTunnelAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(PmsiTunnelAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.PmsiTunnelAttribute"; }

  explicit PmsiTunnelAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  PmsiTunnelAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PmsiTunnelAttribute& from);
  PmsiTunnelAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, PmsiTunnelAttribute&& from) noexcept
      : PmsiTunnelAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIdFieldNumber = 4,
    kFlagsFieldNumber = 1,
    kTypeFieldNumber = 2,
    kLabelFieldNumber = 3,
  };
  // bytes id = 4;
  void clear_id() ;
  [[nodiscard]] const ::std::string& id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_id();
  void set_allocated_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_id();

  public:
  // uint32 flags = 1;
  void clear_flags() ;
  [[nodiscard]] ::uint32_t flags() const;
  void set_flags(::uint32_t value);

  private:
  ::uint32_t _internal_flags() const;
  void _internal_set_flags(::uint32_t value);

  public:
  // uint32 type = 2;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // uint32 label = 3;
  void clear_label() ;
  [[nodiscard]] ::uint32_t label() const;
  void set_label(::uint32_t value);

  private:
  ::uint32_t _internal_label() const;
  void _internal_set_label(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.PmsiTunnelAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const PmsiTunnelAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr id_;
    ::uint32_t flags_;
    ::uint32_t type_;
    ::uint32_t label_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED OriginatorIdAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.OriginatorIdAttribute) */ {
 public:
  inline OriginatorIdAttribute() : OriginatorIdAttribute(nullptr) {}
  ~OriginatorIdAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(OriginatorIdAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(OriginatorIdAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr OriginatorIdAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline OriginatorIdAttribute(const OriginatorIdAttribute& from) : OriginatorIdAttribute(nullptr, from) {}
  inline OriginatorIdAttribute(OriginatorIdAttribute&& from) noexcept : OriginatorIdAttribute(nullptr, ::std::move(from)) {}
  inline OriginatorIdAttribute& operator=(const OriginatorIdAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline OriginatorIdAttribute& operator=(OriginatorIdAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const OriginatorIdAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<OriginatorIdAttribute>(&OriginatorIdAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(OriginatorIdAttribute& a, OriginatorIdAttribute& b) { a.Swap(&b); }
  inline void Swap(OriginatorIdAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OriginatorIdAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] OriginatorIdAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OriginatorIdAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OriginatorIdAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OriginatorIdAttribute& from) { OriginatorIdAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(OriginatorIdAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.OriginatorIdAttribute"; }

  explicit OriginatorIdAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OriginatorIdAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OriginatorIdAttribute& from);
  OriginatorIdAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OriginatorIdAttribute&& from) noexcept
      : OriginatorIdAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIdFieldNumber = 1,
  };
  // string id = 1;
  void clear_id() ;
  [[nodiscard]] const ::std::string& id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_id();
  void set_allocated_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_id();

  public:
  // @@protoc_insertion_point(class_scope:apipb.OriginatorIdAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 38,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const OriginatorIdAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED OriginAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.OriginAttribute) */ {
 public:
  inline OriginAttribute() : OriginAttribute(nullptr) {}
  ~OriginAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(OriginAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(OriginAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr OriginAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline OriginAttribute(const OriginAttribute& from) : OriginAttribute(nullptr, from) {}
  inline OriginAttribute(OriginAttribute&& from) noexcept : OriginAttribute(nullptr, ::std::move(from)) {}
  inline OriginAttribute& operator=(const OriginAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline OriginAttribute& operator=(OriginAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const OriginAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<OriginAttribute>(&OriginAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(OriginAttribute& a, OriginAttribute& b) { a.Swap(&b); }
  inline void Swap(OriginAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OriginAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] OriginAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OriginAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OriginAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OriginAttribute& from) { OriginAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(OriginAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.OriginAttribute"; }

  explicit OriginAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OriginAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OriginAttribute& from);
  OriginAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OriginAttribute&& from) noexcept
      : OriginAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kOriginFieldNumber = 1,
  };
  // uint32 origin = 1;
  void clear_origin() ;
  [[nodiscard]] ::uint32_t origin() const;
  void set_origin(::uint32_t value);

  private:
  ::uint32_t _internal_origin() const;
  void _internal_set_origin(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.OriginAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const OriginAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t origin_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED OpaqueNLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.OpaqueNLRI) */ {
 public:
  inline OpaqueNLRI() : OpaqueNLRI(nullptr) {}
  ~OpaqueNLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(OpaqueNLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(OpaqueNLRI));
  }
#endif

  template <typename = void>
  explicit constexpr OpaqueNLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline OpaqueNLRI(const OpaqueNLRI& from) : OpaqueNLRI(nullptr, from) {}
  inline OpaqueNLRI(OpaqueNLRI&& from) noexcept : OpaqueNLRI(nullptr, ::std::move(from)) {}
  inline OpaqueNLRI& operator=(const OpaqueNLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline OpaqueNLRI& operator=(OpaqueNLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const OpaqueNLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<OpaqueNLRI>(&OpaqueNLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 33;
  friend void swap(OpaqueNLRI& a, OpaqueNLRI& b) { a.Swap(&b); }
  inline void Swap(OpaqueNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OpaqueNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] OpaqueNLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OpaqueNLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OpaqueNLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OpaqueNLRI& from) { OpaqueNLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(OpaqueNLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.OpaqueNLRI"; }

  explicit OpaqueNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OpaqueNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OpaqueNLRI& from);
  OpaqueNLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OpaqueNLRI&& from) noexcept
      : OpaqueNLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kKeyFieldNumber = 1,
    kValueFieldNumber = 2,
  };
  // bytes key = 1;
  void clear_key() ;
  [[nodiscard]] const ::std::string& key() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_key(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_key();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_key();
  void set_allocated_key(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_key() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_key(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_key();

  public:
  // bytes value = 2;
  void clear_value() ;
  [[nodiscard]] const ::std::string& value() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_value();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_value();
  void set_allocated_value(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_value() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_value(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // @@protoc_insertion_point(class_scope:apipb.OpaqueNLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const OpaqueNLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr key_;
    ::google::protobuf::internal::ArenaStringPtr value_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED OpaqueExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.OpaqueExtended) */ {
 public:
  inline OpaqueExtended() : OpaqueExtended(nullptr) {}
  ~OpaqueExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(OpaqueExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(OpaqueExtended));
  }
#endif

  template <typename = void>
  explicit constexpr OpaqueExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline OpaqueExtended(const OpaqueExtended& from) : OpaqueExtended(nullptr, from) {}
  inline OpaqueExtended(OpaqueExtended&& from) noexcept : OpaqueExtended(nullptr, ::std::move(from)) {}
  inline OpaqueExtended& operator=(const OpaqueExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline OpaqueExtended& operator=(OpaqueExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const OpaqueExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<OpaqueExtended>(&OpaqueExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 56;
  friend void swap(OpaqueExtended& a, OpaqueExtended& b) { a.Swap(&b); }
  inline void Swap(OpaqueExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(OpaqueExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] OpaqueExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<OpaqueExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const OpaqueExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const OpaqueExtended& from) { OpaqueExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(OpaqueExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.OpaqueExtended"; }

  explicit OpaqueExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  OpaqueExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const OpaqueExtended& from);
  OpaqueExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, OpaqueExtended&& from) noexcept
      : OpaqueExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 3,
    kIsTransitiveFieldNumber = 1,
  };
  // bytes value = 3;
  void clear_value() ;
  [[nodiscard]] const ::std::string& value() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_value();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_value();
  void set_allocated_value(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_value() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_value(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // bool is_transitive = 1;
  void clear_is_transitive() ;
  [[nodiscard]] bool is_transitive() const;
  void set_is_transitive(bool value);

  private:
  bool _internal_is_transitive() const;
  void _internal_set_is_transitive(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.OpaqueExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const OpaqueExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr value_;
    bool is_transitive_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED NextHopAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.NextHopAttribute) */ {
 public:
  inline NextHopAttribute() : NextHopAttribute(nullptr) {}
  ~NextHopAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(NextHopAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(NextHopAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr NextHopAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline NextHopAttribute(const NextHopAttribute& from) : NextHopAttribute(nullptr, from) {}
  inline NextHopAttribute(NextHopAttribute&& from) noexcept : NextHopAttribute(nullptr, ::std::move(from)) {}
  inline NextHopAttribute& operator=(const NextHopAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline NextHopAttribute& operator=(NextHopAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const NextHopAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<NextHopAttribute>(&NextHopAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(NextHopAttribute& a, NextHopAttribute& b) { a.Swap(&b); }
  inline void Swap(NextHopAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(NextHopAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] NextHopAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<NextHopAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const NextHopAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const NextHopAttribute& from) { NextHopAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(NextHopAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.NextHopAttribute"; }

  explicit NextHopAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  NextHopAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const NextHopAttribute& from);
  NextHopAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, NextHopAttribute&& from) noexcept
      : NextHopAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNextHopFieldNumber = 1,
  };
  // string next_hop = 1;
  void clear_next_hop() ;
  [[nodiscard]] const ::std::string& next_hop() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_next_hop(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_next_hop();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_next_hop();
  void set_allocated_next_hop(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_next_hop() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_next_hop(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_next_hop();

  public:
  // @@protoc_insertion_point(class_scope:apipb.NextHopAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 39,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const NextHopAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr next_hop_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED MultiExitDiscAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.MultiExitDiscAttribute) */ {
 public:
  inline MultiExitDiscAttribute() : MultiExitDiscAttribute(nullptr) {}
  ~MultiExitDiscAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MultiExitDiscAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MultiExitDiscAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr MultiExitDiscAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline MultiExitDiscAttribute(const MultiExitDiscAttribute& from) : MultiExitDiscAttribute(nullptr, from) {}
  inline MultiExitDiscAttribute(MultiExitDiscAttribute&& from) noexcept : MultiExitDiscAttribute(nullptr, ::std::move(from)) {}
  inline MultiExitDiscAttribute& operator=(const MultiExitDiscAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline MultiExitDiscAttribute& operator=(MultiExitDiscAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const MultiExitDiscAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MultiExitDiscAttribute>(&MultiExitDiscAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(MultiExitDiscAttribute& a, MultiExitDiscAttribute& b) { a.Swap(&b); }
  inline void Swap(MultiExitDiscAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MultiExitDiscAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] MultiExitDiscAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MultiExitDiscAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MultiExitDiscAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MultiExitDiscAttribute& from) { MultiExitDiscAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MultiExitDiscAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.MultiExitDiscAttribute"; }

  explicit MultiExitDiscAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MultiExitDiscAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MultiExitDiscAttribute& from);
  MultiExitDiscAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MultiExitDiscAttribute&& from) noexcept
      : MultiExitDiscAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMedFieldNumber = 1,
  };
  // uint32 med = 1;
  void clear_med() ;
  [[nodiscard]] ::uint32_t med() const;
  void set_med(::uint32_t value);

  private:
  ::uint32_t _internal_med() const;
  void _internal_set_med(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.MultiExitDiscAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MultiExitDiscAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t med_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED MacMobilityExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.MacMobilityExtended) */ {
 public:
  inline MacMobilityExtended() : MacMobilityExtended(nullptr) {}
  ~MacMobilityExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MacMobilityExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MacMobilityExtended));
  }
#endif

  template <typename = void>
  explicit constexpr MacMobilityExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline MacMobilityExtended(const MacMobilityExtended& from) : MacMobilityExtended(nullptr, from) {}
  inline MacMobilityExtended(MacMobilityExtended&& from) noexcept : MacMobilityExtended(nullptr, ::std::move(from)) {}
  inline MacMobilityExtended& operator=(const MacMobilityExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline MacMobilityExtended& operator=(MacMobilityExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const MacMobilityExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MacMobilityExtended>(&MacMobilityExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 59;
  friend void swap(MacMobilityExtended& a, MacMobilityExtended& b) { a.Swap(&b); }
  inline void Swap(MacMobilityExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MacMobilityExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] MacMobilityExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MacMobilityExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MacMobilityExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MacMobilityExtended& from) { MacMobilityExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MacMobilityExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.MacMobilityExtended"; }

  explicit MacMobilityExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MacMobilityExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MacMobilityExtended& from);
  MacMobilityExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MacMobilityExtended&& from) noexcept
      : MacMobilityExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIsStickyFieldNumber = 1,
    kSequenceNumFieldNumber = 2,
  };
  // bool is_sticky = 1;
  void clear_is_sticky() ;
  [[nodiscard]] bool is_sticky() const;
  void set_is_sticky(bool value);

  private:
  bool _internal_is_sticky() const;
  void _internal_set_is_sticky(bool value);

  public:
  // uint32 sequence_num = 2;
  void clear_sequence_num() ;
  [[nodiscard]] ::uint32_t sequence_num() const;
  void set_sequence_num(::uint32_t value);

  private:
  ::uint32_t _internal_sequence_num() const;
  void _internal_set_sequence_num(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.MacMobilityExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MacMobilityExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool is_sticky_;
    ::uint32_t sequence_num_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED MUPExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.MUPExtended) */ {
 public:
  inline MUPExtended() : MUPExtended(nullptr) {}
  ~MUPExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MUPExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MUPExtended));
  }
#endif

  template <typename = void>
  explicit constexpr MUPExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline MUPExtended(const MUPExtended& from) : MUPExtended(nullptr, from) {}
  inline MUPExtended(MUPExtended&& from) noexcept : MUPExtended(nullptr, ::std::move(from)) {}
  inline MUPExtended& operator=(const MUPExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline MUPExtended& operator=(MUPExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const MUPExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MUPExtended>(&MUPExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 67;
  friend void swap(MUPExtended& a, MUPExtended& b) { a.Swap(&b); }
  inline void Swap(MUPExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MUPExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] MUPExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MUPExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MUPExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MUPExtended& from) { MUPExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MUPExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.MUPExtended"; }

  explicit MUPExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MUPExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MUPExtended& from);
  MUPExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MUPExtended&& from) noexcept
      : MUPExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSubTypeFieldNumber = 1,
    kSegmentId2FieldNumber = 2,
    kSegmentId4FieldNumber = 3,
  };
  // uint32 sub_type = 1;
  void clear_sub_type() ;
  [[nodiscard]] ::uint32_t sub_type() const;
  void set_sub_type(::uint32_t value);

  private:
  ::uint32_t _internal_sub_type() const;
  void _internal_set_sub_type(::uint32_t value);

  public:
  // uint32 segment_id2 = 2;
  void clear_segment_id2() ;
  [[nodiscard]] ::uint32_t segment_id2() const;
  void set_segment_id2(::uint32_t value);

  private:
  ::uint32_t _internal_segment_id2() const;
  void _internal_set_segment_id2(::uint32_t value);

  public:
  // uint32 segment_id4 = 3;
  void clear_segment_id4() ;
  [[nodiscard]] ::uint32_t segment_id4() const;
  void set_segment_id4(::uint32_t value);

  private:
  ::uint32_t _internal_segment_id4() const;
  void _internal_set_segment_id4(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.MUPExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MUPExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t sub_type_;
    ::uint32_t segment_id2_;
    ::uint32_t segment_id4_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsSrRange final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsSrRange) */ {
 public:
  inline LsSrRange() : LsSrRange(nullptr) {}
  ~LsSrRange() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsSrRange* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsSrRange));
  }
#endif

  template <typename = void>
  explicit constexpr LsSrRange(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsSrRange(const LsSrRange& from) : LsSrRange(nullptr, from) {}
  inline LsSrRange(LsSrRange&& from) noexcept : LsSrRange(nullptr, ::std::move(from)) {}
  inline LsSrRange& operator=(const LsSrRange& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsSrRange& operator=(LsSrRange&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsSrRange& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsSrRange>(&LsSrRange_globals_);
  }
  static constexpr int kIndexInFileMessages = 104;
  friend void swap(LsSrRange& a, LsSrRange& b) { a.Swap(&b); }
  inline void Swap(LsSrRange* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsSrRange* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsSrRange* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsSrRange>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsSrRange& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsSrRange& from) { LsSrRange::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsSrRange* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsSrRange"; }

  explicit LsSrRange(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsSrRange(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsSrRange& from);
  LsSrRange(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsSrRange&& from) noexcept
      : LsSrRange(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBeginFieldNumber = 1,
    kEndFieldNumber = 2,
  };
  // uint32 begin = 1;
  void clear_begin() ;
  [[nodiscard]] ::uint32_t begin() const;
  void set_begin(::uint32_t value);

  private:
  ::uint32_t _internal_begin() const;
  void _internal_set_begin(::uint32_t value);

  public:
  // uint32 end = 2;
  void clear_end() ;
  [[nodiscard]] ::uint32_t end() const;
  void set_end(::uint32_t value);

  private:
  ::uint32_t _internal_end() const;
  void _internal_set_end(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsSrRange)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsSrRange& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t begin_;
    ::uint32_t end_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsPrefixDescriptor final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsPrefixDescriptor) */ {
 public:
  inline LsPrefixDescriptor() : LsPrefixDescriptor(nullptr) {}
  ~LsPrefixDescriptor() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsPrefixDescriptor* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsPrefixDescriptor));
  }
#endif

  template <typename = void>
  explicit constexpr LsPrefixDescriptor(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsPrefixDescriptor(const LsPrefixDescriptor& from) : LsPrefixDescriptor(nullptr, from) {}
  inline LsPrefixDescriptor(LsPrefixDescriptor&& from) noexcept : LsPrefixDescriptor(nullptr, ::std::move(from)) {}
  inline LsPrefixDescriptor& operator=(const LsPrefixDescriptor& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsPrefixDescriptor& operator=(LsPrefixDescriptor&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsPrefixDescriptor& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsPrefixDescriptor>(&LsPrefixDescriptor_globals_);
  }
  static constexpr int kIndexInFileMessages = 36;
  friend void swap(LsPrefixDescriptor& a, LsPrefixDescriptor& b) { a.Swap(&b); }
  inline void Swap(LsPrefixDescriptor* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsPrefixDescriptor* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsPrefixDescriptor* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsPrefixDescriptor>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsPrefixDescriptor& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsPrefixDescriptor& from) { LsPrefixDescriptor::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsPrefixDescriptor* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsPrefixDescriptor"; }

  explicit LsPrefixDescriptor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsPrefixDescriptor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsPrefixDescriptor& from);
  LsPrefixDescriptor(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsPrefixDescriptor&& from) noexcept
      : LsPrefixDescriptor(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIpReachabilityFieldNumber = 1,
    kOspfRouteTypeFieldNumber = 2,
  };
  // repeated string ip_reachability = 1;
  [[nodiscard]] int ip_reachability_size()
      const;
  private:
  int _internal_ip_reachability_size() const;

  public:
  void clear_ip_reachability() ;
  [[nodiscard]] const ::std::string& ip_reachability(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_ip_reachability(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_ip_reachability(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_ip_reachability();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_ip_reachability(Arg_&& value, Args_... args);
  [[nodiscard]] const
      ::google::protobuf::RepeatedPtrField<::std::string>&
      ip_reachability() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::std::string>*
      PROTOBUF_NONNULL
      mutable_ip_reachability();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_ip_reachability() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_ip_reachability();

  public:
  // .apipb.LsOspfRouteType ospf_route_type = 2;
  void clear_ospf_route_type() ;
  [[nodiscard]] ::apipb::LsOspfRouteType ospf_route_type() const;
  void set_ospf_route_type(::apipb::LsOspfRouteType value);

  private:
  ::apipb::LsOspfRouteType _internal_ospf_route_type() const;
  void _internal_set_ospf_route_type(::apipb::LsOspfRouteType value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsPrefixDescriptor)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 48,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsPrefixDescriptor& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> ip_reachability_;
    int ospf_route_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsNodeFlags final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsNodeFlags) */ {
 public:
  inline LsNodeFlags() : LsNodeFlags(nullptr) {}
  ~LsNodeFlags() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsNodeFlags* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsNodeFlags));
  }
#endif

  template <typename = void>
  explicit constexpr LsNodeFlags(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsNodeFlags(const LsNodeFlags& from) : LsNodeFlags(nullptr, from) {}
  inline LsNodeFlags(LsNodeFlags&& from) noexcept : LsNodeFlags(nullptr, ::std::move(from)) {}
  inline LsNodeFlags& operator=(const LsNodeFlags& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsNodeFlags& operator=(LsNodeFlags&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsNodeFlags& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsNodeFlags>(&LsNodeFlags_globals_);
  }
  static constexpr int kIndexInFileMessages = 102;
  friend void swap(LsNodeFlags& a, LsNodeFlags& b) { a.Swap(&b); }
  inline void Swap(LsNodeFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsNodeFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsNodeFlags* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsNodeFlags>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsNodeFlags& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsNodeFlags& from) { LsNodeFlags::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsNodeFlags* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsNodeFlags"; }

  explicit LsNodeFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsNodeFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsNodeFlags& from);
  LsNodeFlags(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsNodeFlags&& from) noexcept
      : LsNodeFlags(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kOverloadFieldNumber = 1,
    kAttachedFieldNumber = 2,
    kExternalFieldNumber = 3,
    kAbrFieldNumber = 4,
    kRouterFieldNumber = 5,
    kV6FieldNumber = 6,
  };
  // bool overload = 1;
  void clear_overload() ;
  [[nodiscard]] bool overload() const;
  void set_overload(bool value);

  private:
  bool _internal_overload() const;
  void _internal_set_overload(bool value);

  public:
  // bool attached = 2;
  void clear_attached() ;
  [[nodiscard]] bool attached() const;
  void set_attached(bool value);

  private:
  bool _internal_attached() const;
  void _internal_set_attached(bool value);

  public:
  // bool external = 3;
  void clear_external() ;
  [[nodiscard]] bool external() const;
  void set_external(bool value);

  private:
  bool _internal_external() const;
  void _internal_set_external(bool value);

  public:
  // bool abr = 4;
  void clear_abr() ;
  [[nodiscard]] bool abr() const;
  void set_abr(bool value);

  private:
  bool _internal_abr() const;
  void _internal_set_abr(bool value);

  public:
  // bool router = 5;
  void clear_router() ;
  [[nodiscard]] bool router() const;
  void set_router(bool value);

  private:
  bool _internal_router() const;
  void _internal_set_router(bool value);

  public:
  // bool v6 = 6;
  void clear_v6() ;
  [[nodiscard]] bool v6() const;
  void set_v6(bool value);

  private:
  bool _internal_v6() const;
  void _internal_set_v6(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsNodeFlags)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 6,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsNodeFlags& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool overload_;
    bool attached_;
    bool external_;
    bool abr_;
    bool router_;
    bool v6_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsNodeDescriptor final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsNodeDescriptor) */ {
 public:
  inline LsNodeDescriptor() : LsNodeDescriptor(nullptr) {}
  ~LsNodeDescriptor() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsNodeDescriptor* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsNodeDescriptor));
  }
#endif

  template <typename = void>
  explicit constexpr LsNodeDescriptor(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsNodeDescriptor(const LsNodeDescriptor& from) : LsNodeDescriptor(nullptr, from) {}
  inline LsNodeDescriptor(LsNodeDescriptor&& from) noexcept : LsNodeDescriptor(nullptr, ::std::move(from)) {}
  inline LsNodeDescriptor& operator=(const LsNodeDescriptor& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsNodeDescriptor& operator=(LsNodeDescriptor&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsNodeDescriptor& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsNodeDescriptor>(&LsNodeDescriptor_globals_);
  }
  static constexpr int kIndexInFileMessages = 34;
  friend void swap(LsNodeDescriptor& a, LsNodeDescriptor& b) { a.Swap(&b); }
  inline void Swap(LsNodeDescriptor* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsNodeDescriptor* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsNodeDescriptor* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsNodeDescriptor>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsNodeDescriptor& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsNodeDescriptor& from) { LsNodeDescriptor::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsNodeDescriptor* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsNodeDescriptor"; }

  explicit LsNodeDescriptor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsNodeDescriptor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsNodeDescriptor& from);
  LsNodeDescriptor(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsNodeDescriptor&& from) noexcept
      : LsNodeDescriptor(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIgpRouterIdFieldNumber = 5,
    kBgpRouterIdFieldNumber = 6,
    kAsnFieldNumber = 1,
    kBgpLsIdFieldNumber = 2,
    kOspfAreaIdFieldNumber = 3,
    kPseudonodeFieldNumber = 4,
    kBgpConfederationMemberFieldNumber = 7,
  };
  // string igp_router_id = 5;
  void clear_igp_router_id() ;
  [[nodiscard]] const ::std::string& igp_router_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_igp_router_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_igp_router_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_igp_router_id();
  void set_allocated_igp_router_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_igp_router_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_igp_router_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_igp_router_id();

  public:
  // string bgp_router_id = 6;
  void clear_bgp_router_id() ;
  [[nodiscard]] const ::std::string& bgp_router_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_bgp_router_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_bgp_router_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_bgp_router_id();
  void set_allocated_bgp_router_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_bgp_router_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_bgp_router_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_bgp_router_id();

  public:
  // uint32 asn = 1;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // uint32 bgp_ls_id = 2;
  void clear_bgp_ls_id() ;
  [[nodiscard]] ::uint32_t bgp_ls_id() const;
  void set_bgp_ls_id(::uint32_t value);

  private:
  ::uint32_t _internal_bgp_ls_id() const;
  void _internal_set_bgp_ls_id(::uint32_t value);

  public:
  // uint32 ospf_area_id = 3;
  void clear_ospf_area_id() ;
  [[nodiscard]] ::uint32_t ospf_area_id() const;
  void set_ospf_area_id(::uint32_t value);

  private:
  ::uint32_t _internal_ospf_area_id() const;
  void _internal_set_ospf_area_id(::uint32_t value);

  public:
  // bool pseudonode = 4;
  void clear_pseudonode() ;
  [[nodiscard]] bool pseudonode() const;
  void set_pseudonode(bool value);

  private:
  bool _internal_pseudonode() const;
  void _internal_set_pseudonode(bool value);

  public:
  // uint32 bgp_confederation_member = 7;
  void clear_bgp_confederation_member() ;
  [[nodiscard]] ::uint32_t bgp_confederation_member() const;
  void set_bgp_confederation_member(::uint32_t value);

  private:
  ::uint32_t _internal_bgp_confederation_member() const;
  void _internal_set_bgp_confederation_member(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsNodeDescriptor)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 7,
                          0, 57,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsNodeDescriptor& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr igp_router_id_;
    ::google::protobuf::internal::ArenaStringPtr bgp_router_id_;
    ::uint32_t asn_;
    ::uint32_t bgp_ls_id_;
    ::uint32_t ospf_area_id_;
    bool pseudonode_;
    ::uint32_t bgp_confederation_member_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsLinkDescriptor final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsLinkDescriptor) */ {
 public:
  inline LsLinkDescriptor() : LsLinkDescriptor(nullptr) {}
  ~LsLinkDescriptor() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsLinkDescriptor* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsLinkDescriptor));
  }
#endif

  template <typename = void>
  explicit constexpr LsLinkDescriptor(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsLinkDescriptor(const LsLinkDescriptor& from) : LsLinkDescriptor(nullptr, from) {}
  inline LsLinkDescriptor(LsLinkDescriptor&& from) noexcept : LsLinkDescriptor(nullptr, ::std::move(from)) {}
  inline LsLinkDescriptor& operator=(const LsLinkDescriptor& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsLinkDescriptor& operator=(LsLinkDescriptor&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsLinkDescriptor& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsLinkDescriptor>(&LsLinkDescriptor_globals_);
  }
  static constexpr int kIndexInFileMessages = 35;
  friend void swap(LsLinkDescriptor& a, LsLinkDescriptor& b) { a.Swap(&b); }
  inline void Swap(LsLinkDescriptor* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsLinkDescriptor* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsLinkDescriptor* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsLinkDescriptor>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsLinkDescriptor& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsLinkDescriptor& from) { LsLinkDescriptor::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsLinkDescriptor* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsLinkDescriptor"; }

  explicit LsLinkDescriptor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsLinkDescriptor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsLinkDescriptor& from);
  LsLinkDescriptor(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsLinkDescriptor&& from) noexcept
      : LsLinkDescriptor(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kInterfaceAddrIpv4FieldNumber = 3,
    kNeighborAddrIpv4FieldNumber = 4,
    kInterfaceAddrIpv6FieldNumber = 5,
    kNeighborAddrIpv6FieldNumber = 6,
    kLinkLocalIdFieldNumber = 1,
    kLinkRemoteIdFieldNumber = 2,
  };
  // string interface_addr_ipv4 = 3;
  void clear_interface_addr_ipv4() ;
  [[nodiscard]] const ::std::string& interface_addr_ipv4() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_interface_addr_ipv4(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_interface_addr_ipv4();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_interface_addr_ipv4();
  void set_allocated_interface_addr_ipv4(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_interface_addr_ipv4() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_interface_addr_ipv4(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_interface_addr_ipv4();

  public:
  // string neighbor_addr_ipv4 = 4;
  void clear_neighbor_addr_ipv4() ;
  [[nodiscard]] const ::std::string& neighbor_addr_ipv4() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_neighbor_addr_ipv4(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_neighbor_addr_ipv4();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_neighbor_addr_ipv4();
  void set_allocated_neighbor_addr_ipv4(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_neighbor_addr_ipv4() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_neighbor_addr_ipv4(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_neighbor_addr_ipv4();

  public:
  // string interface_addr_ipv6 = 5;
  void clear_interface_addr_ipv6() ;
  [[nodiscard]] const ::std::string& interface_addr_ipv6() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_interface_addr_ipv6(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_interface_addr_ipv6();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_interface_addr_ipv6();
  void set_allocated_interface_addr_ipv6(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_interface_addr_ipv6() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_interface_addr_ipv6(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_interface_addr_ipv6();

  public:
  // string neighbor_addr_ipv6 = 6;
  void clear_neighbor_addr_ipv6() ;
  [[nodiscard]] const ::std::string& neighbor_addr_ipv6() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_neighbor_addr_ipv6(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_neighbor_addr_ipv6();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_neighbor_addr_ipv6();
  void set_allocated_neighbor_addr_ipv6(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_neighbor_addr_ipv6() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_neighbor_addr_ipv6(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_neighbor_addr_ipv6();

  public:
  // uint32 link_local_id = 1;
  void clear_link_local_id() ;
  [[nodiscard]] ::uint32_t link_local_id() const;
  void set_link_local_id(::uint32_t value);

  private:
  ::uint32_t _internal_link_local_id() const;
  void _internal_set_link_local_id(::uint32_t value);

  public:
  // uint32 link_remote_id = 2;
  void clear_link_remote_id() ;
  [[nodiscard]] ::uint32_t link_remote_id() const;
  void set_link_remote_id(::uint32_t value);

  private:
  ::uint32_t _internal_link_remote_id() const;
  void _internal_set_link_remote_id(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsLinkDescriptor)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 6,
                          0, 105,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsLinkDescriptor& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr interface_addr_ipv4_;
    ::google::protobuf::internal::ArenaStringPtr neighbor_addr_ipv4_;
    ::google::protobuf::internal::ArenaStringPtr interface_addr_ipv6_;
    ::google::protobuf::internal::ArenaStringPtr neighbor_addr_ipv6_;
    ::uint32_t link_local_id_;
    ::uint32_t link_remote_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsIGPFlags final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsIGPFlags) */ {
 public:
  inline LsIGPFlags() : LsIGPFlags(nullptr) {}
  ~LsIGPFlags() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsIGPFlags* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsIGPFlags));
  }
#endif

  template <typename = void>
  explicit constexpr LsIGPFlags(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsIGPFlags(const LsIGPFlags& from) : LsIGPFlags(nullptr, from) {}
  inline LsIGPFlags(LsIGPFlags&& from) noexcept : LsIGPFlags(nullptr, ::std::move(from)) {}
  inline LsIGPFlags& operator=(const LsIGPFlags& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsIGPFlags& operator=(LsIGPFlags&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsIGPFlags& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsIGPFlags>(&LsIGPFlags_globals_);
  }
  static constexpr int kIndexInFileMessages = 103;
  friend void swap(LsIGPFlags& a, LsIGPFlags& b) { a.Swap(&b); }
  inline void Swap(LsIGPFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsIGPFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsIGPFlags* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsIGPFlags>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsIGPFlags& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsIGPFlags& from) { LsIGPFlags::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsIGPFlags* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsIGPFlags"; }

  explicit LsIGPFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsIGPFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsIGPFlags& from);
  LsIGPFlags(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsIGPFlags&& from) noexcept
      : LsIGPFlags(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kDownFieldNumber = 1,
    kNoUnicastFieldNumber = 2,
    kLocalAddressFieldNumber = 3,
    kPropagateNssaFieldNumber = 4,
  };
  // bool down = 1;
  void clear_down() ;
  [[nodiscard]] bool down() const;
  void set_down(bool value);

  private:
  bool _internal_down() const;
  void _internal_set_down(bool value);

  public:
  // bool no_unicast = 2;
  void clear_no_unicast() ;
  [[nodiscard]] bool no_unicast() const;
  void set_no_unicast(bool value);

  private:
  bool _internal_no_unicast() const;
  void _internal_set_no_unicast(bool value);

  public:
  // bool local_address = 3;
  void clear_local_address() ;
  [[nodiscard]] bool local_address() const;
  void set_local_address(bool value);

  private:
  bool _internal_local_address() const;
  void _internal_set_local_address(bool value);

  public:
  // bool propagate_nssa = 4;
  void clear_propagate_nssa() ;
  [[nodiscard]] bool propagate_nssa() const;
  void set_propagate_nssa(bool value);

  private:
  bool _internal_propagate_nssa() const;
  void _internal_set_propagate_nssa(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsIGPFlags)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsIGPFlags& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool down_;
    bool no_unicast_;
    bool local_address_;
    bool propagate_nssa_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsBgpPeerSegmentSIDFlags final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsBgpPeerSegmentSIDFlags) */ {
 public:
  inline LsBgpPeerSegmentSIDFlags() : LsBgpPeerSegmentSIDFlags(nullptr) {}
  ~LsBgpPeerSegmentSIDFlags() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsBgpPeerSegmentSIDFlags* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsBgpPeerSegmentSIDFlags));
  }
#endif

  template <typename = void>
  explicit constexpr LsBgpPeerSegmentSIDFlags(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsBgpPeerSegmentSIDFlags(const LsBgpPeerSegmentSIDFlags& from) : LsBgpPeerSegmentSIDFlags(nullptr, from) {}
  inline LsBgpPeerSegmentSIDFlags(LsBgpPeerSegmentSIDFlags&& from) noexcept : LsBgpPeerSegmentSIDFlags(nullptr, ::std::move(from)) {}
  inline LsBgpPeerSegmentSIDFlags& operator=(const LsBgpPeerSegmentSIDFlags& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsBgpPeerSegmentSIDFlags& operator=(LsBgpPeerSegmentSIDFlags&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsBgpPeerSegmentSIDFlags& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsBgpPeerSegmentSIDFlags>(&LsBgpPeerSegmentSIDFlags_globals_);
  }
  static constexpr int kIndexInFileMessages = 110;
  friend void swap(LsBgpPeerSegmentSIDFlags& a, LsBgpPeerSegmentSIDFlags& b) { a.Swap(&b); }
  inline void Swap(LsBgpPeerSegmentSIDFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsBgpPeerSegmentSIDFlags* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsBgpPeerSegmentSIDFlags* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsBgpPeerSegmentSIDFlags>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsBgpPeerSegmentSIDFlags& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsBgpPeerSegmentSIDFlags& from) { LsBgpPeerSegmentSIDFlags::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsBgpPeerSegmentSIDFlags* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsBgpPeerSegmentSIDFlags"; }

  explicit LsBgpPeerSegmentSIDFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsBgpPeerSegmentSIDFlags(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsBgpPeerSegmentSIDFlags& from);
  LsBgpPeerSegmentSIDFlags(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsBgpPeerSegmentSIDFlags&& from) noexcept
      : LsBgpPeerSegmentSIDFlags(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 1,
    kLocalFieldNumber = 2,
    kBackupFieldNumber = 3,
    kPersistentFieldNumber = 4,
  };
  // bool value = 1;
  void clear_value() ;
  [[nodiscard]] bool value() const;
  void set_value(bool value);

  private:
  bool _internal_value() const;
  void _internal_set_value(bool value);

  public:
  // bool local = 2;
  void clear_local() ;
  [[nodiscard]] bool local() const;
  void set_local(bool value);

  private:
  bool _internal_local() const;
  void _internal_set_local(bool value);

  public:
  // bool backup = 3;
  void clear_backup() ;
  [[nodiscard]] bool backup() const;
  void set_backup(bool value);

  private:
  bool _internal_backup() const;
  void _internal_set_backup(bool value);

  public:
  // bool persistent = 4;
  void clear_persistent() ;
  [[nodiscard]] bool persistent() const;
  void set_persistent(bool value);

  private:
  bool _internal_persistent() const;
  void _internal_set_persistent(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsBgpPeerSegmentSIDFlags)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsBgpPeerSegmentSIDFlags& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool value_;
    bool local_;
    bool backup_;
    bool persistent_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsAttributeLink final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsAttributeLink) */ {
 public:
  inline LsAttributeLink() : LsAttributeLink(nullptr) {}
  ~LsAttributeLink() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsAttributeLink* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsAttributeLink));
  }
#endif

  template <typename = void>
  explicit constexpr LsAttributeLink(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsAttributeLink(const LsAttributeLink& from) : LsAttributeLink(nullptr, from) {}
  inline LsAttributeLink(LsAttributeLink&& from) noexcept : LsAttributeLink(nullptr, ::std::move(from)) {}
  inline LsAttributeLink& operator=(const LsAttributeLink& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsAttributeLink& operator=(LsAttributeLink&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsAttributeLink& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsAttributeLink>(&LsAttributeLink_globals_);
  }
  static constexpr int kIndexInFileMessages = 108;
  friend void swap(LsAttributeLink& a, LsAttributeLink& b) { a.Swap(&b); }
  inline void Swap(LsAttributeLink* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsAttributeLink* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsAttributeLink* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsAttributeLink>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsAttributeLink& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsAttributeLink& from) { LsAttributeLink::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsAttributeLink* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsAttributeLink"; }

  explicit LsAttributeLink(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsAttributeLink(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsAttributeLink& from);
  LsAttributeLink(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsAttributeLink&& from) noexcept
      : LsAttributeLink(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kUnreservedBandwidthFieldNumber = 12,
    kSrlgsFieldNumber = 14,
    kNameFieldNumber = 1,
    kLocalRouterIdFieldNumber = 2,
    kLocalRouterIdV6FieldNumber = 3,
    kRemoteRouterIdFieldNumber = 4,
    kRemoteRouterIdV6FieldNumber = 5,
    kOpaqueFieldNumber = 9,
    kAdminGroupFieldNumber = 6,
    kDefaultTeMetricFieldNumber = 7,
    kIgpMetricFieldNumber = 8,
    kBandwidthFieldNumber = 10,
    kReservableBandwidthFieldNumber = 11,
    kSrAdjacencySidFieldNumber = 13,
  };
  // repeated float unreserved_bandwidth = 12;
  [[nodiscard]] int unreserved_bandwidth_size()
      const;
  private:
  int _internal_unreserved_bandwidth_size() const;

  public:
  void clear_unreserved_bandwidth() ;
  [[nodiscard]] float unreserved_bandwidth(int index) const;
  void set_unreserved_bandwidth(int index, float value);
  void add_unreserved_bandwidth(float value);
  [[nodiscard]] const ::google::protobuf::RepeatedField<float>& unreserved_bandwidth()
      const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL mutable_unreserved_bandwidth();

  private:
  const ::google::protobuf::RepeatedField<float>& _internal_unreserved_bandwidth() const;
  ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL _internal_mutable_unreserved_bandwidth();

  public:
  // repeated uint32 srlgs = 14;
  [[nodiscard]] int srlgs_size()
      const;
  private:
  int _internal_srlgs_size() const;

  public:
  void clear_srlgs() ;
  [[nodiscard]] ::uint32_t srlgs(int index) const;
  void set_srlgs(int index, ::uint32_t value);
  void add_srlgs(::uint32_t value);
  [[nodiscard]] const ::google::protobuf::RepeatedField<::uint32_t>& srlgs()
      const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_srlgs();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_srlgs() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_srlgs();

  public:
  // string name = 1;
  void clear_name() ;
  [[nodiscard]] const ::std::string& name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_name();

  public:
  // string local_router_id = 2;
  void clear_local_router_id() ;
  [[nodiscard]] const ::std::string& local_router_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_local_router_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_local_router_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_local_router_id();
  void set_allocated_local_router_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_local_router_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_local_router_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_local_router_id();

  public:
  // string local_router_id_v6 = 3;
  void clear_local_router_id_v6() ;
  [[nodiscard]] const ::std::string& local_router_id_v6() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_local_router_id_v6(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_local_router_id_v6();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_local_router_id_v6();
  void set_allocated_local_router_id_v6(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_local_router_id_v6() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_local_router_id_v6(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_local_router_id_v6();

  public:
  // string remote_router_id = 4;
  void clear_remote_router_id() ;
  [[nodiscard]] const ::std::string& remote_router_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_remote_router_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_remote_router_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_remote_router_id();
  void set_allocated_remote_router_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_remote_router_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_remote_router_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_remote_router_id();

  public:
  // string remote_router_id_v6 = 5;
  void clear_remote_router_id_v6() ;
  [[nodiscard]] const ::std::string& remote_router_id_v6() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_remote_router_id_v6(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_remote_router_id_v6();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_remote_router_id_v6();
  void set_allocated_remote_router_id_v6(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_remote_router_id_v6() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_remote_router_id_v6(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_remote_router_id_v6();

  public:
  // bytes opaque = 9;
  void clear_opaque() ;
  [[nodiscard]] const ::std::string& opaque() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_opaque(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_opaque();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_opaque();
  void set_allocated_opaque(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_opaque() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_opaque(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_opaque();

  public:
  // uint32 admin_group = 6;
  void clear_admin_group() ;
  [[nodiscard]] ::uint32_t admin_group() const;
  void set_admin_group(::uint32_t value);

  private:
  ::uint32_t _internal_admin_group() const;
  void _internal_set_admin_group(::uint32_t value);

  public:
  // uint32 default_te_metric = 7;
  void clear_default_te_metric() ;
  [[nodiscard]] ::uint32_t default_te_metric() const;
  void set_default_te_metric(::uint32_t value);

  private:
  ::uint32_t _internal_default_te_metric() const;
  void _internal_set_default_te_metric(::uint32_t value);

  public:
  // uint32 igp_metric = 8;
  void clear_igp_metric() ;
  [[nodiscard]] ::uint32_t igp_metric() const;
  void set_igp_metric(::uint32_t value);

  private:
  ::uint32_t _internal_igp_metric() const;
  void _internal_set_igp_metric(::uint32_t value);

  public:
  // float bandwidth = 10;
  void clear_bandwidth() ;
  [[nodiscard]] float bandwidth() const;
  void set_bandwidth(float value);

  private:
  float _internal_bandwidth() const;
  void _internal_set_bandwidth(float value);

  public:
  // float reservable_bandwidth = 11;
  void clear_reservable_bandwidth() ;
  [[nodiscard]] float reservable_bandwidth() const;
  void set_reservable_bandwidth(float value);

  private:
  float _internal_reservable_bandwidth() const;
  void _internal_set_reservable_bandwidth(float value);

  public:
  // uint32 sr_adjacency_sid = 13;
  void clear_sr_adjacency_sid() ;
  [[nodiscard]] ::uint32_t sr_adjacency_sid() const;
  void set_sr_adjacency_sid(::uint32_t value);

  private:
  ::uint32_t _internal_sr_adjacency_sid() const;
  void _internal_set_sr_adjacency_sid(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsAttributeLink)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<4, 14,
                          0, 110,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsAttributeLink& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<float> unreserved_bandwidth_;
    ::google::protobuf::RepeatedField<::uint32_t> srlgs_;
    ::google::protobuf::internal::CachedSize _srlgs_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr local_router_id_;
    ::google::protobuf::internal::ArenaStringPtr local_router_id_v6_;
    ::google::protobuf::internal::ArenaStringPtr remote_router_id_;
    ::google::protobuf::internal::ArenaStringPtr remote_router_id_v6_;
    ::google::protobuf::internal::ArenaStringPtr opaque_;
    ::uint32_t admin_group_;
    ::uint32_t default_te_metric_;
    ::uint32_t igp_metric_;
    float bandwidth_;
    float reservable_bandwidth_;
    ::uint32_t sr_adjacency_sid_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LocalPrefAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LocalPrefAttribute) */ {
 public:
  inline LocalPrefAttribute() : LocalPrefAttribute(nullptr) {}
  ~LocalPrefAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LocalPrefAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LocalPrefAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr LocalPrefAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LocalPrefAttribute(const LocalPrefAttribute& from) : LocalPrefAttribute(nullptr, from) {}
  inline LocalPrefAttribute(LocalPrefAttribute&& from) noexcept : LocalPrefAttribute(nullptr, ::std::move(from)) {}
  inline LocalPrefAttribute& operator=(const LocalPrefAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline LocalPrefAttribute& operator=(LocalPrefAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LocalPrefAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LocalPrefAttribute>(&LocalPrefAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(LocalPrefAttribute& a, LocalPrefAttribute& b) { a.Swap(&b); }
  inline void Swap(LocalPrefAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LocalPrefAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LocalPrefAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LocalPrefAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LocalPrefAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LocalPrefAttribute& from) { LocalPrefAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LocalPrefAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LocalPrefAttribute"; }

  explicit LocalPrefAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LocalPrefAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LocalPrefAttribute& from);
  LocalPrefAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LocalPrefAttribute&& from) noexcept
      : LocalPrefAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLocalPrefFieldNumber = 1,
  };
  // uint32 local_pref = 1;
  void clear_local_pref() ;
  [[nodiscard]] ::uint32_t local_pref() const;
  void set_local_pref(::uint32_t value);

  private:
  ::uint32_t _internal_local_pref() const;
  void _internal_set_local_pref(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LocalPrefAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LocalPrefAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t local_pref_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LinkBandwidthExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LinkBandwidthExtended) */ {
 public:
  inline LinkBandwidthExtended() : LinkBandwidthExtended(nullptr) {}
  ~LinkBandwidthExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LinkBandwidthExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LinkBandwidthExtended));
  }
#endif

  template <typename = void>
  explicit constexpr LinkBandwidthExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LinkBandwidthExtended(const LinkBandwidthExtended& from) : LinkBandwidthExtended(nullptr, from) {}
  inline LinkBandwidthExtended(LinkBandwidthExtended&& from) noexcept : LinkBandwidthExtended(nullptr, ::std::move(from)) {}
  inline LinkBandwidthExtended& operator=(const LinkBandwidthExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline LinkBandwidthExtended& operator=(LinkBandwidthExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LinkBandwidthExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LinkBandwidthExtended>(&LinkBandwidthExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 51;
  friend void swap(LinkBandwidthExtended& a, LinkBandwidthExtended& b) { a.Swap(&b); }
  inline void Swap(LinkBandwidthExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LinkBandwidthExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LinkBandwidthExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LinkBandwidthExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LinkBandwidthExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LinkBandwidthExtended& from) { LinkBandwidthExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LinkBandwidthExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LinkBandwidthExtended"; }

  explicit LinkBandwidthExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LinkBandwidthExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LinkBandwidthExtended& from);
  LinkBandwidthExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LinkBandwidthExtended&& from) noexcept
      : LinkBandwidthExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAsnFieldNumber = 1,
    kBandwidthFieldNumber = 2,
  };
  // uint32 asn = 1;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // float bandwidth = 2;
  void clear_bandwidth() ;
  [[nodiscard]] float bandwidth() const;
  void set_bandwidth(float value);

  private:
  float _internal_bandwidth() const;
  void _internal_set_bandwidth(float value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LinkBandwidthExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LinkBandwidthExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t asn_;
    float bandwidth_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LargeCommunity final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LargeCommunity) */ {
 public:
  inline LargeCommunity() : LargeCommunity(nullptr) {}
  ~LargeCommunity() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LargeCommunity* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LargeCommunity));
  }
#endif

  template <typename = void>
  explicit constexpr LargeCommunity(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LargeCommunity(const LargeCommunity& from) : LargeCommunity(nullptr, from) {}
  inline LargeCommunity(LargeCommunity&& from) noexcept : LargeCommunity(nullptr, ::std::move(from)) {}
  inline LargeCommunity& operator=(const LargeCommunity& from) {
    CopyFrom(from);
    return *this;
  }
  inline LargeCommunity& operator=(LargeCommunity&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LargeCommunity& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LargeCommunity>(&LargeCommunity_globals_);
  }
  static constexpr int kIndexInFileMessages = 100;
  friend void swap(LargeCommunity& a, LargeCommunity& b) { a.Swap(&b); }
  inline void Swap(LargeCommunity* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LargeCommunity* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LargeCommunity* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LargeCommunity>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LargeCommunity& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LargeCommunity& from) { LargeCommunity::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LargeCommunity* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LargeCommunity"; }

  explicit LargeCommunity(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LargeCommunity(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LargeCommunity& from);
  LargeCommunity(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LargeCommunity&& from) noexcept
      : LargeCommunity(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kGlobalAdminFieldNumber = 1,
    kLocalData1FieldNumber = 2,
    kLocalData2FieldNumber = 3,
  };
  // uint32 global_admin = 1;
  void clear_global_admin() ;
  [[nodiscard]] ::uint32_t global_admin() const;
  void set_global_admin(::uint32_t value);

  private:
  ::uint32_t _internal_global_admin() const;
  void _internal_set_global_admin(::uint32_t value);

  public:
  // uint32 local_data1 = 2;
  void clear_local_data1() ;
  [[nodiscard]] ::uint32_t local_data1() const;
  void set_local_data1(::uint32_t value);

  private:
  ::uint32_t _internal_local_data1() const;
  void _internal_set_local_data1(::uint32_t value);

  public:
  // uint32 local_data2 = 3;
  void clear_local_data2() ;
  [[nodiscard]] ::uint32_t local_data2() const;
  void set_local_data2(::uint32_t value);

  private:
  ::uint32_t _internal_local_data2() const;
  void _internal_set_local_data2(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LargeCommunity)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LargeCommunity& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t global_admin_;
    ::uint32_t local_data1_;
    ::uint32_t local_data2_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LabeledIPAddressPrefix final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LabeledIPAddressPrefix) */ {
 public:
  inline LabeledIPAddressPrefix() : LabeledIPAddressPrefix(nullptr) {}
  ~LabeledIPAddressPrefix() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LabeledIPAddressPrefix* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LabeledIPAddressPrefix));
  }
#endif

  template <typename = void>
  explicit constexpr LabeledIPAddressPrefix(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LabeledIPAddressPrefix(const LabeledIPAddressPrefix& from) : LabeledIPAddressPrefix(nullptr, from) {}
  inline LabeledIPAddressPrefix(LabeledIPAddressPrefix&& from) noexcept : LabeledIPAddressPrefix(nullptr, ::std::move(from)) {}
  inline LabeledIPAddressPrefix& operator=(const LabeledIPAddressPrefix& from) {
    CopyFrom(from);
    return *this;
  }
  inline LabeledIPAddressPrefix& operator=(LabeledIPAddressPrefix&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LabeledIPAddressPrefix& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LabeledIPAddressPrefix>(&LabeledIPAddressPrefix_globals_);
  }
  static constexpr int kIndexInFileMessages = 12;
  friend void swap(LabeledIPAddressPrefix& a, LabeledIPAddressPrefix& b) { a.Swap(&b); }
  inline void Swap(LabeledIPAddressPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LabeledIPAddressPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LabeledIPAddressPrefix* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LabeledIPAddressPrefix>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LabeledIPAddressPrefix& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LabeledIPAddressPrefix& from) { LabeledIPAddressPrefix::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LabeledIPAddressPrefix* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LabeledIPAddressPrefix"; }

  explicit LabeledIPAddressPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LabeledIPAddressPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LabeledIPAddressPrefix& from);
  LabeledIPAddressPrefix(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LabeledIPAddressPrefix&& from) noexcept
      : LabeledIPAddressPrefix(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLabelsFieldNumber = 1,
    kPrefixFieldNumber = 3,
    kPrefixLenFieldNumber = 2,
  };
  // repeated uint32 labels = 1;
  [[nodiscard]] int labels_size()
      const;
  private:
  int _internal_labels_size() const;

  public:
  void clear_labels() ;
  [[nodiscard]] ::uint32_t labels(int index) const;
  void set_labels(int index, ::uint32_t value);
  void add_labels(::uint32_t value);
  [[nodiscard]] const ::google::protobuf::RepeatedField<::uint32_t>& labels()
      const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_labels();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_labels() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_labels();

  public:
  // string prefix = 3;
  void clear_prefix() ;
  [[nodiscard]] const ::std::string& prefix() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_prefix(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_prefix();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_prefix();
  void set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_prefix() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_prefix(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_prefix();

  public:
  // uint32 prefix_len = 2;
  void clear_prefix_len() ;
  [[nodiscard]] ::uint32_t prefix_len() const;
  void set_prefix_len(::uint32_t value);

  private:
  ::uint32_t _internal_prefix_len() const;
  void _internal_set_prefix_len(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LabeledIPAddressPrefix)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          0, 43,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LabeledIPAddressPrefix& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::uint32_t> labels_;
    ::google::protobuf::internal::CachedSize _labels_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr prefix_;
    ::uint32_t prefix_len_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED IPv6AddressSpecificExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.IPv6AddressSpecificExtended) */ {
 public:
  inline IPv6AddressSpecificExtended() : IPv6AddressSpecificExtended(nullptr) {}
  ~IPv6AddressSpecificExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(IPv6AddressSpecificExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(IPv6AddressSpecificExtended));
  }
#endif

  template <typename = void>
  explicit constexpr IPv6AddressSpecificExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline IPv6AddressSpecificExtended(const IPv6AddressSpecificExtended& from) : IPv6AddressSpecificExtended(nullptr, from) {}
  inline IPv6AddressSpecificExtended(IPv6AddressSpecificExtended&& from) noexcept : IPv6AddressSpecificExtended(nullptr, ::std::move(from)) {}
  inline IPv6AddressSpecificExtended& operator=(const IPv6AddressSpecificExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline IPv6AddressSpecificExtended& operator=(IPv6AddressSpecificExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const IPv6AddressSpecificExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<IPv6AddressSpecificExtended>(&IPv6AddressSpecificExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 94;
  friend void swap(IPv6AddressSpecificExtended& a, IPv6AddressSpecificExtended& b) { a.Swap(&b); }
  inline void Swap(IPv6AddressSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(IPv6AddressSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] IPv6AddressSpecificExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<IPv6AddressSpecificExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const IPv6AddressSpecificExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const IPv6AddressSpecificExtended& from) { IPv6AddressSpecificExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(IPv6AddressSpecificExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.IPv6AddressSpecificExtended"; }

  explicit IPv6AddressSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  IPv6AddressSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const IPv6AddressSpecificExtended& from);
  IPv6AddressSpecificExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, IPv6AddressSpecificExtended&& from) noexcept
      : IPv6AddressSpecificExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 3,
    kIsTransitiveFieldNumber = 1,
    kSubTypeFieldNumber = 2,
    kLocalAdminFieldNumber = 4,
  };
  // string address = 3;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // bool is_transitive = 1;
  void clear_is_transitive() ;
  [[nodiscard]] bool is_transitive() const;
  void set_is_transitive(bool value);

  private:
  bool _internal_is_transitive() const;
  void _internal_set_is_transitive(bool value);

  public:
  // uint32 sub_type = 2;
  void clear_sub_type() ;
  [[nodiscard]] ::uint32_t sub_type() const;
  void set_sub_type(::uint32_t value);

  private:
  ::uint32_t _internal_sub_type() const;
  void _internal_set_sub_type(::uint32_t value);

  public:
  // uint32 local_admin = 4;
  void clear_local_admin() ;
  [[nodiscard]] ::uint32_t local_admin() const;
  void set_local_admin(::uint32_t value);

  private:
  ::uint32_t _internal_local_admin() const;
  void _internal_set_local_admin(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.IPv6AddressSpecificExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 49,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const IPv6AddressSpecificExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    bool is_transitive_;
    ::uint32_t sub_type_;
    ::uint32_t local_admin_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED IPv4AddressSpecificExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.IPv4AddressSpecificExtended) */ {
 public:
  inline IPv4AddressSpecificExtended() : IPv4AddressSpecificExtended(nullptr) {}
  ~IPv4AddressSpecificExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(IPv4AddressSpecificExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(IPv4AddressSpecificExtended));
  }
#endif

  template <typename = void>
  explicit constexpr IPv4AddressSpecificExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline IPv4AddressSpecificExtended(const IPv4AddressSpecificExtended& from) : IPv4AddressSpecificExtended(nullptr, from) {}
  inline IPv4AddressSpecificExtended(IPv4AddressSpecificExtended&& from) noexcept : IPv4AddressSpecificExtended(nullptr, ::std::move(from)) {}
  inline IPv4AddressSpecificExtended& operator=(const IPv4AddressSpecificExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline IPv4AddressSpecificExtended& operator=(IPv4AddressSpecificExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const IPv4AddressSpecificExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<IPv4AddressSpecificExtended>(&IPv4AddressSpecificExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 49;
  friend void swap(IPv4AddressSpecificExtended& a, IPv4AddressSpecificExtended& b) { a.Swap(&b); }
  inline void Swap(IPv4AddressSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(IPv4AddressSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] IPv4AddressSpecificExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<IPv4AddressSpecificExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const IPv4AddressSpecificExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const IPv4AddressSpecificExtended& from) { IPv4AddressSpecificExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(IPv4AddressSpecificExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.IPv4AddressSpecificExtended"; }

  explicit IPv4AddressSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  IPv4AddressSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const IPv4AddressSpecificExtended& from);
  IPv4AddressSpecificExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, IPv4AddressSpecificExtended&& from) noexcept
      : IPv4AddressSpecificExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 3,
    kIsTransitiveFieldNumber = 1,
    kSubTypeFieldNumber = 2,
    kLocalAdminFieldNumber = 4,
  };
  // string address = 3;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // bool is_transitive = 1;
  void clear_is_transitive() ;
  [[nodiscard]] bool is_transitive() const;
  void set_is_transitive(bool value);

  private:
  bool _internal_is_transitive() const;
  void _internal_set_is_transitive(bool value);

  public:
  // uint32 sub_type = 2;
  void clear_sub_type() ;
  [[nodiscard]] ::uint32_t sub_type() const;
  void set_sub_type(::uint32_t value);

  private:
  ::uint32_t _internal_sub_type() const;
  void _internal_set_sub_type(::uint32_t value);

  public:
  // uint32 local_admin = 4;
  void clear_local_admin() ;
  [[nodiscard]] ::uint32_t local_admin() const;
  void set_local_admin(::uint32_t value);

  private:
  ::uint32_t _internal_local_admin() const;
  void _internal_set_local_admin(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.IPv4AddressSpecificExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 49,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const IPv4AddressSpecificExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    bool is_transitive_;
    ::uint32_t sub_type_;
    ::uint32_t local_admin_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED IPAddressPrefix final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.IPAddressPrefix) */ {
 public:
  inline IPAddressPrefix() : IPAddressPrefix(nullptr) {}
  ~IPAddressPrefix() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(IPAddressPrefix* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(IPAddressPrefix));
  }
#endif

  template <typename = void>
  explicit constexpr IPAddressPrefix(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline IPAddressPrefix(const IPAddressPrefix& from) : IPAddressPrefix(nullptr, from) {}
  inline IPAddressPrefix(IPAddressPrefix&& from) noexcept : IPAddressPrefix(nullptr, ::std::move(from)) {}
  inline IPAddressPrefix& operator=(const IPAddressPrefix& from) {
    CopyFrom(from);
    return *this;
  }
  inline IPAddressPrefix& operator=(IPAddressPrefix&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const IPAddressPrefix& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<IPAddressPrefix>(&IPAddressPrefix_globals_);
  }
  static constexpr int kIndexInFileMessages = 11;
  friend void swap(IPAddressPrefix& a, IPAddressPrefix& b) { a.Swap(&b); }
  inline void Swap(IPAddressPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(IPAddressPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] IPAddressPrefix* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<IPAddressPrefix>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const IPAddressPrefix& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const IPAddressPrefix& from) { IPAddressPrefix::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(IPAddressPrefix* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.IPAddressPrefix"; }

  explicit IPAddressPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  IPAddressPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const IPAddressPrefix& from);
  IPAddressPrefix(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, IPAddressPrefix&& from) noexcept
      : IPAddressPrefix(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPrefixFieldNumber = 2,
    kPrefixLenFieldNumber = 1,
  };
  // string prefix = 2;
  void clear_prefix() ;
  [[nodiscard]] const ::std::string& prefix() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_prefix(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_prefix();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_prefix();
  void set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_prefix() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_prefix(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_prefix();

  public:
  // uint32 prefix_len = 1;
  void clear_prefix_len() ;
  [[nodiscard]] ::uint32_t prefix_len() const;
  void set_prefix_len(::uint32_t value);

  private:
  ::uint32_t _internal_prefix_len() const;
  void _internal_set_prefix_len(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.IPAddressPrefix)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 36,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const IPAddressPrefix& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr prefix_;
    ::uint32_t prefix_len_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED FourOctetAsSpecificExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.FourOctetAsSpecificExtended) */ {
 public:
  inline FourOctetAsSpecificExtended() : FourOctetAsSpecificExtended(nullptr) {}
  ~FourOctetAsSpecificExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(FourOctetAsSpecificExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(FourOctetAsSpecificExtended));
  }
#endif

  template <typename = void>
  explicit constexpr FourOctetAsSpecificExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline FourOctetAsSpecificExtended(const FourOctetAsSpecificExtended& from) : FourOctetAsSpecificExtended(nullptr, from) {}
  inline FourOctetAsSpecificExtended(FourOctetAsSpecificExtended&& from) noexcept : FourOctetAsSpecificExtended(nullptr, ::std::move(from)) {}
  inline FourOctetAsSpecificExtended& operator=(const FourOctetAsSpecificExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline FourOctetAsSpecificExtended& operator=(FourOctetAsSpecificExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const FourOctetAsSpecificExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<FourOctetAsSpecificExtended>(&FourOctetAsSpecificExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 50;
  friend void swap(FourOctetAsSpecificExtended& a, FourOctetAsSpecificExtended& b) { a.Swap(&b); }
  inline void Swap(FourOctetAsSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FourOctetAsSpecificExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] FourOctetAsSpecificExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<FourOctetAsSpecificExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FourOctetAsSpecificExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FourOctetAsSpecificExtended& from) { FourOctetAsSpecificExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(FourOctetAsSpecificExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.FourOctetAsSpecificExtended"; }

  explicit FourOctetAsSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FourOctetAsSpecificExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FourOctetAsSpecificExtended& from);
  FourOctetAsSpecificExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FourOctetAsSpecificExtended&& from) noexcept
      : FourOctetAsSpecificExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIsTransitiveFieldNumber = 1,
    kSubTypeFieldNumber = 2,
    kAsnFieldNumber = 3,
    kLocalAdminFieldNumber = 4,
  };
  // bool is_transitive = 1;
  void clear_is_transitive() ;
  [[nodiscard]] bool is_transitive() const;
  void set_is_transitive(bool value);

  private:
  bool _internal_is_transitive() const;
  void _internal_set_is_transitive(bool value);

  public:
  // uint32 sub_type = 2;
  void clear_sub_type() ;
  [[nodiscard]] ::uint32_t sub_type() const;
  void set_sub_type(::uint32_t value);

  private:
  ::uint32_t _internal_sub_type() const;
  void _internal_set_sub_type(::uint32_t value);

  public:
  // uint32 asn = 3;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // uint32 local_admin = 4;
  void clear_local_admin() ;
  [[nodiscard]] ::uint32_t local_admin() const;
  void set_local_admin(::uint32_t value);

  private:
  ::uint32_t _internal_local_admin() const;
  void _internal_set_local_admin(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.FourOctetAsSpecificExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const FourOctetAsSpecificExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool is_transitive_;
    ::uint32_t sub_type_;
    ::uint32_t asn_;
    ::uint32_t local_admin_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED FlowSpecMAC final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.FlowSpecMAC) */ {
 public:
  inline FlowSpecMAC() : FlowSpecMAC(nullptr) {}
  ~FlowSpecMAC() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(FlowSpecMAC* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(FlowSpecMAC));
  }
#endif

  template <typename = void>
  explicit constexpr FlowSpecMAC(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline FlowSpecMAC(const FlowSpecMAC& from) : FlowSpecMAC(nullptr, from) {}
  inline FlowSpecMAC(FlowSpecMAC&& from) noexcept : FlowSpecMAC(nullptr, ::std::move(from)) {}
  inline FlowSpecMAC& operator=(const FlowSpecMAC& from) {
    CopyFrom(from);
    return *this;
  }
  inline FlowSpecMAC& operator=(FlowSpecMAC&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const FlowSpecMAC& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<FlowSpecMAC>(&FlowSpecMAC_globals_);
  }
  static constexpr int kIndexInFileMessages = 28;
  friend void swap(FlowSpecMAC& a, FlowSpecMAC& b) { a.Swap(&b); }
  inline void Swap(FlowSpecMAC* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FlowSpecMAC* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] FlowSpecMAC* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<FlowSpecMAC>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FlowSpecMAC& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FlowSpecMAC& from) { FlowSpecMAC::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(FlowSpecMAC* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.FlowSpecMAC"; }

  explicit FlowSpecMAC(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FlowSpecMAC(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FlowSpecMAC& from);
  FlowSpecMAC(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FlowSpecMAC&& from) noexcept
      : FlowSpecMAC(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 2,
    kTypeFieldNumber = 1,
  };
  // string address = 2;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // uint32 type = 1;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.FlowSpecMAC)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 33,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const FlowSpecMAC& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    ::uint32_t type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED FlowSpecIPPrefix final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.FlowSpecIPPrefix) */ {
 public:
  inline FlowSpecIPPrefix() : FlowSpecIPPrefix(nullptr) {}
  ~FlowSpecIPPrefix() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(FlowSpecIPPrefix* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(FlowSpecIPPrefix));
  }
#endif

  template <typename = void>
  explicit constexpr FlowSpecIPPrefix(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline FlowSpecIPPrefix(const FlowSpecIPPrefix& from) : FlowSpecIPPrefix(nullptr, from) {}
  inline FlowSpecIPPrefix(FlowSpecIPPrefix&& from) noexcept : FlowSpecIPPrefix(nullptr, ::std::move(from)) {}
  inline FlowSpecIPPrefix& operator=(const FlowSpecIPPrefix& from) {
    CopyFrom(from);
    return *this;
  }
  inline FlowSpecIPPrefix& operator=(FlowSpecIPPrefix&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const FlowSpecIPPrefix& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<FlowSpecIPPrefix>(&FlowSpecIPPrefix_globals_);
  }
  static constexpr int kIndexInFileMessages = 27;
  friend void swap(FlowSpecIPPrefix& a, FlowSpecIPPrefix& b) { a.Swap(&b); }
  inline void Swap(FlowSpecIPPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FlowSpecIPPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] FlowSpecIPPrefix* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<FlowSpecIPPrefix>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FlowSpecIPPrefix& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FlowSpecIPPrefix& from) { FlowSpecIPPrefix::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(FlowSpecIPPrefix* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.FlowSpecIPPrefix"; }

  explicit FlowSpecIPPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FlowSpecIPPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FlowSpecIPPrefix& from);
  FlowSpecIPPrefix(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FlowSpecIPPrefix&& from) noexcept
      : FlowSpecIPPrefix(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPrefixFieldNumber = 3,
    kTypeFieldNumber = 1,
    kPrefixLenFieldNumber = 2,
    kOffsetFieldNumber = 4,
  };
  // string prefix = 3;
  void clear_prefix() ;
  [[nodiscard]] const ::std::string& prefix() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_prefix(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_prefix();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_prefix();
  void set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_prefix() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_prefix(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_prefix();

  public:
  // uint32 type = 1;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // uint32 prefix_len = 2;
  void clear_prefix_len() ;
  [[nodiscard]] ::uint32_t prefix_len() const;
  void set_prefix_len(::uint32_t value);

  private:
  ::uint32_t _internal_prefix_len() const;
  void _internal_set_prefix_len(::uint32_t value);

  public:
  // uint32 offset = 4;
  void clear_offset() ;
  [[nodiscard]] ::uint32_t offset() const;
  void set_offset(::uint32_t value);

  private:
  ::uint32_t _internal_offset() const;
  void _internal_set_offset(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.FlowSpecIPPrefix)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          0, 37,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const FlowSpecIPPrefix& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr prefix_;
    ::uint32_t type_;
    ::uint32_t prefix_len_;
    ::uint32_t offset_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED FlowSpecComponentItem final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.FlowSpecComponentItem) */ {
 public:
  inline FlowSpecComponentItem() : FlowSpecComponentItem(nullptr) {}
  ~FlowSpecComponentItem() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(FlowSpecComponentItem* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(FlowSpecComponentItem));
  }
#endif

  template <typename = void>
  explicit constexpr FlowSpecComponentItem(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline FlowSpecComponentItem(const FlowSpecComponentItem& from) : FlowSpecComponentItem(nullptr, from) {}
  inline FlowSpecComponentItem(FlowSpecComponentItem&& from) noexcept : FlowSpecComponentItem(nullptr, ::std::move(from)) {}
  inline FlowSpecComponentItem& operator=(const FlowSpecComponentItem& from) {
    CopyFrom(from);
    return *this;
  }
  inline FlowSpecComponentItem& operator=(FlowSpecComponentItem&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const FlowSpecComponentItem& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<FlowSpecComponentItem>(&FlowSpecComponentItem_globals_);
  }
  static constexpr int kIndexInFileMessages = 29;
  friend void swap(FlowSpecComponentItem& a, FlowSpecComponentItem& b) { a.Swap(&b); }
  inline void Swap(FlowSpecComponentItem* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FlowSpecComponentItem* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] FlowSpecComponentItem* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<FlowSpecComponentItem>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FlowSpecComponentItem& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FlowSpecComponentItem& from) { FlowSpecComponentItem::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(FlowSpecComponentItem* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.FlowSpecComponentItem"; }

  explicit FlowSpecComponentItem(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FlowSpecComponentItem(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FlowSpecComponentItem& from);
  FlowSpecComponentItem(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FlowSpecComponentItem&& from) noexcept
      : FlowSpecComponentItem(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 2,
    kOpFieldNumber = 1,
  };
  // uint64 value = 2;
  void clear_value() ;
  [[nodiscard]] ::uint64_t value() const;
  void set_value(::uint64_t value);

  private:
  ::uint64_t _internal_value() const;
  void _internal_set_value(::uint64_t value);

  public:
  // uint32 op = 1;
  void clear_op() ;
  [[nodiscard]] ::uint32_t op() const;
  void set_op(::uint32_t value);

  private:
  ::uint32_t _internal_op() const;
  void _internal_set_op(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.FlowSpecComponentItem)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const FlowSpecComponentItem& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint64_t value_;
    ::uint32_t op_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED EthernetSegmentIdentifier final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.EthernetSegmentIdentifier) */ {
 public:
  inline EthernetSegmentIdentifier() : EthernetSegmentIdentifier(nullptr) {}
  ~EthernetSegmentIdentifier() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EthernetSegmentIdentifier* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EthernetSegmentIdentifier));
  }
#endif

  template <typename = void>
  explicit constexpr EthernetSegmentIdentifier(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EthernetSegmentIdentifier(const EthernetSegmentIdentifier& from) : EthernetSegmentIdentifier(nullptr, from) {}
  inline EthernetSegmentIdentifier(EthernetSegmentIdentifier&& from) noexcept : EthernetSegmentIdentifier(nullptr, ::std::move(from)) {}
  inline EthernetSegmentIdentifier& operator=(const EthernetSegmentIdentifier& from) {
    CopyFrom(from);
    return *this;
  }
  inline EthernetSegmentIdentifier& operator=(EthernetSegmentIdentifier&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const EthernetSegmentIdentifier& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EthernetSegmentIdentifier>(&EthernetSegmentIdentifier_globals_);
  }
  static constexpr int kIndexInFileMessages = 17;
  friend void swap(EthernetSegmentIdentifier& a, EthernetSegmentIdentifier& b) { a.Swap(&b); }
  inline void Swap(EthernetSegmentIdentifier* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EthernetSegmentIdentifier* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] EthernetSegmentIdentifier* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<EthernetSegmentIdentifier>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const EthernetSegmentIdentifier& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const EthernetSegmentIdentifier& from) { EthernetSegmentIdentifier::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EthernetSegmentIdentifier* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.EthernetSegmentIdentifier"; }

  explicit EthernetSegmentIdentifier(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EthernetSegmentIdentifier(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EthernetSegmentIdentifier& from);
  EthernetSegmentIdentifier(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EthernetSegmentIdentifier&& from) noexcept
      : EthernetSegmentIdentifier(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 2,
    kTypeFieldNumber = 1,
  };
  // bytes value = 2;
  void clear_value() ;
  [[nodiscard]] const ::std::string& value() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_value();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_value();
  void set_allocated_value(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_value() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_value(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // uint32 type = 1;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.EthernetSegmentIdentifier)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EthernetSegmentIdentifier& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr value_;
    ::uint32_t type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED EncapsulationNLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.EncapsulationNLRI) */ {
 public:
  inline EncapsulationNLRI() : EncapsulationNLRI(nullptr) {}
  ~EncapsulationNLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EncapsulationNLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EncapsulationNLRI));
  }
#endif

  template <typename = void>
  explicit constexpr EncapsulationNLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EncapsulationNLRI(const EncapsulationNLRI& from) : EncapsulationNLRI(nullptr, from) {}
  inline EncapsulationNLRI(EncapsulationNLRI&& from) noexcept : EncapsulationNLRI(nullptr, ::std::move(from)) {}
  inline EncapsulationNLRI& operator=(const EncapsulationNLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline EncapsulationNLRI& operator=(EncapsulationNLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const EncapsulationNLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EncapsulationNLRI>(&EncapsulationNLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 13;
  friend void swap(EncapsulationNLRI& a, EncapsulationNLRI& b) { a.Swap(&b); }
  inline void Swap(EncapsulationNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EncapsulationNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] EncapsulationNLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<EncapsulationNLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const EncapsulationNLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const EncapsulationNLRI& from) { EncapsulationNLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EncapsulationNLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.EncapsulationNLRI"; }

  explicit EncapsulationNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EncapsulationNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EncapsulationNLRI& from);
  EncapsulationNLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EncapsulationNLRI&& from) noexcept
      : EncapsulationNLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 1,
  };
  // string address = 1;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // @@protoc_insertion_point(class_scope:apipb.EncapsulationNLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 39,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EncapsulationNLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED EncapExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.EncapExtended) */ {
 public:
  inline EncapExtended() : EncapExtended(nullptr) {}
  ~EncapExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EncapExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EncapExtended));
  }
#endif

  template <typename = void>
  explicit constexpr EncapExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EncapExtended(const EncapExtended& from) : EncapExtended(nullptr, from) {}
  inline EncapExtended(EncapExtended&& from) noexcept : EncapExtended(nullptr, ::std::move(from)) {}
  inline EncapExtended& operator=(const EncapExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline EncapExtended& operator=(EncapExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const EncapExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EncapExtended>(&EncapExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 54;
  friend void swap(EncapExtended& a, EncapExtended& b) { a.Swap(&b); }
  inline void Swap(EncapExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EncapExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] EncapExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<EncapExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const EncapExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const EncapExtended& from) { EncapExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EncapExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.EncapExtended"; }

  explicit EncapExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EncapExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EncapExtended& from);
  EncapExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EncapExtended&& from) noexcept
      : EncapExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTunnelTypeFieldNumber = 1,
  };
  // uint32 tunnel_type = 1;
  void clear_tunnel_type() ;
  [[nodiscard]] ::uint32_t tunnel_type() const;
  void set_tunnel_type(::uint32_t value);

  private:
  ::uint32_t _internal_tunnel_type() const;
  void _internal_set_tunnel_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.EncapExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EncapExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t tunnel_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ESImportRouteTarget final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.ESImportRouteTarget) */ {
 public:
  inline ESImportRouteTarget() : ESImportRouteTarget(nullptr) {}
  ~ESImportRouteTarget() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ESImportRouteTarget* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ESImportRouteTarget));
  }
#endif

  template <typename = void>
  explicit constexpr ESImportRouteTarget(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline ESImportRouteTarget(const ESImportRouteTarget& from) : ESImportRouteTarget(nullptr, from) {}
  inline ESImportRouteTarget(ESImportRouteTarget&& from) noexcept : ESImportRouteTarget(nullptr, ::std::move(from)) {}
  inline ESImportRouteTarget& operator=(const ESImportRouteTarget& from) {
    CopyFrom(from);
    return *this;
  }
  inline ESImportRouteTarget& operator=(ESImportRouteTarget&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const ESImportRouteTarget& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ESImportRouteTarget>(&ESImportRouteTarget_globals_);
  }
  static constexpr int kIndexInFileMessages = 58;
  friend void swap(ESImportRouteTarget& a, ESImportRouteTarget& b) { a.Swap(&b); }
  inline void Swap(ESImportRouteTarget* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ESImportRouteTarget* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] ESImportRouteTarget* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ESImportRouteTarget>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ESImportRouteTarget& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ESImportRouteTarget& from) { ESImportRouteTarget::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ESImportRouteTarget* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.ESImportRouteTarget"; }

  explicit ESImportRouteTarget(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ESImportRouteTarget(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ESImportRouteTarget& from);
  ESImportRouteTarget(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ESImportRouteTarget&& from) noexcept
      : ESImportRouteTarget(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kEsImportFieldNumber = 1,
  };
  // string es_import = 1;
  void clear_es_import() ;
  [[nodiscard]] const ::std::string& es_import() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_es_import(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_es_import();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_es_import();
  void set_allocated_es_import(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_es_import() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_es_import(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_es_import();

  public:
  // @@protoc_insertion_point(class_scope:apipb.ESImportRouteTarget)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 43,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ESImportRouteTarget& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr es_import_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ESILabelExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.ESILabelExtended) */ {
 public:
  inline ESILabelExtended() : ESILabelExtended(nullptr) {}
  ~ESILabelExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ESILabelExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ESILabelExtended));
  }
#endif

  template <typename = void>
  explicit constexpr ESILabelExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline ESILabelExtended(const ESILabelExtended& from) : ESILabelExtended(nullptr, from) {}
  inline ESILabelExtended(ESILabelExtended&& from) noexcept : ESILabelExtended(nullptr, ::std::move(from)) {}
  inline ESILabelExtended& operator=(const ESILabelExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline ESILabelExtended& operator=(ESILabelExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const ESILabelExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ESILabelExtended>(&ESILabelExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 57;
  friend void swap(ESILabelExtended& a, ESILabelExtended& b) { a.Swap(&b); }
  inline void Swap(ESILabelExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ESILabelExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] ESILabelExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ESILabelExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ESILabelExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ESILabelExtended& from) { ESILabelExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ESILabelExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.ESILabelExtended"; }

  explicit ESILabelExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ESILabelExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ESILabelExtended& from);
  ESILabelExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ESILabelExtended&& from) noexcept
      : ESILabelExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIsSingleActiveFieldNumber = 1,
    kLabelFieldNumber = 2,
  };
  // bool is_single_active = 1;
  void clear_is_single_active() ;
  [[nodiscard]] bool is_single_active() const;
  void set_is_single_active(bool value);

  private:
  bool _internal_is_single_active() const;
  void _internal_set_is_single_active(bool value);

  public:
  // uint32 label = 2;
  void clear_label() ;
  [[nodiscard]] ::uint32_t label() const;
  void set_label(::uint32_t value);

  private:
  ::uint32_t _internal_label() const;
  void _internal_set_label(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.ESILabelExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ESILabelExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    bool is_single_active_;
    ::uint32_t label_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED DefaultGatewayExtended final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:apipb.DefaultGatewayExtended) */ {
 public:
  inline DefaultGatewayExtended() : DefaultGatewayExtended(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(DefaultGatewayExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(DefaultGatewayExtended));
  }
#endif

  template <typename = void>
  explicit constexpr DefaultGatewayExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline DefaultGatewayExtended(const DefaultGatewayExtended& from) : DefaultGatewayExtended(nullptr, from) {}
  inline DefaultGatewayExtended(DefaultGatewayExtended&& from) noexcept : DefaultGatewayExtended(nullptr, ::std::move(from)) {}
  inline DefaultGatewayExtended& operator=(const DefaultGatewayExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline DefaultGatewayExtended& operator=(DefaultGatewayExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const DefaultGatewayExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<DefaultGatewayExtended>(&DefaultGatewayExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 55;
  friend void swap(DefaultGatewayExtended& a, DefaultGatewayExtended& b) { a.Swap(&b); }
  inline void Swap(DefaultGatewayExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DefaultGatewayExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] DefaultGatewayExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<DefaultGatewayExtended>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const DefaultGatewayExtended& from) { ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from); }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const DefaultGatewayExtended& from) { ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from); }

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.DefaultGatewayExtended"; }

  explicit DefaultGatewayExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DefaultGatewayExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DefaultGatewayExtended& from);
  DefaultGatewayExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DefaultGatewayExtended&& from) noexcept
      : DefaultGatewayExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:apipb.DefaultGatewayExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 0,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED CommunitiesAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.CommunitiesAttribute) */ {
 public:
  inline CommunitiesAttribute() : CommunitiesAttribute(nullptr) {}
  ~CommunitiesAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(CommunitiesAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(CommunitiesAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr CommunitiesAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline CommunitiesAttribute(const CommunitiesAttribute& from) : CommunitiesAttribute(nullptr, from) {}
  inline CommunitiesAttribute(CommunitiesAttribute&& from) noexcept : CommunitiesAttribute(nullptr, ::std::move(from)) {}
  inline CommunitiesAttribute& operator=(const CommunitiesAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline CommunitiesAttribute& operator=(CommunitiesAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const CommunitiesAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<CommunitiesAttribute>(&CommunitiesAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(CommunitiesAttribute& a, CommunitiesAttribute& b) { a.Swap(&b); }
  inline void Swap(CommunitiesAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CommunitiesAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] CommunitiesAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<CommunitiesAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const CommunitiesAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const CommunitiesAttribute& from) { CommunitiesAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(CommunitiesAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.CommunitiesAttribute"; }

  explicit CommunitiesAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  CommunitiesAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const CommunitiesAttribute& from);
  CommunitiesAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, CommunitiesAttribute&& from) noexcept
      : CommunitiesAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kCommunitiesFieldNumber = 1,
  };
  // repeated uint32 communities = 1;
  [[nodiscard]] int communities_size()
      const;
  private:
  int _internal_communities_size() const;

  public:
  void clear_communities() ;
  [[nodiscard]] ::uint32_t communities(int index) const;
  void set_communities(int index, ::uint32_t value);
  void add_communities(::uint32_t value);
  [[nodiscard]] const ::google::protobuf::RepeatedField<::uint32_t>& communities()
      const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_communities();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_communities() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_communities();

  public:
  // @@protoc_insertion_point(class_scope:apipb.CommunitiesAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const CommunitiesAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::uint32_t> communities_;
    ::google::protobuf::internal::CachedSize _communities_cached_byte_size_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ColorExtended final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.ColorExtended) */ {
 public:
  inline ColorExtended() : ColorExtended(nullptr) {}
  ~ColorExtended() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ColorExtended* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ColorExtended));
  }
#endif

  template <typename = void>
  explicit constexpr ColorExtended(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline ColorExtended(const ColorExtended& from) : ColorExtended(nullptr, from) {}
  inline ColorExtended(ColorExtended&& from) noexcept : ColorExtended(nullptr, ::std::move(from)) {}
  inline ColorExtended& operator=(const ColorExtended& from) {
    CopyFrom(from);
    return *this;
  }
  inline ColorExtended& operator=(ColorExtended&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const ColorExtended& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ColorExtended>(&ColorExtended_globals_);
  }
  static constexpr int kIndexInFileMessages = 53;
  friend void swap(ColorExtended& a, ColorExtended& b) { a.Swap(&b); }
  inline void Swap(ColorExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ColorExtended* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] ColorExtended* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ColorExtended>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ColorExtended& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ColorExtended& from) { ColorExtended::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ColorExtended* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.ColorExtended"; }

  explicit ColorExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ColorExtended(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ColorExtended& from);
  ColorExtended(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ColorExtended&& from) noexcept
      : ColorExtended(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kColorFieldNumber = 1,
  };
  // uint32 color = 1;
  void clear_color() ;
  [[nodiscard]] ::uint32_t color() const;
  void set_color(::uint32_t value);

  private:
  ::uint32_t _internal_color() const;
  void _internal_set_color(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.ColorExtended)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ColorExtended& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint32_t color_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ClusterListAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.ClusterListAttribute) */ {
 public:
  inline ClusterListAttribute() : ClusterListAttribute(nullptr) {}
  ~ClusterListAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ClusterListAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ClusterListAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr ClusterListAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline ClusterListAttribute(const ClusterListAttribute& from) : ClusterListAttribute(nullptr, from) {}
  inline ClusterListAttribute(ClusterListAttribute&& from) noexcept : ClusterListAttribute(nullptr, ::std::move(from)) {}
  inline ClusterListAttribute& operator=(const ClusterListAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline ClusterListAttribute& operator=(ClusterListAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const ClusterListAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ClusterListAttribute>(&ClusterListAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 10;
  friend void swap(ClusterListAttribute& a, ClusterListAttribute& b) { a.Swap(&b); }
  inline void Swap(ClusterListAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ClusterListAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] ClusterListAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ClusterListAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ClusterListAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ClusterListAttribute& from) { ClusterListAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ClusterListAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.ClusterListAttribute"; }

  explicit ClusterListAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ClusterListAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ClusterListAttribute& from);
  ClusterListAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ClusterListAttribute&& from) noexcept
      : ClusterListAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIdsFieldNumber = 1,
  };
  // repeated string ids = 1;
  [[nodiscard]] int ids_size()
      const;
  private:
  int _internal_ids_size() const;

  public:
  void clear_ids() ;
  [[nodiscard]] const ::std::string& ids(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_ids(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_ids(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_ids();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_ids(Arg_&& value, Args_... args);
  [[nodiscard]] const
      ::google::protobuf::RepeatedPtrField<::std::string>&
      ids() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::std::string>*
      PROTOBUF_NONNULL
      mutable_ids();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_ids() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_ids();

  public:
  // @@protoc_insertion_point(class_scope:apipb.ClusterListAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 38,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ClusterListAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> ids_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED AtomicAggregateAttribute final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:apipb.AtomicAggregateAttribute) */ {
 public:
  inline AtomicAggregateAttribute() : AtomicAggregateAttribute(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AtomicAggregateAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AtomicAggregateAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr AtomicAggregateAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline AtomicAggregateAttribute(const AtomicAggregateAttribute& from) : AtomicAggregateAttribute(nullptr, from) {}
  inline AtomicAggregateAttribute(AtomicAggregateAttribute&& from) noexcept : AtomicAggregateAttribute(nullptr, ::std::move(from)) {}
  inline AtomicAggregateAttribute& operator=(const AtomicAggregateAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline AtomicAggregateAttribute& operator=(AtomicAggregateAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const AtomicAggregateAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<AtomicAggregateAttribute>(&AtomicAggregateAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(AtomicAggregateAttribute& a, AtomicAggregateAttribute& b) { a.Swap(&b); }
  inline void Swap(AtomicAggregateAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AtomicAggregateAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] AtomicAggregateAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<AtomicAggregateAttribute>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const AtomicAggregateAttribute& from) { ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from); }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const AtomicAggregateAttribute& from) { ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from); }

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.AtomicAggregateAttribute"; }

  explicit AtomicAggregateAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AtomicAggregateAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AtomicAggregateAttribute& from);
  AtomicAggregateAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AtomicAggregateAttribute&& from) noexcept
      : AtomicAggregateAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:apipb.AtomicAggregateAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 0,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED AsSegment final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.AsSegment) */ {
 public:
  inline AsSegment() : AsSegment(nullptr) {}
  ~AsSegment() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AsSegment* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AsSegment));
  }
#endif

  template <typename = void>
  explicit constexpr AsSegment(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline AsSegment(const AsSegment& from) : AsSegment(nullptr, from) {}
  inline AsSegment(AsSegment&& from) noexcept : AsSegment(nullptr, ::std::move(from)) {}
  inline AsSegment& operator=(const AsSegment& from) {
    CopyFrom(from);
    return *this;
  }
  inline AsSegment& operator=(AsSegment&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const AsSegment& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<AsSegment>(&AsSegment_globals_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(AsSegment& a, AsSegment& b) { a.Swap(&b); }
  inline void Swap(AsSegment* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AsSegment* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] AsSegment* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AsSegment>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AsSegment& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AsSegment& from) { AsSegment::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AsSegment* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.AsSegment"; }

  explicit AsSegment(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AsSegment(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AsSegment& from);
  AsSegment(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AsSegment&& from) noexcept
      : AsSegment(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------
  using Type = AsSegment_Type;
  static constexpr Type UNKNOWN = AsSegment_Type_UNKNOWN;
  static constexpr Type AS_SET = AsSegment_Type_AS_SET;
  static constexpr Type AS_SEQUENCE = AsSegment_Type_AS_SEQUENCE;
  static constexpr Type AS_CONFED_SEQUENCE = AsSegment_Type_AS_CONFED_SEQUENCE;
  static constexpr Type AS_CONFED_SET = AsSegment_Type_AS_CONFED_SET;
  [[nodiscard]] static inline bool Type_IsValid(int value) {
    return AsSegment_Type_IsValid(value);
  }
  static constexpr Type Type_MIN = AsSegment_Type_Type_MIN;
  static constexpr Type Type_MAX = AsSegment_Type_Type_MAX;
  static constexpr int Type_ARRAYSIZE = AsSegment_Type_Type_ARRAYSIZE;
  static inline const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL Type_descriptor() {
    return AsSegment_Type_descriptor();
  }
  template <typename T>
  [[nodiscard]] static inline const ::std::string& Type_Name(T value) {
    return AsSegment_Type_Name(value);
  }
  [[nodiscard]] static inline bool Type_Parse(
      ::absl::string_view name, Type* PROTOBUF_NONNULL value) {
    return AsSegment_Type_Parse(name, value);
  }

  // accessors -------------------------------------------------------
  enum : int {
    kNumbersFieldNumber = 2,
    kTypeFieldNumber = 1,
  };
  // repeated uint32 numbers = 2;
  [[nodiscard]] int numbers_size()
      const;
  private:
  int _internal_numbers_size() const;

  public:
  void clear_numbers() ;
  [[nodiscard]] ::uint32_t numbers(int index) const;
  void set_numbers(int index, ::uint32_t value);
  void add_numbers(::uint32_t value);
  [[nodiscard]] const ::google::protobuf::RepeatedField<::uint32_t>& numbers()
      const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_numbers();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_numbers() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_numbers();

  public:
  // .apipb.AsSegment.Type type = 1;
  void clear_type() ;
  [[nodiscard]] ::apipb::AsSegment_Type type() const;
  void set_type(::apipb::AsSegment_Type value);

  private:
  ::apipb::AsSegment_Type _internal_type() const;
  void _internal_set_type(::apipb::AsSegment_Type value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.AsSegment)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AsSegment& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::uint32_t> numbers_;
    ::google::protobuf::internal::CachedSize _numbers_cached_byte_size_;
    int type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED As4AggregatorAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.As4AggregatorAttribute) */ {
 public:
  inline As4AggregatorAttribute() : As4AggregatorAttribute(nullptr) {}
  ~As4AggregatorAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(As4AggregatorAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(As4AggregatorAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr As4AggregatorAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline As4AggregatorAttribute(const As4AggregatorAttribute& from) : As4AggregatorAttribute(nullptr, from) {}
  inline As4AggregatorAttribute(As4AggregatorAttribute&& from) noexcept : As4AggregatorAttribute(nullptr, ::std::move(from)) {}
  inline As4AggregatorAttribute& operator=(const As4AggregatorAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline As4AggregatorAttribute& operator=(As4AggregatorAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const As4AggregatorAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<As4AggregatorAttribute>(&As4AggregatorAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 71;
  friend void swap(As4AggregatorAttribute& a, As4AggregatorAttribute& b) { a.Swap(&b); }
  inline void Swap(As4AggregatorAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(As4AggregatorAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] As4AggregatorAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<As4AggregatorAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const As4AggregatorAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const As4AggregatorAttribute& from) { As4AggregatorAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(As4AggregatorAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.As4AggregatorAttribute"; }

  explicit As4AggregatorAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  As4AggregatorAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const As4AggregatorAttribute& from);
  As4AggregatorAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, As4AggregatorAttribute&& from) noexcept
      : As4AggregatorAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 3,
    kAsnFieldNumber = 2,
  };
  // string address = 3;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // uint32 asn = 2;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.As4AggregatorAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 44,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const As4AggregatorAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    ::uint32_t asn_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED AigpTLVUnknown final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.AigpTLVUnknown) */ {
 public:
  inline AigpTLVUnknown() : AigpTLVUnknown(nullptr) {}
  ~AigpTLVUnknown() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AigpTLVUnknown* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AigpTLVUnknown));
  }
#endif

  template <typename = void>
  explicit constexpr AigpTLVUnknown(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline AigpTLVUnknown(const AigpTLVUnknown& from) : AigpTLVUnknown(nullptr, from) {}
  inline AigpTLVUnknown(AigpTLVUnknown&& from) noexcept : AigpTLVUnknown(nullptr, ::std::move(from)) {}
  inline AigpTLVUnknown& operator=(const AigpTLVUnknown& from) {
    CopyFrom(from);
    return *this;
  }
  inline AigpTLVUnknown& operator=(AigpTLVUnknown&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const AigpTLVUnknown& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<AigpTLVUnknown>(&AigpTLVUnknown_globals_);
  }
  static constexpr int kIndexInFileMessages = 98;
  friend void swap(AigpTLVUnknown& a, AigpTLVUnknown& b) { a.Swap(&b); }
  inline void Swap(AigpTLVUnknown* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AigpTLVUnknown* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] AigpTLVUnknown* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AigpTLVUnknown>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AigpTLVUnknown& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AigpTLVUnknown& from) { AigpTLVUnknown::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AigpTLVUnknown* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.AigpTLVUnknown"; }

  explicit AigpTLVUnknown(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AigpTLVUnknown(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AigpTLVUnknown& from);
  AigpTLVUnknown(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AigpTLVUnknown&& from) noexcept
      : AigpTLVUnknown(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kValueFieldNumber = 2,
    kTypeFieldNumber = 1,
  };
  // bytes value = 2;
  void clear_value() ;
  [[nodiscard]] const ::std::string& value() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_value(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_value();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_value();
  void set_allocated_value(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_value() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_value(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_value();

  public:
  // uint32 type = 1;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.AigpTLVUnknown)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AigpTLVUnknown& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr value_;
    ::uint32_t type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED AigpTLVIGPMetric final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.AigpTLVIGPMetric) */ {
 public:
  inline AigpTLVIGPMetric() : AigpTLVIGPMetric(nullptr) {}
  ~AigpTLVIGPMetric() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AigpTLVIGPMetric* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AigpTLVIGPMetric));
  }
#endif

  template <typename = void>
  explicit constexpr AigpTLVIGPMetric(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline AigpTLVIGPMetric(const AigpTLVIGPMetric& from) : AigpTLVIGPMetric(nullptr, from) {}
  inline AigpTLVIGPMetric(AigpTLVIGPMetric&& from) noexcept : AigpTLVIGPMetric(nullptr, ::std::move(from)) {}
  inline AigpTLVIGPMetric& operator=(const AigpTLVIGPMetric& from) {
    CopyFrom(from);
    return *this;
  }
  inline AigpTLVIGPMetric& operator=(AigpTLVIGPMetric&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const AigpTLVIGPMetric& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<AigpTLVIGPMetric>(&AigpTLVIGPMetric_globals_);
  }
  static constexpr int kIndexInFileMessages = 97;
  friend void swap(AigpTLVIGPMetric& a, AigpTLVIGPMetric& b) { a.Swap(&b); }
  inline void Swap(AigpTLVIGPMetric* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AigpTLVIGPMetric* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] AigpTLVIGPMetric* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AigpTLVIGPMetric>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AigpTLVIGPMetric& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AigpTLVIGPMetric& from) { AigpTLVIGPMetric::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AigpTLVIGPMetric* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.AigpTLVIGPMetric"; }

  explicit AigpTLVIGPMetric(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AigpTLVIGPMetric(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AigpTLVIGPMetric& from);
  AigpTLVIGPMetric(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AigpTLVIGPMetric&& from) noexcept
      : AigpTLVIGPMetric(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kMetricFieldNumber = 1,
  };
  // uint64 metric = 1;
  void clear_metric() ;
  [[nodiscard]] ::uint64_t metric() const;
  void set_metric(::uint64_t value);

  private:
  ::uint64_t _internal_metric() const;
  void _internal_set_metric(::uint64_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.AigpTLVIGPMetric)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          0, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AigpTLVIGPMetric& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::uint64_t metric_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED AggregatorAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.AggregatorAttribute) */ {
 public:
  inline AggregatorAttribute() : AggregatorAttribute(nullptr) {}
  ~AggregatorAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AggregatorAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AggregatorAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr AggregatorAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline AggregatorAttribute(const AggregatorAttribute& from) : AggregatorAttribute(nullptr, from) {}
  inline AggregatorAttribute(AggregatorAttribute&& from) noexcept : AggregatorAttribute(nullptr, ::std::move(from)) {}
  inline AggregatorAttribute& operator=(const AggregatorAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline AggregatorAttribute& operator=(AggregatorAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const AggregatorAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<AggregatorAttribute>(&AggregatorAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(AggregatorAttribute& a, AggregatorAttribute& b) { a.Swap(&b); }
  inline void Swap(AggregatorAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AggregatorAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] AggregatorAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AggregatorAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AggregatorAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AggregatorAttribute& from) { AggregatorAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AggregatorAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.AggregatorAttribute"; }

  explicit AggregatorAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AggregatorAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AggregatorAttribute& from);
  AggregatorAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AggregatorAttribute&& from) noexcept
      : AggregatorAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 2,
    kAsnFieldNumber = 1,
  };
  // string address = 2;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // uint32 asn = 1;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.AggregatorAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          0, 41,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AggregatorAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    ::uint32_t asn_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED VPNFlowSpecNLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.VPNFlowSpecNLRI) */ {
 public:
  inline VPNFlowSpecNLRI() : VPNFlowSpecNLRI(nullptr) {}
  ~VPNFlowSpecNLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(VPNFlowSpecNLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(VPNFlowSpecNLRI));
  }
#endif

  template <typename = void>
  explicit constexpr VPNFlowSpecNLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline VPNFlowSpecNLRI(const VPNFlowSpecNLRI& from) : VPNFlowSpecNLRI(nullptr, from) {}
  inline VPNFlowSpecNLRI(VPNFlowSpecNLRI&& from) noexcept : VPNFlowSpecNLRI(nullptr, ::std::move(from)) {}
  inline VPNFlowSpecNLRI& operator=(const VPNFlowSpecNLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline VPNFlowSpecNLRI& operator=(VPNFlowSpecNLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const VPNFlowSpecNLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<VPNFlowSpecNLRI>(&VPNFlowSpecNLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 32;
  friend void swap(VPNFlowSpecNLRI& a, VPNFlowSpecNLRI& b) { a.Swap(&b); }
  inline void Swap(VPNFlowSpecNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(VPNFlowSpecNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] VPNFlowSpecNLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<VPNFlowSpecNLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const VPNFlowSpecNLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const VPNFlowSpecNLRI& from) { VPNFlowSpecNLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(VPNFlowSpecNLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.VPNFlowSpecNLRI"; }

  explicit VPNFlowSpecNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  VPNFlowSpecNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const VPNFlowSpecNLRI& from);
  VPNFlowSpecNLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, VPNFlowSpecNLRI&& from) noexcept
      : VPNFlowSpecNLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRulesFieldNumber = 2,
    kRdFieldNumber = 1,
  };
  // repeated .google.protobuf.Any rules = 2;
  [[nodiscard]] int rules_size()
      const;
  private:
  int _internal_rules_size() const;

  public:
  void clear_rules() ;
  [[nodiscard]] const ::google::protobuf::Any& rules(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rules(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_rules();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  rules() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_rules();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_rules() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_rules();

  public:
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // @@protoc_insertion_point(class_scope:apipb.VPNFlowSpecNLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const VPNFlowSpecNLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > rules_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapTLV final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapTLV) */ {
 public:
  inline TunnelEncapTLV() : TunnelEncapTLV(nullptr) {}
  ~TunnelEncapTLV() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapTLV* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapTLV));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapTLV(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapTLV(const TunnelEncapTLV& from) : TunnelEncapTLV(nullptr, from) {}
  inline TunnelEncapTLV(TunnelEncapTLV&& from) noexcept : TunnelEncapTLV(nullptr, ::std::move(from)) {}
  inline TunnelEncapTLV& operator=(const TunnelEncapTLV& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapTLV& operator=(TunnelEncapTLV&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapTLV& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapTLV>(&TunnelEncapTLV_globals_);
  }
  static constexpr int kIndexInFileMessages = 92;
  friend void swap(TunnelEncapTLV& a, TunnelEncapTLV& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapTLV* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapTLV>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapTLV& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapTLV& from) { TunnelEncapTLV::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapTLV* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapTLV"; }

  explicit TunnelEncapTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapTLV& from);
  TunnelEncapTLV(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapTLV&& from) noexcept
      : TunnelEncapTLV(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTlvsFieldNumber = 2,
    kTypeFieldNumber = 1,
  };
  // repeated .google.protobuf.Any tlvs = 2;
  [[nodiscard]] int tlvs_size()
      const;
  private:
  int _internal_tlvs_size() const;

  public:
  void clear_tlvs() ;
  [[nodiscard]] const ::google::protobuf::Any& tlvs(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_tlvs(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_tlvs();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  tlvs() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_tlvs();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_tlvs() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_tlvs();

  public:
  // uint32 type = 1;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapTLV)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapTLV& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > tlvs_;
    ::uint32_t type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVSRSegmentList final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVSRSegmentList) */ {
 public:
  inline TunnelEncapSubTLVSRSegmentList() : TunnelEncapSubTLVSRSegmentList(nullptr) {}
  ~TunnelEncapSubTLVSRSegmentList() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVSRSegmentList* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVSRSegmentList));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVSRSegmentList(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVSRSegmentList(const TunnelEncapSubTLVSRSegmentList& from) : TunnelEncapSubTLVSRSegmentList(nullptr, from) {}
  inline TunnelEncapSubTLVSRSegmentList(TunnelEncapSubTLVSRSegmentList&& from) noexcept : TunnelEncapSubTLVSRSegmentList(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVSRSegmentList& operator=(const TunnelEncapSubTLVSRSegmentList& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVSRSegmentList& operator=(TunnelEncapSubTLVSRSegmentList&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVSRSegmentList& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVSRSegmentList>(&TunnelEncapSubTLVSRSegmentList_globals_);
  }
  static constexpr int kIndexInFileMessages = 88;
  friend void swap(TunnelEncapSubTLVSRSegmentList& a, TunnelEncapSubTLVSRSegmentList& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVSRSegmentList* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVSRSegmentList* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVSRSegmentList* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVSRSegmentList>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVSRSegmentList& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVSRSegmentList& from) { TunnelEncapSubTLVSRSegmentList::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVSRSegmentList* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVSRSegmentList"; }

  explicit TunnelEncapSubTLVSRSegmentList(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVSRSegmentList(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVSRSegmentList& from);
  TunnelEncapSubTLVSRSegmentList(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVSRSegmentList&& from) noexcept
      : TunnelEncapSubTLVSRSegmentList(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSegmentsFieldNumber = 2,
    kWeightFieldNumber = 1,
  };
  // repeated .google.protobuf.Any segments = 2;
  [[nodiscard]] int segments_size()
      const;
  private:
  int _internal_segments_size() const;

  public:
  void clear_segments() ;
  [[nodiscard]] const ::google::protobuf::Any& segments(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_segments(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_segments();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  segments() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_segments();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_segments() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_segments();

  public:
  // .apipb.SRWeight weight = 1;
  [[nodiscard]] bool has_weight()
      const;
  void clear_weight() ;
  [[nodiscard]] const ::apipb::SRWeight& weight() const;
  [[nodiscard]] ::apipb::SRWeight* PROTOBUF_NULLABLE release_weight();
  ::apipb::SRWeight* PROTOBUF_NONNULL mutable_weight();
  void set_allocated_weight(::apipb::SRWeight* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_weight(::apipb::SRWeight* PROTOBUF_NULLABLE value);
  ::apipb::SRWeight* PROTOBUF_NULLABLE unsafe_arena_release_weight();

  private:
  const ::apipb::SRWeight& _internal_weight() const;
  ::apipb::SRWeight* PROTOBUF_NONNULL _internal_mutable_weight();

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVSRSegmentList)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVSRSegmentList& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > segments_;
    ::apipb::SRWeight* PROTOBUF_NULLABLE weight_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapSubTLVSRBindingSID final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapSubTLVSRBindingSID) */ {
 public:
  inline TunnelEncapSubTLVSRBindingSID() : TunnelEncapSubTLVSRBindingSID(nullptr) {}
  ~TunnelEncapSubTLVSRBindingSID() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapSubTLVSRBindingSID* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapSubTLVSRBindingSID));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapSubTLVSRBindingSID(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapSubTLVSRBindingSID(const TunnelEncapSubTLVSRBindingSID& from) : TunnelEncapSubTLVSRBindingSID(nullptr, from) {}
  inline TunnelEncapSubTLVSRBindingSID(TunnelEncapSubTLVSRBindingSID&& from) noexcept : TunnelEncapSubTLVSRBindingSID(nullptr, ::std::move(from)) {}
  inline TunnelEncapSubTLVSRBindingSID& operator=(const TunnelEncapSubTLVSRBindingSID& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapSubTLVSRBindingSID& operator=(TunnelEncapSubTLVSRBindingSID&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapSubTLVSRBindingSID& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapSubTLVSRBindingSID>(&TunnelEncapSubTLVSRBindingSID_globals_);
  }
  static constexpr int kIndexInFileMessages = 79;
  friend void swap(TunnelEncapSubTLVSRBindingSID& a, TunnelEncapSubTLVSRBindingSID& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapSubTLVSRBindingSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapSubTLVSRBindingSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapSubTLVSRBindingSID* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapSubTLVSRBindingSID>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapSubTLVSRBindingSID& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapSubTLVSRBindingSID& from) { TunnelEncapSubTLVSRBindingSID::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapSubTLVSRBindingSID* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapSubTLVSRBindingSID"; }

  explicit TunnelEncapSubTLVSRBindingSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapSubTLVSRBindingSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapSubTLVSRBindingSID& from);
  TunnelEncapSubTLVSRBindingSID(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapSubTLVSRBindingSID&& from) noexcept
      : TunnelEncapSubTLVSRBindingSID(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBsidFieldNumber = 1,
  };
  // .google.protobuf.Any bsid = 1;
  [[nodiscard]] bool has_bsid()
      const;
  void clear_bsid() ;
  [[nodiscard]] const ::google::protobuf::Any& bsid() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_bsid();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_bsid();
  void set_allocated_bsid(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bsid(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_bsid();

  private:
  const ::google::protobuf::Any& _internal_bsid() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_bsid();

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapSubTLVSRBindingSID)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapSubTLVSRBindingSID& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE bsid_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SegmentTypeB final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SegmentTypeB) */ {
 public:
  inline SegmentTypeB() : SegmentTypeB(nullptr) {}
  ~SegmentTypeB() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SegmentTypeB* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SegmentTypeB));
  }
#endif

  template <typename = void>
  explicit constexpr SegmentTypeB(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SegmentTypeB(const SegmentTypeB& from) : SegmentTypeB(nullptr, from) {}
  inline SegmentTypeB(SegmentTypeB&& from) noexcept : SegmentTypeB(nullptr, ::std::move(from)) {}
  inline SegmentTypeB& operator=(const SegmentTypeB& from) {
    CopyFrom(from);
    return *this;
  }
  inline SegmentTypeB& operator=(SegmentTypeB&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SegmentTypeB& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SegmentTypeB>(&SegmentTypeB_globals_);
  }
  static constexpr int kIndexInFileMessages = 87;
  friend void swap(SegmentTypeB& a, SegmentTypeB& b) { a.Swap(&b); }
  inline void Swap(SegmentTypeB* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SegmentTypeB* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SegmentTypeB* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SegmentTypeB>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SegmentTypeB& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SegmentTypeB& from) { SegmentTypeB::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SegmentTypeB* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SegmentTypeB"; }

  explicit SegmentTypeB(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SegmentTypeB(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SegmentTypeB& from);
  SegmentTypeB(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SegmentTypeB&& from) noexcept
      : SegmentTypeB(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSidFieldNumber = 2,
    kFlagsFieldNumber = 1,
    kEndpointBehaviorStructureFieldNumber = 3,
  };
  // bytes sid = 2;
  void clear_sid() ;
  [[nodiscard]] const ::std::string& sid() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_sid(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_sid();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_sid();
  void set_allocated_sid(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_sid() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_sid(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_sid();

  public:
  // .apipb.SegmentFlags flags = 1;
  [[nodiscard]] bool has_flags()
      const;
  void clear_flags() ;
  [[nodiscard]] const ::apipb::SegmentFlags& flags() const;
  [[nodiscard]] ::apipb::SegmentFlags* PROTOBUF_NULLABLE release_flags();
  ::apipb::SegmentFlags* PROTOBUF_NONNULL mutable_flags();
  void set_allocated_flags(::apipb::SegmentFlags* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_flags(::apipb::SegmentFlags* PROTOBUF_NULLABLE value);
  ::apipb::SegmentFlags* PROTOBUF_NULLABLE unsafe_arena_release_flags();

  private:
  const ::apipb::SegmentFlags& _internal_flags() const;
  ::apipb::SegmentFlags* PROTOBUF_NONNULL _internal_mutable_flags();

  public:
  // .apipb.SRv6EndPointBehavior endpoint_behavior_structure = 3;
  [[nodiscard]] bool has_endpoint_behavior_structure()
      const;
  void clear_endpoint_behavior_structure() ;
  [[nodiscard]] const ::apipb::SRv6EndPointBehavior& endpoint_behavior_structure() const;
  [[nodiscard]] ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE release_endpoint_behavior_structure();
  ::apipb::SRv6EndPointBehavior* PROTOBUF_NONNULL mutable_endpoint_behavior_structure();
  void set_allocated_endpoint_behavior_structure(::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_endpoint_behavior_structure(::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE value);
  ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE unsafe_arena_release_endpoint_behavior_structure();

  private:
  const ::apipb::SRv6EndPointBehavior& _internal_endpoint_behavior_structure() const;
  ::apipb::SRv6EndPointBehavior* PROTOBUF_NONNULL _internal_mutable_endpoint_behavior_structure();

  public:
  // @@protoc_insertion_point(class_scope:apipb.SegmentTypeB)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SegmentTypeB& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr sid_;
    ::apipb::SegmentFlags* PROTOBUF_NULLABLE flags_;
    ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE endpoint_behavior_structure_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SegmentTypeA final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SegmentTypeA) */ {
 public:
  inline SegmentTypeA() : SegmentTypeA(nullptr) {}
  ~SegmentTypeA() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SegmentTypeA* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SegmentTypeA));
  }
#endif

  template <typename = void>
  explicit constexpr SegmentTypeA(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SegmentTypeA(const SegmentTypeA& from) : SegmentTypeA(nullptr, from) {}
  inline SegmentTypeA(SegmentTypeA&& from) noexcept : SegmentTypeA(nullptr, ::std::move(from)) {}
  inline SegmentTypeA& operator=(const SegmentTypeA& from) {
    CopyFrom(from);
    return *this;
  }
  inline SegmentTypeA& operator=(SegmentTypeA&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SegmentTypeA& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SegmentTypeA>(&SegmentTypeA_globals_);
  }
  static constexpr int kIndexInFileMessages = 86;
  friend void swap(SegmentTypeA& a, SegmentTypeA& b) { a.Swap(&b); }
  inline void Swap(SegmentTypeA* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SegmentTypeA* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SegmentTypeA* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SegmentTypeA>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SegmentTypeA& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SegmentTypeA& from) { SegmentTypeA::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SegmentTypeA* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SegmentTypeA"; }

  explicit SegmentTypeA(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SegmentTypeA(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SegmentTypeA& from);
  SegmentTypeA(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SegmentTypeA&& from) noexcept
      : SegmentTypeA(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFlagsFieldNumber = 1,
    kLabelFieldNumber = 2,
  };
  // .apipb.SegmentFlags flags = 1;
  [[nodiscard]] bool has_flags()
      const;
  void clear_flags() ;
  [[nodiscard]] const ::apipb::SegmentFlags& flags() const;
  [[nodiscard]] ::apipb::SegmentFlags* PROTOBUF_NULLABLE release_flags();
  ::apipb::SegmentFlags* PROTOBUF_NONNULL mutable_flags();
  void set_allocated_flags(::apipb::SegmentFlags* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_flags(::apipb::SegmentFlags* PROTOBUF_NULLABLE value);
  ::apipb::SegmentFlags* PROTOBUF_NULLABLE unsafe_arena_release_flags();

  private:
  const ::apipb::SegmentFlags& _internal_flags() const;
  ::apipb::SegmentFlags* PROTOBUF_NONNULL _internal_mutable_flags();

  public:
  // uint32 label = 2;
  void clear_label() ;
  [[nodiscard]] ::uint32_t label() const;
  void set_label(::uint32_t value);

  private:
  ::uint32_t _internal_label() const;
  void _internal_set_label(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.SegmentTypeA)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SegmentTypeA& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::apipb::SegmentFlags* PROTOBUF_NULLABLE flags_;
    ::uint32_t label_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6TLV final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRv6TLV) */ {
 public:
  inline SRv6TLV() : SRv6TLV(nullptr) {}
  ~SRv6TLV() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRv6TLV* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRv6TLV));
  }
#endif

  template <typename = void>
  explicit constexpr SRv6TLV(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRv6TLV(const SRv6TLV& from) : SRv6TLV(nullptr, from) {}
  inline SRv6TLV(SRv6TLV&& from) noexcept : SRv6TLV(nullptr, ::std::move(from)) {}
  inline SRv6TLV& operator=(const SRv6TLV& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRv6TLV& operator=(SRv6TLV&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRv6TLV& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRv6TLV>(&SRv6TLV_globals_);
  }
  static constexpr int kIndexInFileMessages = 117;
  friend void swap(SRv6TLV& a, SRv6TLV& b) { a.Swap(&b); }
  inline void Swap(SRv6TLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRv6TLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRv6TLV* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRv6TLV>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRv6TLV& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRv6TLV& from) { SRv6TLV::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRv6TLV* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRv6TLV"; }

  explicit SRv6TLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRv6TLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRv6TLV& from);
  SRv6TLV(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRv6TLV&& from) noexcept
      : SRv6TLV(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTlvFieldNumber = 1,
  };
  // repeated .google.protobuf.Any tlv = 1;
  [[nodiscard]] int tlv_size()
      const;
  private:
  int _internal_tlv_size() const;

  public:
  void clear_tlv() ;
  [[nodiscard]] const ::google::protobuf::Any& tlv(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_tlv(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_tlv();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  tlv() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_tlv();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_tlv() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_tlv();

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRv6TLV)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRv6TLV& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > tlv_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6BindingSID final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRv6BindingSID) */ {
 public:
  inline SRv6BindingSID() : SRv6BindingSID(nullptr) {}
  ~SRv6BindingSID() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRv6BindingSID* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRv6BindingSID));
  }
#endif

  template <typename = void>
  explicit constexpr SRv6BindingSID(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRv6BindingSID(const SRv6BindingSID& from) : SRv6BindingSID(nullptr, from) {}
  inline SRv6BindingSID(SRv6BindingSID&& from) noexcept : SRv6BindingSID(nullptr, ::std::move(from)) {}
  inline SRv6BindingSID& operator=(const SRv6BindingSID& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRv6BindingSID& operator=(SRv6BindingSID&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRv6BindingSID& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRv6BindingSID>(&SRv6BindingSID_globals_);
  }
  static constexpr int kIndexInFileMessages = 82;
  friend void swap(SRv6BindingSID& a, SRv6BindingSID& b) { a.Swap(&b); }
  inline void Swap(SRv6BindingSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRv6BindingSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRv6BindingSID* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRv6BindingSID>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRv6BindingSID& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRv6BindingSID& from) { SRv6BindingSID::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRv6BindingSID* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRv6BindingSID"; }

  explicit SRv6BindingSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRv6BindingSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRv6BindingSID& from);
  SRv6BindingSID(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRv6BindingSID&& from) noexcept
      : SRv6BindingSID(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSidFieldNumber = 4,
    kEndpointBehaviorStructureFieldNumber = 5,
    kSFlagFieldNumber = 1,
    kIFlagFieldNumber = 2,
    kBFlagFieldNumber = 3,
  };
  // bytes sid = 4;
  void clear_sid() ;
  [[nodiscard]] const ::std::string& sid() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_sid(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_sid();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_sid();
  void set_allocated_sid(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_sid() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_sid(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_sid();

  public:
  // .apipb.SRv6EndPointBehavior endpoint_behavior_structure = 5;
  [[nodiscard]] bool has_endpoint_behavior_structure()
      const;
  void clear_endpoint_behavior_structure() ;
  [[nodiscard]] const ::apipb::SRv6EndPointBehavior& endpoint_behavior_structure() const;
  [[nodiscard]] ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE release_endpoint_behavior_structure();
  ::apipb::SRv6EndPointBehavior* PROTOBUF_NONNULL mutable_endpoint_behavior_structure();
  void set_allocated_endpoint_behavior_structure(::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_endpoint_behavior_structure(::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE value);
  ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE unsafe_arena_release_endpoint_behavior_structure();

  private:
  const ::apipb::SRv6EndPointBehavior& _internal_endpoint_behavior_structure() const;
  ::apipb::SRv6EndPointBehavior* PROTOBUF_NONNULL _internal_mutable_endpoint_behavior_structure();

  public:
  // bool s_flag = 1;
  void clear_s_flag() ;
  [[nodiscard]] bool s_flag() const;
  void set_s_flag(bool value);

  private:
  bool _internal_s_flag() const;
  void _internal_set_s_flag(bool value);

  public:
  // bool i_flag = 2;
  void clear_i_flag() ;
  [[nodiscard]] bool i_flag() const;
  void set_i_flag(bool value);

  private:
  bool _internal_i_flag() const;
  void _internal_set_i_flag(bool value);

  public:
  // bool b_flag = 3;
  void clear_b_flag() ;
  [[nodiscard]] bool b_flag() const;
  void set_b_flag(bool value);

  private:
  bool _internal_b_flag() const;
  void _internal_set_b_flag(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRv6BindingSID)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 5,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRv6BindingSID& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr sid_;
    ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE endpoint_behavior_structure_;
    bool s_flag_;
    bool i_flag_;
    bool b_flag_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED RouteTargetMembershipNLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.RouteTargetMembershipNLRI) */ {
 public:
  inline RouteTargetMembershipNLRI() : RouteTargetMembershipNLRI(nullptr) {}
  ~RouteTargetMembershipNLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(RouteTargetMembershipNLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(RouteTargetMembershipNLRI));
  }
#endif

  template <typename = void>
  explicit constexpr RouteTargetMembershipNLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline RouteTargetMembershipNLRI(const RouteTargetMembershipNLRI& from) : RouteTargetMembershipNLRI(nullptr, from) {}
  inline RouteTargetMembershipNLRI(RouteTargetMembershipNLRI&& from) noexcept : RouteTargetMembershipNLRI(nullptr, ::std::move(from)) {}
  inline RouteTargetMembershipNLRI& operator=(const RouteTargetMembershipNLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline RouteTargetMembershipNLRI& operator=(RouteTargetMembershipNLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const RouteTargetMembershipNLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<RouteTargetMembershipNLRI>(&RouteTargetMembershipNLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 26;
  friend void swap(RouteTargetMembershipNLRI& a, RouteTargetMembershipNLRI& b) { a.Swap(&b); }
  inline void Swap(RouteTargetMembershipNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RouteTargetMembershipNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] RouteTargetMembershipNLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<RouteTargetMembershipNLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const RouteTargetMembershipNLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const RouteTargetMembershipNLRI& from) { RouteTargetMembershipNLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(RouteTargetMembershipNLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.RouteTargetMembershipNLRI"; }

  explicit RouteTargetMembershipNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  RouteTargetMembershipNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RouteTargetMembershipNLRI& from);
  RouteTargetMembershipNLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, RouteTargetMembershipNLRI&& from) noexcept
      : RouteTargetMembershipNLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRtFieldNumber = 2,
    kAsnFieldNumber = 1,
  };
  // .google.protobuf.Any rt = 2;
  [[nodiscard]] bool has_rt()
      const;
  void clear_rt() ;
  [[nodiscard]] const ::google::protobuf::Any& rt() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rt();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rt();
  void set_allocated_rt(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rt(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rt();

  private:
  const ::google::protobuf::Any& _internal_rt() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rt();

  public:
  // uint32 asn = 1;
  void clear_asn() ;
  [[nodiscard]] ::uint32_t asn() const;
  void set_asn(::uint32_t value);

  private:
  ::uint32_t _internal_asn() const;
  void _internal_set_asn(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.RouteTargetMembershipNLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const RouteTargetMembershipNLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rt_;
    ::uint32_t asn_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED PrefixSID final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.PrefixSID) */ {
 public:
  inline PrefixSID() : PrefixSID(nullptr) {}
  ~PrefixSID() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(PrefixSID* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(PrefixSID));
  }
#endif

  template <typename = void>
  explicit constexpr PrefixSID(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline PrefixSID(const PrefixSID& from) : PrefixSID(nullptr, from) {}
  inline PrefixSID(PrefixSID&& from) noexcept : PrefixSID(nullptr, ::std::move(from)) {}
  inline PrefixSID& operator=(const PrefixSID& from) {
    CopyFrom(from);
    return *this;
  }
  inline PrefixSID& operator=(PrefixSID&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const PrefixSID& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<PrefixSID>(&PrefixSID_globals_);
  }
  static constexpr int kIndexInFileMessages = 124;
  friend void swap(PrefixSID& a, PrefixSID& b) { a.Swap(&b); }
  inline void Swap(PrefixSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PrefixSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] PrefixSID* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<PrefixSID>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const PrefixSID& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const PrefixSID& from) { PrefixSID::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(PrefixSID* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.PrefixSID"; }

  explicit PrefixSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  PrefixSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const PrefixSID& from);
  PrefixSID(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, PrefixSID&& from) noexcept
      : PrefixSID(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTlvsFieldNumber = 1,
  };
  // repeated .google.protobuf.Any tlvs = 1;
  [[nodiscard]] int tlvs_size()
      const;
  private:
  int _internal_tlvs_size() const;

  public:
  void clear_tlvs() ;
  [[nodiscard]] const ::google::protobuf::Any& tlvs(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_tlvs(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_tlvs();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  tlvs() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_tlvs();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_tlvs() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_tlvs();

  public:
  // @@protoc_insertion_point(class_scope:apipb.PrefixSID)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const PrefixSID& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > tlvs_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED MpUnreachNLRIAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.MpUnreachNLRIAttribute) */ {
 public:
  inline MpUnreachNLRIAttribute() : MpUnreachNLRIAttribute(nullptr) {}
  ~MpUnreachNLRIAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MpUnreachNLRIAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MpUnreachNLRIAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr MpUnreachNLRIAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline MpUnreachNLRIAttribute(const MpUnreachNLRIAttribute& from) : MpUnreachNLRIAttribute(nullptr, from) {}
  inline MpUnreachNLRIAttribute(MpUnreachNLRIAttribute&& from) noexcept : MpUnreachNLRIAttribute(nullptr, ::std::move(from)) {}
  inline MpUnreachNLRIAttribute& operator=(const MpUnreachNLRIAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline MpUnreachNLRIAttribute& operator=(MpUnreachNLRIAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const MpUnreachNLRIAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MpUnreachNLRIAttribute>(&MpUnreachNLRIAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 47;
  friend void swap(MpUnreachNLRIAttribute& a, MpUnreachNLRIAttribute& b) { a.Swap(&b); }
  inline void Swap(MpUnreachNLRIAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MpUnreachNLRIAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] MpUnreachNLRIAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MpUnreachNLRIAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MpUnreachNLRIAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MpUnreachNLRIAttribute& from) { MpUnreachNLRIAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MpUnreachNLRIAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.MpUnreachNLRIAttribute"; }

  explicit MpUnreachNLRIAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MpUnreachNLRIAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MpUnreachNLRIAttribute& from);
  MpUnreachNLRIAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MpUnreachNLRIAttribute&& from) noexcept
      : MpUnreachNLRIAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNlrisFieldNumber = 3,
    kFamilyFieldNumber = 1,
  };
  // repeated .google.protobuf.Any nlris = 3;
  [[nodiscard]] int nlris_size()
      const;
  private:
  int _internal_nlris_size() const;

  public:
  void clear_nlris() ;
  [[nodiscard]] const ::google::protobuf::Any& nlris(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_nlris(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_nlris();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  nlris() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_nlris();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_nlris() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_nlris();

  public:
  // .apipb.Family family = 1;
  [[nodiscard]] bool has_family()
      const;
  void clear_family() ;
  [[nodiscard]] const ::apipb::Family& family() const;
  [[nodiscard]] ::apipb::Family* PROTOBUF_NULLABLE release_family();
  ::apipb::Family* PROTOBUF_NONNULL mutable_family();
  void set_allocated_family(::apipb::Family* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_family(::apipb::Family* PROTOBUF_NULLABLE value);
  ::apipb::Family* PROTOBUF_NULLABLE unsafe_arena_release_family();

  private:
  const ::apipb::Family& _internal_family() const;
  ::apipb::Family* PROTOBUF_NONNULL _internal_mutable_family();

  public:
  // @@protoc_insertion_point(class_scope:apipb.MpUnreachNLRIAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 2,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MpUnreachNLRIAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > nlris_;
    ::apipb::Family* PROTOBUF_NULLABLE family_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED MpReachNLRIAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.MpReachNLRIAttribute) */ {
 public:
  inline MpReachNLRIAttribute() : MpReachNLRIAttribute(nullptr) {}
  ~MpReachNLRIAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MpReachNLRIAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MpReachNLRIAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr MpReachNLRIAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline MpReachNLRIAttribute(const MpReachNLRIAttribute& from) : MpReachNLRIAttribute(nullptr, from) {}
  inline MpReachNLRIAttribute(MpReachNLRIAttribute&& from) noexcept : MpReachNLRIAttribute(nullptr, ::std::move(from)) {}
  inline MpReachNLRIAttribute& operator=(const MpReachNLRIAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline MpReachNLRIAttribute& operator=(MpReachNLRIAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const MpReachNLRIAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MpReachNLRIAttribute>(&MpReachNLRIAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 46;
  friend void swap(MpReachNLRIAttribute& a, MpReachNLRIAttribute& b) { a.Swap(&b); }
  inline void Swap(MpReachNLRIAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MpReachNLRIAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] MpReachNLRIAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MpReachNLRIAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MpReachNLRIAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MpReachNLRIAttribute& from) { MpReachNLRIAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MpReachNLRIAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.MpReachNLRIAttribute"; }

  explicit MpReachNLRIAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MpReachNLRIAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MpReachNLRIAttribute& from);
  MpReachNLRIAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MpReachNLRIAttribute&& from) noexcept
      : MpReachNLRIAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNextHopsFieldNumber = 2,
    kNlrisFieldNumber = 3,
    kFamilyFieldNumber = 1,
  };
  // repeated string next_hops = 2;
  [[nodiscard]] int next_hops_size()
      const;
  private:
  int _internal_next_hops_size() const;

  public:
  void clear_next_hops() ;
  [[nodiscard]] const ::std::string& next_hops(int index) const;
  ::std::string* PROTOBUF_NONNULL mutable_next_hops(int index);
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_next_hops(int index, Arg_&& value, Args_... args);
  ::std::string* PROTOBUF_NONNULL add_next_hops();
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void add_next_hops(Arg_&& value, Args_... args);
  [[nodiscard]] const
      ::google::protobuf::RepeatedPtrField<::std::string>&
      next_hops() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::std::string>*
      PROTOBUF_NONNULL
      mutable_next_hops();

  private:
  const ::google::protobuf::RepeatedPtrField<::std::string>& _internal_next_hops() const;
  ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL _internal_mutable_next_hops();

  public:
  // repeated .google.protobuf.Any nlris = 3;
  [[nodiscard]] int nlris_size()
      const;
  private:
  int _internal_nlris_size() const;

  public:
  void clear_nlris() ;
  [[nodiscard]] const ::google::protobuf::Any& nlris(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_nlris(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_nlris();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  nlris() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_nlris();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_nlris() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_nlris();

  public:
  // .apipb.Family family = 1;
  [[nodiscard]] bool has_family()
      const;
  void clear_family() ;
  [[nodiscard]] const ::apipb::Family& family() const;
  [[nodiscard]] ::apipb::Family* PROTOBUF_NULLABLE release_family();
  ::apipb::Family* PROTOBUF_NONNULL mutable_family();
  void set_allocated_family(::apipb::Family* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_family(::apipb::Family* PROTOBUF_NULLABLE value);
  ::apipb::Family* PROTOBUF_NULLABLE unsafe_arena_release_family();

  private:
  const ::apipb::Family& _internal_family() const;
  ::apipb::Family* PROTOBUF_NONNULL _internal_mutable_family();

  public:
  // @@protoc_insertion_point(class_scope:apipb.MpReachNLRIAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          2, 44,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MpReachNLRIAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField<::std::string> next_hops_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > nlris_;
    ::apipb::Family* PROTOBUF_NULLABLE family_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED MUPType2SessionTransformedRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.MUPType2SessionTransformedRoute) */ {
 public:
  inline MUPType2SessionTransformedRoute() : MUPType2SessionTransformedRoute(nullptr) {}
  ~MUPType2SessionTransformedRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MUPType2SessionTransformedRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MUPType2SessionTransformedRoute));
  }
#endif

  template <typename = void>
  explicit constexpr MUPType2SessionTransformedRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline MUPType2SessionTransformedRoute(const MUPType2SessionTransformedRoute& from) : MUPType2SessionTransformedRoute(nullptr, from) {}
  inline MUPType2SessionTransformedRoute(MUPType2SessionTransformedRoute&& from) noexcept : MUPType2SessionTransformedRoute(nullptr, ::std::move(from)) {}
  inline MUPType2SessionTransformedRoute& operator=(const MUPType2SessionTransformedRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline MUPType2SessionTransformedRoute& operator=(MUPType2SessionTransformedRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const MUPType2SessionTransformedRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MUPType2SessionTransformedRoute>(&MUPType2SessionTransformedRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 45;
  friend void swap(MUPType2SessionTransformedRoute& a, MUPType2SessionTransformedRoute& b) { a.Swap(&b); }
  inline void Swap(MUPType2SessionTransformedRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MUPType2SessionTransformedRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] MUPType2SessionTransformedRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MUPType2SessionTransformedRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MUPType2SessionTransformedRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MUPType2SessionTransformedRoute& from) { MUPType2SessionTransformedRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MUPType2SessionTransformedRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.MUPType2SessionTransformedRoute"; }

  explicit MUPType2SessionTransformedRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MUPType2SessionTransformedRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MUPType2SessionTransformedRoute& from);
  MUPType2SessionTransformedRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MUPType2SessionTransformedRoute&& from) noexcept
      : MUPType2SessionTransformedRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kEndpointAddressFieldNumber = 3,
    kRdFieldNumber = 1,
    kEndpointAddressLengthFieldNumber = 2,
    kTeidFieldNumber = 4,
  };
  // string endpoint_address = 3;
  void clear_endpoint_address() ;
  [[nodiscard]] const ::std::string& endpoint_address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_endpoint_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_endpoint_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_endpoint_address();
  void set_allocated_endpoint_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_endpoint_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_endpoint_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_endpoint_address();

  public:
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // uint32 endpoint_address_length = 2;
  void clear_endpoint_address_length() ;
  [[nodiscard]] ::uint32_t endpoint_address_length() const;
  void set_endpoint_address_length(::uint32_t value);

  private:
  ::uint32_t _internal_endpoint_address_length() const;
  void _internal_set_endpoint_address_length(::uint32_t value);

  public:
  // uint32 teid = 4;
  void clear_teid() ;
  [[nodiscard]] ::uint32_t teid() const;
  void set_teid(::uint32_t value);

  private:
  ::uint32_t _internal_teid() const;
  void _internal_set_teid(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.MUPType2SessionTransformedRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          1, 62,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MUPType2SessionTransformedRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr endpoint_address_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    ::uint32_t endpoint_address_length_;
    ::uint32_t teid_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED MUPType1SessionTransformedRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.MUPType1SessionTransformedRoute) */ {
 public:
  inline MUPType1SessionTransformedRoute() : MUPType1SessionTransformedRoute(nullptr) {}
  ~MUPType1SessionTransformedRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MUPType1SessionTransformedRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MUPType1SessionTransformedRoute));
  }
#endif

  template <typename = void>
  explicit constexpr MUPType1SessionTransformedRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline MUPType1SessionTransformedRoute(const MUPType1SessionTransformedRoute& from) : MUPType1SessionTransformedRoute(nullptr, from) {}
  inline MUPType1SessionTransformedRoute(MUPType1SessionTransformedRoute&& from) noexcept : MUPType1SessionTransformedRoute(nullptr, ::std::move(from)) {}
  inline MUPType1SessionTransformedRoute& operator=(const MUPType1SessionTransformedRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline MUPType1SessionTransformedRoute& operator=(MUPType1SessionTransformedRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const MUPType1SessionTransformedRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MUPType1SessionTransformedRoute>(&MUPType1SessionTransformedRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 44;
  friend void swap(MUPType1SessionTransformedRoute& a, MUPType1SessionTransformedRoute& b) { a.Swap(&b); }
  inline void Swap(MUPType1SessionTransformedRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MUPType1SessionTransformedRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] MUPType1SessionTransformedRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MUPType1SessionTransformedRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MUPType1SessionTransformedRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MUPType1SessionTransformedRoute& from) { MUPType1SessionTransformedRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MUPType1SessionTransformedRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.MUPType1SessionTransformedRoute"; }

  explicit MUPType1SessionTransformedRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MUPType1SessionTransformedRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MUPType1SessionTransformedRoute& from);
  MUPType1SessionTransformedRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MUPType1SessionTransformedRoute&& from) noexcept
      : MUPType1SessionTransformedRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPrefixFieldNumber = 3,
    kEndpointAddressFieldNumber = 7,
    kRdFieldNumber = 1,
    kPrefixLengthFieldNumber = 2,
    kTeidFieldNumber = 4,
    kQfiFieldNumber = 5,
    kEndpointAddressLengthFieldNumber = 6,
  };
  // string prefix = 3;
  void clear_prefix() ;
  [[nodiscard]] const ::std::string& prefix() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_prefix(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_prefix();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_prefix();
  void set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_prefix() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_prefix(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_prefix();

  public:
  // string endpoint_address = 7;
  void clear_endpoint_address() ;
  [[nodiscard]] const ::std::string& endpoint_address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_endpoint_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_endpoint_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_endpoint_address();
  void set_allocated_endpoint_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_endpoint_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_endpoint_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_endpoint_address();

  public:
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // uint32 prefix_length = 2 [deprecated = true];
  [[deprecated]]  void clear_prefix_length() ;
  [[nodiscard]] [[deprecated]] ::uint32_t prefix_length() const;
  [[deprecated]] void set_prefix_length(::uint32_t value);

  private:
  ::uint32_t _internal_prefix_length() const;
  void _internal_set_prefix_length(::uint32_t value);

  public:
  // uint32 teid = 4;
  void clear_teid() ;
  [[nodiscard]] ::uint32_t teid() const;
  void set_teid(::uint32_t value);

  private:
  ::uint32_t _internal_teid() const;
  void _internal_set_teid(::uint32_t value);

  public:
  // uint32 qfi = 5;
  void clear_qfi() ;
  [[nodiscard]] ::uint32_t qfi() const;
  void set_qfi(::uint32_t value);

  private:
  ::uint32_t _internal_qfi() const;
  void _internal_set_qfi(::uint32_t value);

  public:
  // uint32 endpoint_address_length = 6;
  void clear_endpoint_address_length() ;
  [[nodiscard]] ::uint32_t endpoint_address_length() const;
  void set_endpoint_address_length(::uint32_t value);

  private:
  ::uint32_t _internal_endpoint_address_length() const;
  void _internal_set_endpoint_address_length(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.MUPType1SessionTransformedRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 7,
                          1, 68,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MUPType1SessionTransformedRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr prefix_;
    ::google::protobuf::internal::ArenaStringPtr endpoint_address_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    ::uint32_t prefix_length_;
    ::uint32_t teid_;
    ::uint32_t qfi_;
    ::uint32_t endpoint_address_length_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED MUPInterworkSegmentDiscoveryRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.MUPInterworkSegmentDiscoveryRoute) */ {
 public:
  inline MUPInterworkSegmentDiscoveryRoute() : MUPInterworkSegmentDiscoveryRoute(nullptr) {}
  ~MUPInterworkSegmentDiscoveryRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MUPInterworkSegmentDiscoveryRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MUPInterworkSegmentDiscoveryRoute));
  }
#endif

  template <typename = void>
  explicit constexpr MUPInterworkSegmentDiscoveryRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline MUPInterworkSegmentDiscoveryRoute(const MUPInterworkSegmentDiscoveryRoute& from) : MUPInterworkSegmentDiscoveryRoute(nullptr, from) {}
  inline MUPInterworkSegmentDiscoveryRoute(MUPInterworkSegmentDiscoveryRoute&& from) noexcept : MUPInterworkSegmentDiscoveryRoute(nullptr, ::std::move(from)) {}
  inline MUPInterworkSegmentDiscoveryRoute& operator=(const MUPInterworkSegmentDiscoveryRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline MUPInterworkSegmentDiscoveryRoute& operator=(MUPInterworkSegmentDiscoveryRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const MUPInterworkSegmentDiscoveryRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MUPInterworkSegmentDiscoveryRoute>(&MUPInterworkSegmentDiscoveryRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 42;
  friend void swap(MUPInterworkSegmentDiscoveryRoute& a, MUPInterworkSegmentDiscoveryRoute& b) { a.Swap(&b); }
  inline void Swap(MUPInterworkSegmentDiscoveryRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MUPInterworkSegmentDiscoveryRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] MUPInterworkSegmentDiscoveryRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MUPInterworkSegmentDiscoveryRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MUPInterworkSegmentDiscoveryRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MUPInterworkSegmentDiscoveryRoute& from) { MUPInterworkSegmentDiscoveryRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MUPInterworkSegmentDiscoveryRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.MUPInterworkSegmentDiscoveryRoute"; }

  explicit MUPInterworkSegmentDiscoveryRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MUPInterworkSegmentDiscoveryRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MUPInterworkSegmentDiscoveryRoute& from);
  MUPInterworkSegmentDiscoveryRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MUPInterworkSegmentDiscoveryRoute&& from) noexcept
      : MUPInterworkSegmentDiscoveryRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kPrefixFieldNumber = 2,
    kRdFieldNumber = 1,
  };
  // string prefix = 2;
  void clear_prefix() ;
  [[nodiscard]] const ::std::string& prefix() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_prefix(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_prefix();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_prefix();
  void set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_prefix() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_prefix(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_prefix();

  public:
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // @@protoc_insertion_point(class_scope:apipb.MUPInterworkSegmentDiscoveryRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 54,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MUPInterworkSegmentDiscoveryRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr prefix_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED MUPDirectSegmentDiscoveryRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.MUPDirectSegmentDiscoveryRoute) */ {
 public:
  inline MUPDirectSegmentDiscoveryRoute() : MUPDirectSegmentDiscoveryRoute(nullptr) {}
  ~MUPDirectSegmentDiscoveryRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(MUPDirectSegmentDiscoveryRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(MUPDirectSegmentDiscoveryRoute));
  }
#endif

  template <typename = void>
  explicit constexpr MUPDirectSegmentDiscoveryRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline MUPDirectSegmentDiscoveryRoute(const MUPDirectSegmentDiscoveryRoute& from) : MUPDirectSegmentDiscoveryRoute(nullptr, from) {}
  inline MUPDirectSegmentDiscoveryRoute(MUPDirectSegmentDiscoveryRoute&& from) noexcept : MUPDirectSegmentDiscoveryRoute(nullptr, ::std::move(from)) {}
  inline MUPDirectSegmentDiscoveryRoute& operator=(const MUPDirectSegmentDiscoveryRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline MUPDirectSegmentDiscoveryRoute& operator=(MUPDirectSegmentDiscoveryRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const MUPDirectSegmentDiscoveryRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<MUPDirectSegmentDiscoveryRoute>(&MUPDirectSegmentDiscoveryRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 43;
  friend void swap(MUPDirectSegmentDiscoveryRoute& a, MUPDirectSegmentDiscoveryRoute& b) { a.Swap(&b); }
  inline void Swap(MUPDirectSegmentDiscoveryRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(MUPDirectSegmentDiscoveryRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] MUPDirectSegmentDiscoveryRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<MUPDirectSegmentDiscoveryRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const MUPDirectSegmentDiscoveryRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const MUPDirectSegmentDiscoveryRoute& from) { MUPDirectSegmentDiscoveryRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(MUPDirectSegmentDiscoveryRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.MUPDirectSegmentDiscoveryRoute"; }

  explicit MUPDirectSegmentDiscoveryRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  MUPDirectSegmentDiscoveryRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MUPDirectSegmentDiscoveryRoute& from);
  MUPDirectSegmentDiscoveryRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, MUPDirectSegmentDiscoveryRoute&& from) noexcept
      : MUPDirectSegmentDiscoveryRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAddressFieldNumber = 2,
    kRdFieldNumber = 1,
  };
  // string address = 2;
  void clear_address() ;
  [[nodiscard]] const ::std::string& address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_address();
  void set_allocated_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_address();

  public:
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // @@protoc_insertion_point(class_scope:apipb.MUPDirectSegmentDiscoveryRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 52,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const MUPDirectSegmentDiscoveryRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr address_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsSrLocalBlock final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsSrLocalBlock) */ {
 public:
  inline LsSrLocalBlock() : LsSrLocalBlock(nullptr) {}
  ~LsSrLocalBlock() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsSrLocalBlock* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsSrLocalBlock));
  }
#endif

  template <typename = void>
  explicit constexpr LsSrLocalBlock(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsSrLocalBlock(const LsSrLocalBlock& from) : LsSrLocalBlock(nullptr, from) {}
  inline LsSrLocalBlock(LsSrLocalBlock&& from) noexcept : LsSrLocalBlock(nullptr, ::std::move(from)) {}
  inline LsSrLocalBlock& operator=(const LsSrLocalBlock& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsSrLocalBlock& operator=(LsSrLocalBlock&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsSrLocalBlock& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsSrLocalBlock>(&LsSrLocalBlock_globals_);
  }
  static constexpr int kIndexInFileMessages = 106;
  friend void swap(LsSrLocalBlock& a, LsSrLocalBlock& b) { a.Swap(&b); }
  inline void Swap(LsSrLocalBlock* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsSrLocalBlock* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsSrLocalBlock* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsSrLocalBlock>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsSrLocalBlock& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsSrLocalBlock& from) { LsSrLocalBlock::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsSrLocalBlock* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsSrLocalBlock"; }

  explicit LsSrLocalBlock(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsSrLocalBlock(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsSrLocalBlock& from);
  LsSrLocalBlock(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsSrLocalBlock&& from) noexcept
      : LsSrLocalBlock(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRangesFieldNumber = 1,
  };
  // repeated .apipb.LsSrRange ranges = 1;
  [[nodiscard]] int ranges_size()
      const;
  private:
  int _internal_ranges_size() const;

  public:
  void clear_ranges() ;
  [[nodiscard]] const ::apipb::LsSrRange& ranges(int index) const;
  [[nodiscard]] ::apipb::LsSrRange* PROTOBUF_NONNULL mutable_ranges(int index);
  ::apipb::LsSrRange* PROTOBUF_NONNULL add_ranges();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>&
  ranges() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>* PROTOBUF_NONNULL
  mutable_ranges();

  private:
  const ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>& _internal_ranges() const;
  ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>* PROTOBUF_NONNULL _internal_mutable_ranges();

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsSrLocalBlock)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsSrLocalBlock& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::apipb::LsSrRange > ranges_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsSrCapabilities final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsSrCapabilities) */ {
 public:
  inline LsSrCapabilities() : LsSrCapabilities(nullptr) {}
  ~LsSrCapabilities() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsSrCapabilities* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsSrCapabilities));
  }
#endif

  template <typename = void>
  explicit constexpr LsSrCapabilities(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsSrCapabilities(const LsSrCapabilities& from) : LsSrCapabilities(nullptr, from) {}
  inline LsSrCapabilities(LsSrCapabilities&& from) noexcept : LsSrCapabilities(nullptr, ::std::move(from)) {}
  inline LsSrCapabilities& operator=(const LsSrCapabilities& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsSrCapabilities& operator=(LsSrCapabilities&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsSrCapabilities& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsSrCapabilities>(&LsSrCapabilities_globals_);
  }
  static constexpr int kIndexInFileMessages = 105;
  friend void swap(LsSrCapabilities& a, LsSrCapabilities& b) { a.Swap(&b); }
  inline void Swap(LsSrCapabilities* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsSrCapabilities* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsSrCapabilities* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsSrCapabilities>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsSrCapabilities& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsSrCapabilities& from) { LsSrCapabilities::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsSrCapabilities* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsSrCapabilities"; }

  explicit LsSrCapabilities(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsSrCapabilities(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsSrCapabilities& from);
  LsSrCapabilities(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsSrCapabilities&& from) noexcept
      : LsSrCapabilities(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRangesFieldNumber = 3,
    kIpv4SupportedFieldNumber = 1,
    kIpv6SupportedFieldNumber = 2,
  };
  // repeated .apipb.LsSrRange ranges = 3;
  [[nodiscard]] int ranges_size()
      const;
  private:
  int _internal_ranges_size() const;

  public:
  void clear_ranges() ;
  [[nodiscard]] const ::apipb::LsSrRange& ranges(int index) const;
  [[nodiscard]] ::apipb::LsSrRange* PROTOBUF_NONNULL mutable_ranges(int index);
  ::apipb::LsSrRange* PROTOBUF_NONNULL add_ranges();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>&
  ranges() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>* PROTOBUF_NONNULL
  mutable_ranges();

  private:
  const ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>& _internal_ranges() const;
  ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>* PROTOBUF_NONNULL _internal_mutable_ranges();

  public:
  // bool ipv4_supported = 1;
  void clear_ipv4_supported() ;
  [[nodiscard]] bool ipv4_supported() const;
  void set_ipv4_supported(bool value);

  private:
  bool _internal_ipv4_supported() const;
  void _internal_set_ipv4_supported(bool value);

  public:
  // bool ipv6_supported = 2;
  void clear_ipv6_supported() ;
  [[nodiscard]] bool ipv6_supported() const;
  void set_ipv6_supported(bool value);

  private:
  bool _internal_ipv6_supported() const;
  void _internal_set_ipv6_supported(bool value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsSrCapabilities)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsSrCapabilities& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::apipb::LsSrRange > ranges_;
    bool ipv4_supported_;
    bool ipv6_supported_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsPrefixV6NLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsPrefixV6NLRI) */ {
 public:
  inline LsPrefixV6NLRI() : LsPrefixV6NLRI(nullptr) {}
  ~LsPrefixV6NLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsPrefixV6NLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsPrefixV6NLRI));
  }
#endif

  template <typename = void>
  explicit constexpr LsPrefixV6NLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsPrefixV6NLRI(const LsPrefixV6NLRI& from) : LsPrefixV6NLRI(nullptr, from) {}
  inline LsPrefixV6NLRI(LsPrefixV6NLRI&& from) noexcept : LsPrefixV6NLRI(nullptr, ::std::move(from)) {}
  inline LsPrefixV6NLRI& operator=(const LsPrefixV6NLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsPrefixV6NLRI& operator=(LsPrefixV6NLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsPrefixV6NLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsPrefixV6NLRI>(&LsPrefixV6NLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 40;
  friend void swap(LsPrefixV6NLRI& a, LsPrefixV6NLRI& b) { a.Swap(&b); }
  inline void Swap(LsPrefixV6NLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsPrefixV6NLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsPrefixV6NLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsPrefixV6NLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsPrefixV6NLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsPrefixV6NLRI& from) { LsPrefixV6NLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsPrefixV6NLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsPrefixV6NLRI"; }

  explicit LsPrefixV6NLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsPrefixV6NLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsPrefixV6NLRI& from);
  LsPrefixV6NLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsPrefixV6NLRI&& from) noexcept
      : LsPrefixV6NLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLocalNodeFieldNumber = 1,
    kPrefixDescriptorFieldNumber = 2,
  };
  // .apipb.LsNodeDescriptor local_node = 1;
  [[nodiscard]] bool has_local_node()
      const;
  void clear_local_node() ;
  [[nodiscard]] const ::apipb::LsNodeDescriptor& local_node() const;
  [[nodiscard]] ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE release_local_node();
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL mutable_local_node();
  void set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE unsafe_arena_release_local_node();

  private:
  const ::apipb::LsNodeDescriptor& _internal_local_node() const;
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL _internal_mutable_local_node();

  public:
  // .apipb.LsPrefixDescriptor prefix_descriptor = 2;
  [[nodiscard]] bool has_prefix_descriptor()
      const;
  void clear_prefix_descriptor() ;
  [[nodiscard]] const ::apipb::LsPrefixDescriptor& prefix_descriptor() const;
  [[nodiscard]] ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE release_prefix_descriptor();
  ::apipb::LsPrefixDescriptor* PROTOBUF_NONNULL mutable_prefix_descriptor();
  void set_allocated_prefix_descriptor(::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_prefix_descriptor(::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE value);
  ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE unsafe_arena_release_prefix_descriptor();

  private:
  const ::apipb::LsPrefixDescriptor& _internal_prefix_descriptor() const;
  ::apipb::LsPrefixDescriptor* PROTOBUF_NONNULL _internal_mutable_prefix_descriptor();

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsPrefixV6NLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsPrefixV6NLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE local_node_;
    ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE prefix_descriptor_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsPrefixV4NLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsPrefixV4NLRI) */ {
 public:
  inline LsPrefixV4NLRI() : LsPrefixV4NLRI(nullptr) {}
  ~LsPrefixV4NLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsPrefixV4NLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsPrefixV4NLRI));
  }
#endif

  template <typename = void>
  explicit constexpr LsPrefixV4NLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsPrefixV4NLRI(const LsPrefixV4NLRI& from) : LsPrefixV4NLRI(nullptr, from) {}
  inline LsPrefixV4NLRI(LsPrefixV4NLRI&& from) noexcept : LsPrefixV4NLRI(nullptr, ::std::move(from)) {}
  inline LsPrefixV4NLRI& operator=(const LsPrefixV4NLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsPrefixV4NLRI& operator=(LsPrefixV4NLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsPrefixV4NLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsPrefixV4NLRI>(&LsPrefixV4NLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 39;
  friend void swap(LsPrefixV4NLRI& a, LsPrefixV4NLRI& b) { a.Swap(&b); }
  inline void Swap(LsPrefixV4NLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsPrefixV4NLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsPrefixV4NLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsPrefixV4NLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsPrefixV4NLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsPrefixV4NLRI& from) { LsPrefixV4NLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsPrefixV4NLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsPrefixV4NLRI"; }

  explicit LsPrefixV4NLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsPrefixV4NLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsPrefixV4NLRI& from);
  LsPrefixV4NLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsPrefixV4NLRI&& from) noexcept
      : LsPrefixV4NLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLocalNodeFieldNumber = 1,
    kPrefixDescriptorFieldNumber = 2,
  };
  // .apipb.LsNodeDescriptor local_node = 1;
  [[nodiscard]] bool has_local_node()
      const;
  void clear_local_node() ;
  [[nodiscard]] const ::apipb::LsNodeDescriptor& local_node() const;
  [[nodiscard]] ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE release_local_node();
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL mutable_local_node();
  void set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE unsafe_arena_release_local_node();

  private:
  const ::apipb::LsNodeDescriptor& _internal_local_node() const;
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL _internal_mutable_local_node();

  public:
  // .apipb.LsPrefixDescriptor prefix_descriptor = 2;
  [[nodiscard]] bool has_prefix_descriptor()
      const;
  void clear_prefix_descriptor() ;
  [[nodiscard]] const ::apipb::LsPrefixDescriptor& prefix_descriptor() const;
  [[nodiscard]] ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE release_prefix_descriptor();
  ::apipb::LsPrefixDescriptor* PROTOBUF_NONNULL mutable_prefix_descriptor();
  void set_allocated_prefix_descriptor(::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_prefix_descriptor(::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE value);
  ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE unsafe_arena_release_prefix_descriptor();

  private:
  const ::apipb::LsPrefixDescriptor& _internal_prefix_descriptor() const;
  ::apipb::LsPrefixDescriptor* PROTOBUF_NONNULL _internal_mutable_prefix_descriptor();

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsPrefixV4NLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsPrefixV4NLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE local_node_;
    ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE prefix_descriptor_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsNodeNLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsNodeNLRI) */ {
 public:
  inline LsNodeNLRI() : LsNodeNLRI(nullptr) {}
  ~LsNodeNLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsNodeNLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsNodeNLRI));
  }
#endif

  template <typename = void>
  explicit constexpr LsNodeNLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsNodeNLRI(const LsNodeNLRI& from) : LsNodeNLRI(nullptr, from) {}
  inline LsNodeNLRI(LsNodeNLRI&& from) noexcept : LsNodeNLRI(nullptr, ::std::move(from)) {}
  inline LsNodeNLRI& operator=(const LsNodeNLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsNodeNLRI& operator=(LsNodeNLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsNodeNLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsNodeNLRI>(&LsNodeNLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 37;
  friend void swap(LsNodeNLRI& a, LsNodeNLRI& b) { a.Swap(&b); }
  inline void Swap(LsNodeNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsNodeNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsNodeNLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsNodeNLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsNodeNLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsNodeNLRI& from) { LsNodeNLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsNodeNLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsNodeNLRI"; }

  explicit LsNodeNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsNodeNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsNodeNLRI& from);
  LsNodeNLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsNodeNLRI&& from) noexcept
      : LsNodeNLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLocalNodeFieldNumber = 1,
  };
  // .apipb.LsNodeDescriptor local_node = 1;
  [[nodiscard]] bool has_local_node()
      const;
  void clear_local_node() ;
  [[nodiscard]] const ::apipb::LsNodeDescriptor& local_node() const;
  [[nodiscard]] ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE release_local_node();
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL mutable_local_node();
  void set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE unsafe_arena_release_local_node();

  private:
  const ::apipb::LsNodeDescriptor& _internal_local_node() const;
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL _internal_mutable_local_node();

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsNodeNLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsNodeNLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE local_node_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsLinkNLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsLinkNLRI) */ {
 public:
  inline LsLinkNLRI() : LsLinkNLRI(nullptr) {}
  ~LsLinkNLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsLinkNLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsLinkNLRI));
  }
#endif

  template <typename = void>
  explicit constexpr LsLinkNLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsLinkNLRI(const LsLinkNLRI& from) : LsLinkNLRI(nullptr, from) {}
  inline LsLinkNLRI(LsLinkNLRI&& from) noexcept : LsLinkNLRI(nullptr, ::std::move(from)) {}
  inline LsLinkNLRI& operator=(const LsLinkNLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsLinkNLRI& operator=(LsLinkNLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsLinkNLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsLinkNLRI>(&LsLinkNLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 38;
  friend void swap(LsLinkNLRI& a, LsLinkNLRI& b) { a.Swap(&b); }
  inline void Swap(LsLinkNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsLinkNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsLinkNLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsLinkNLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsLinkNLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsLinkNLRI& from) { LsLinkNLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsLinkNLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsLinkNLRI"; }

  explicit LsLinkNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsLinkNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsLinkNLRI& from);
  LsLinkNLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsLinkNLRI&& from) noexcept
      : LsLinkNLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLocalNodeFieldNumber = 1,
    kRemoteNodeFieldNumber = 2,
    kLinkDescriptorFieldNumber = 3,
  };
  // .apipb.LsNodeDescriptor local_node = 1;
  [[nodiscard]] bool has_local_node()
      const;
  void clear_local_node() ;
  [[nodiscard]] const ::apipb::LsNodeDescriptor& local_node() const;
  [[nodiscard]] ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE release_local_node();
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL mutable_local_node();
  void set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE unsafe_arena_release_local_node();

  private:
  const ::apipb::LsNodeDescriptor& _internal_local_node() const;
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL _internal_mutable_local_node();

  public:
  // .apipb.LsNodeDescriptor remote_node = 2;
  [[nodiscard]] bool has_remote_node()
      const;
  void clear_remote_node() ;
  [[nodiscard]] const ::apipb::LsNodeDescriptor& remote_node() const;
  [[nodiscard]] ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE release_remote_node();
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL mutable_remote_node();
  void set_allocated_remote_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_remote_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value);
  ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE unsafe_arena_release_remote_node();

  private:
  const ::apipb::LsNodeDescriptor& _internal_remote_node() const;
  ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL _internal_mutable_remote_node();

  public:
  // .apipb.LsLinkDescriptor link_descriptor = 3;
  [[nodiscard]] bool has_link_descriptor()
      const;
  void clear_link_descriptor() ;
  [[nodiscard]] const ::apipb::LsLinkDescriptor& link_descriptor() const;
  [[nodiscard]] ::apipb::LsLinkDescriptor* PROTOBUF_NULLABLE release_link_descriptor();
  ::apipb::LsLinkDescriptor* PROTOBUF_NONNULL mutable_link_descriptor();
  void set_allocated_link_descriptor(::apipb::LsLinkDescriptor* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_link_descriptor(::apipb::LsLinkDescriptor* PROTOBUF_NULLABLE value);
  ::apipb::LsLinkDescriptor* PROTOBUF_NULLABLE unsafe_arena_release_link_descriptor();

  private:
  const ::apipb::LsLinkDescriptor& _internal_link_descriptor() const;
  ::apipb::LsLinkDescriptor* PROTOBUF_NONNULL _internal_mutable_link_descriptor();

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsLinkNLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          3, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsLinkNLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE local_node_;
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE remote_node_;
    ::apipb::LsLinkDescriptor* PROTOBUF_NULLABLE link_descriptor_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsBgpPeerSegmentSID final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsBgpPeerSegmentSID) */ {
 public:
  inline LsBgpPeerSegmentSID() : LsBgpPeerSegmentSID(nullptr) {}
  ~LsBgpPeerSegmentSID() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsBgpPeerSegmentSID* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsBgpPeerSegmentSID));
  }
#endif

  template <typename = void>
  explicit constexpr LsBgpPeerSegmentSID(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsBgpPeerSegmentSID(const LsBgpPeerSegmentSID& from) : LsBgpPeerSegmentSID(nullptr, from) {}
  inline LsBgpPeerSegmentSID(LsBgpPeerSegmentSID&& from) noexcept : LsBgpPeerSegmentSID(nullptr, ::std::move(from)) {}
  inline LsBgpPeerSegmentSID& operator=(const LsBgpPeerSegmentSID& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsBgpPeerSegmentSID& operator=(LsBgpPeerSegmentSID&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsBgpPeerSegmentSID& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsBgpPeerSegmentSID>(&LsBgpPeerSegmentSID_globals_);
  }
  static constexpr int kIndexInFileMessages = 111;
  friend void swap(LsBgpPeerSegmentSID& a, LsBgpPeerSegmentSID& b) { a.Swap(&b); }
  inline void Swap(LsBgpPeerSegmentSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsBgpPeerSegmentSID* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsBgpPeerSegmentSID* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsBgpPeerSegmentSID>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsBgpPeerSegmentSID& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsBgpPeerSegmentSID& from) { LsBgpPeerSegmentSID::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsBgpPeerSegmentSID* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsBgpPeerSegmentSID"; }

  explicit LsBgpPeerSegmentSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsBgpPeerSegmentSID(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsBgpPeerSegmentSID& from);
  LsBgpPeerSegmentSID(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsBgpPeerSegmentSID&& from) noexcept
      : LsBgpPeerSegmentSID(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFlagsFieldNumber = 1,
    kWeightFieldNumber = 2,
    kSidFieldNumber = 3,
  };
  // .apipb.LsBgpPeerSegmentSIDFlags flags = 1;
  [[nodiscard]] bool has_flags()
      const;
  void clear_flags() ;
  [[nodiscard]] const ::apipb::LsBgpPeerSegmentSIDFlags& flags() const;
  [[nodiscard]] ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NULLABLE release_flags();
  ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NONNULL mutable_flags();
  void set_allocated_flags(::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_flags(::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NULLABLE value);
  ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NULLABLE unsafe_arena_release_flags();

  private:
  const ::apipb::LsBgpPeerSegmentSIDFlags& _internal_flags() const;
  ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NONNULL _internal_mutable_flags();

  public:
  // uint32 weight = 2;
  void clear_weight() ;
  [[nodiscard]] ::uint32_t weight() const;
  void set_weight(::uint32_t value);

  private:
  ::uint32_t _internal_weight() const;
  void _internal_set_weight(::uint32_t value);

  public:
  // uint32 sid = 3;
  void clear_sid() ;
  [[nodiscard]] ::uint32_t sid() const;
  void set_sid(::uint32_t value);

  private:
  ::uint32_t _internal_sid() const;
  void _internal_set_sid(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsBgpPeerSegmentSID)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsBgpPeerSegmentSID& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NULLABLE flags_;
    ::uint32_t weight_;
    ::uint32_t sid_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsAttributePrefix final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsAttributePrefix) */ {
 public:
  inline LsAttributePrefix() : LsAttributePrefix(nullptr) {}
  ~LsAttributePrefix() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsAttributePrefix* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsAttributePrefix));
  }
#endif

  template <typename = void>
  explicit constexpr LsAttributePrefix(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsAttributePrefix(const LsAttributePrefix& from) : LsAttributePrefix(nullptr, from) {}
  inline LsAttributePrefix(LsAttributePrefix&& from) noexcept : LsAttributePrefix(nullptr, ::std::move(from)) {}
  inline LsAttributePrefix& operator=(const LsAttributePrefix& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsAttributePrefix& operator=(LsAttributePrefix&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsAttributePrefix& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsAttributePrefix>(&LsAttributePrefix_globals_);
  }
  static constexpr int kIndexInFileMessages = 109;
  friend void swap(LsAttributePrefix& a, LsAttributePrefix& b) { a.Swap(&b); }
  inline void Swap(LsAttributePrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsAttributePrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsAttributePrefix* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsAttributePrefix>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsAttributePrefix& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsAttributePrefix& from) { LsAttributePrefix::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsAttributePrefix* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsAttributePrefix"; }

  explicit LsAttributePrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsAttributePrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsAttributePrefix& from);
  LsAttributePrefix(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsAttributePrefix&& from) noexcept
      : LsAttributePrefix(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kOpaqueFieldNumber = 2,
    kIgpFlagsFieldNumber = 1,
    kSrPrefixSidFieldNumber = 3,
  };
  // bytes opaque = 2;
  void clear_opaque() ;
  [[nodiscard]] const ::std::string& opaque() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_opaque(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_opaque();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_opaque();
  void set_allocated_opaque(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_opaque() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_opaque(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_opaque();

  public:
  // .apipb.LsIGPFlags igp_flags = 1;
  [[nodiscard]] bool has_igp_flags()
      const;
  void clear_igp_flags() ;
  [[nodiscard]] const ::apipb::LsIGPFlags& igp_flags() const;
  [[nodiscard]] ::apipb::LsIGPFlags* PROTOBUF_NULLABLE release_igp_flags();
  ::apipb::LsIGPFlags* PROTOBUF_NONNULL mutable_igp_flags();
  void set_allocated_igp_flags(::apipb::LsIGPFlags* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_igp_flags(::apipb::LsIGPFlags* PROTOBUF_NULLABLE value);
  ::apipb::LsIGPFlags* PROTOBUF_NULLABLE unsafe_arena_release_igp_flags();

  private:
  const ::apipb::LsIGPFlags& _internal_igp_flags() const;
  ::apipb::LsIGPFlags* PROTOBUF_NONNULL _internal_mutable_igp_flags();

  public:
  // uint32 sr_prefix_sid = 3;
  void clear_sr_prefix_sid() ;
  [[nodiscard]] ::uint32_t sr_prefix_sid() const;
  void set_sr_prefix_sid(::uint32_t value);

  private:
  ::uint32_t _internal_sr_prefix_sid() const;
  void _internal_set_sr_prefix_sid(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsAttributePrefix)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsAttributePrefix& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr opaque_;
    ::apipb::LsIGPFlags* PROTOBUF_NULLABLE igp_flags_;
    ::uint32_t sr_prefix_sid_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsAddrPrefix final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsAddrPrefix) */ {
 public:
  inline LsAddrPrefix() : LsAddrPrefix(nullptr) {}
  ~LsAddrPrefix() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsAddrPrefix* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsAddrPrefix));
  }
#endif

  template <typename = void>
  explicit constexpr LsAddrPrefix(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsAddrPrefix(const LsAddrPrefix& from) : LsAddrPrefix(nullptr, from) {}
  inline LsAddrPrefix(LsAddrPrefix&& from) noexcept : LsAddrPrefix(nullptr, ::std::move(from)) {}
  inline LsAddrPrefix& operator=(const LsAddrPrefix& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsAddrPrefix& operator=(LsAddrPrefix&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsAddrPrefix& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsAddrPrefix>(&LsAddrPrefix_globals_);
  }
  static constexpr int kIndexInFileMessages = 41;
  friend void swap(LsAddrPrefix& a, LsAddrPrefix& b) { a.Swap(&b); }
  inline void Swap(LsAddrPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsAddrPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsAddrPrefix* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsAddrPrefix>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsAddrPrefix& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsAddrPrefix& from) { LsAddrPrefix::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsAddrPrefix* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsAddrPrefix"; }

  explicit LsAddrPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsAddrPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsAddrPrefix& from);
  LsAddrPrefix(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsAddrPrefix&& from) noexcept
      : LsAddrPrefix(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNlriFieldNumber = 2,
    kTypeFieldNumber = 1,
    kLengthFieldNumber = 3,
    kIdentifierFieldNumber = 5,
    kProtocolIdFieldNumber = 4,
  };
  // .google.protobuf.Any nlri = 2;
  [[nodiscard]] bool has_nlri()
      const;
  void clear_nlri() ;
  [[nodiscard]] const ::google::protobuf::Any& nlri() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_nlri();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_nlri();
  void set_allocated_nlri(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_nlri(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_nlri();

  private:
  const ::google::protobuf::Any& _internal_nlri() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_nlri();

  public:
  // .apipb.LsNLRIType type = 1;
  void clear_type() ;
  [[nodiscard]] ::apipb::LsNLRIType type() const;
  void set_type(::apipb::LsNLRIType value);

  private:
  ::apipb::LsNLRIType _internal_type() const;
  void _internal_set_type(::apipb::LsNLRIType value);

  public:
  // uint32 length = 3;
  void clear_length() ;
  [[nodiscard]] ::uint32_t length() const;
  void set_length(::uint32_t value);

  private:
  ::uint32_t _internal_length() const;
  void _internal_set_length(::uint32_t value);

  public:
  // uint64 identifier = 5;
  void clear_identifier() ;
  [[nodiscard]] ::uint64_t identifier() const;
  void set_identifier(::uint64_t value);

  private:
  ::uint64_t _internal_identifier() const;
  void _internal_set_identifier(::uint64_t value);

  public:
  // .apipb.LsProtocolID protocol_id = 4;
  void clear_protocol_id() ;
  [[nodiscard]] ::apipb::LsProtocolID protocol_id() const;
  void set_protocol_id(::apipb::LsProtocolID value);

  private:
  ::apipb::LsProtocolID _internal_protocol_id() const;
  void _internal_set_protocol_id(::apipb::LsProtocolID value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsAddrPrefix)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 5,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsAddrPrefix& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE nlri_;
    int type_;
    ::uint32_t length_;
    ::uint64_t identifier_;
    int protocol_id_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LargeCommunitiesAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LargeCommunitiesAttribute) */ {
 public:
  inline LargeCommunitiesAttribute() : LargeCommunitiesAttribute(nullptr) {}
  ~LargeCommunitiesAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LargeCommunitiesAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LargeCommunitiesAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr LargeCommunitiesAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LargeCommunitiesAttribute(const LargeCommunitiesAttribute& from) : LargeCommunitiesAttribute(nullptr, from) {}
  inline LargeCommunitiesAttribute(LargeCommunitiesAttribute&& from) noexcept : LargeCommunitiesAttribute(nullptr, ::std::move(from)) {}
  inline LargeCommunitiesAttribute& operator=(const LargeCommunitiesAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline LargeCommunitiesAttribute& operator=(LargeCommunitiesAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LargeCommunitiesAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LargeCommunitiesAttribute>(&LargeCommunitiesAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 101;
  friend void swap(LargeCommunitiesAttribute& a, LargeCommunitiesAttribute& b) { a.Swap(&b); }
  inline void Swap(LargeCommunitiesAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LargeCommunitiesAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LargeCommunitiesAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LargeCommunitiesAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LargeCommunitiesAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LargeCommunitiesAttribute& from) { LargeCommunitiesAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LargeCommunitiesAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LargeCommunitiesAttribute"; }

  explicit LargeCommunitiesAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LargeCommunitiesAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LargeCommunitiesAttribute& from);
  LargeCommunitiesAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LargeCommunitiesAttribute&& from) noexcept
      : LargeCommunitiesAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kCommunitiesFieldNumber = 1,
  };
  // repeated .apipb.LargeCommunity communities = 1;
  [[nodiscard]] int communities_size()
      const;
  private:
  int _internal_communities_size() const;

  public:
  void clear_communities() ;
  [[nodiscard]] const ::apipb::LargeCommunity& communities(int index) const;
  [[nodiscard]] ::apipb::LargeCommunity* PROTOBUF_NONNULL mutable_communities(int index);
  ::apipb::LargeCommunity* PROTOBUF_NONNULL add_communities();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::apipb::LargeCommunity>&
  communities() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::apipb::LargeCommunity>* PROTOBUF_NONNULL
  mutable_communities();

  private:
  const ::google::protobuf::RepeatedPtrField<::apipb::LargeCommunity>& _internal_communities() const;
  ::google::protobuf::RepeatedPtrField<::apipb::LargeCommunity>* PROTOBUF_NONNULL _internal_mutable_communities();

  public:
  // @@protoc_insertion_point(class_scope:apipb.LargeCommunitiesAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LargeCommunitiesAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::apipb::LargeCommunity > communities_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LabeledVPNIPAddressPrefix final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LabeledVPNIPAddressPrefix) */ {
 public:
  inline LabeledVPNIPAddressPrefix() : LabeledVPNIPAddressPrefix(nullptr) {}
  ~LabeledVPNIPAddressPrefix() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LabeledVPNIPAddressPrefix* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LabeledVPNIPAddressPrefix));
  }
#endif

  template <typename = void>
  explicit constexpr LabeledVPNIPAddressPrefix(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LabeledVPNIPAddressPrefix(const LabeledVPNIPAddressPrefix& from) : LabeledVPNIPAddressPrefix(nullptr, from) {}
  inline LabeledVPNIPAddressPrefix(LabeledVPNIPAddressPrefix&& from) noexcept : LabeledVPNIPAddressPrefix(nullptr, ::std::move(from)) {}
  inline LabeledVPNIPAddressPrefix& operator=(const LabeledVPNIPAddressPrefix& from) {
    CopyFrom(from);
    return *this;
  }
  inline LabeledVPNIPAddressPrefix& operator=(LabeledVPNIPAddressPrefix&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LabeledVPNIPAddressPrefix& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LabeledVPNIPAddressPrefix>(&LabeledVPNIPAddressPrefix_globals_);
  }
  static constexpr int kIndexInFileMessages = 25;
  friend void swap(LabeledVPNIPAddressPrefix& a, LabeledVPNIPAddressPrefix& b) { a.Swap(&b); }
  inline void Swap(LabeledVPNIPAddressPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LabeledVPNIPAddressPrefix* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LabeledVPNIPAddressPrefix* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LabeledVPNIPAddressPrefix>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LabeledVPNIPAddressPrefix& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LabeledVPNIPAddressPrefix& from) { LabeledVPNIPAddressPrefix::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LabeledVPNIPAddressPrefix* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LabeledVPNIPAddressPrefix"; }

  explicit LabeledVPNIPAddressPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LabeledVPNIPAddressPrefix(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LabeledVPNIPAddressPrefix& from);
  LabeledVPNIPAddressPrefix(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LabeledVPNIPAddressPrefix&& from) noexcept
      : LabeledVPNIPAddressPrefix(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLabelsFieldNumber = 1,
    kPrefixFieldNumber = 4,
    kRdFieldNumber = 2,
    kPrefixLenFieldNumber = 3,
  };
  // repeated uint32 labels = 1;
  [[nodiscard]] int labels_size()
      const;
  private:
  int _internal_labels_size() const;

  public:
  void clear_labels() ;
  [[nodiscard]] ::uint32_t labels(int index) const;
  void set_labels(int index, ::uint32_t value);
  void add_labels(::uint32_t value);
  [[nodiscard]] const ::google::protobuf::RepeatedField<::uint32_t>& labels()
      const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_labels();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_labels() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_labels();

  public:
  // string prefix = 4;
  void clear_prefix() ;
  [[nodiscard]] const ::std::string& prefix() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_prefix(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_prefix();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_prefix();
  void set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_prefix() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_prefix(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_prefix();

  public:
  // .google.protobuf.Any rd = 2;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // uint32 prefix_len = 3;
  void clear_prefix_len() ;
  [[nodiscard]] ::uint32_t prefix_len() const;
  void set_prefix_len(::uint32_t value);

  private:
  ::uint32_t _internal_prefix_len() const;
  void _internal_set_prefix_len(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.LabeledVPNIPAddressPrefix)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          1, 46,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LabeledVPNIPAddressPrefix& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::uint32_t> labels_;
    ::google::protobuf::internal::CachedSize _labels_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr prefix_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    ::uint32_t prefix_len_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED IP6ExtendedCommunitiesAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.IP6ExtendedCommunitiesAttribute) */ {
 public:
  inline IP6ExtendedCommunitiesAttribute() : IP6ExtendedCommunitiesAttribute(nullptr) {}
  ~IP6ExtendedCommunitiesAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(IP6ExtendedCommunitiesAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(IP6ExtendedCommunitiesAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr IP6ExtendedCommunitiesAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline IP6ExtendedCommunitiesAttribute(const IP6ExtendedCommunitiesAttribute& from) : IP6ExtendedCommunitiesAttribute(nullptr, from) {}
  inline IP6ExtendedCommunitiesAttribute(IP6ExtendedCommunitiesAttribute&& from) noexcept : IP6ExtendedCommunitiesAttribute(nullptr, ::std::move(from)) {}
  inline IP6ExtendedCommunitiesAttribute& operator=(const IP6ExtendedCommunitiesAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline IP6ExtendedCommunitiesAttribute& operator=(IP6ExtendedCommunitiesAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const IP6ExtendedCommunitiesAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<IP6ExtendedCommunitiesAttribute>(&IP6ExtendedCommunitiesAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 96;
  friend void swap(IP6ExtendedCommunitiesAttribute& a, IP6ExtendedCommunitiesAttribute& b) { a.Swap(&b); }
  inline void Swap(IP6ExtendedCommunitiesAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(IP6ExtendedCommunitiesAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] IP6ExtendedCommunitiesAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<IP6ExtendedCommunitiesAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const IP6ExtendedCommunitiesAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const IP6ExtendedCommunitiesAttribute& from) { IP6ExtendedCommunitiesAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(IP6ExtendedCommunitiesAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.IP6ExtendedCommunitiesAttribute"; }

  explicit IP6ExtendedCommunitiesAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  IP6ExtendedCommunitiesAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const IP6ExtendedCommunitiesAttribute& from);
  IP6ExtendedCommunitiesAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, IP6ExtendedCommunitiesAttribute&& from) noexcept
      : IP6ExtendedCommunitiesAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kCommunitiesFieldNumber = 1,
  };
  // repeated .google.protobuf.Any communities = 1;
  [[nodiscard]] int communities_size()
      const;
  private:
  int _internal_communities_size() const;

  public:
  void clear_communities() ;
  [[nodiscard]] const ::google::protobuf::Any& communities(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_communities(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_communities();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  communities() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_communities();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_communities() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_communities();

  public:
  // @@protoc_insertion_point(class_scope:apipb.IP6ExtendedCommunitiesAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const IP6ExtendedCommunitiesAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > communities_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED FlowSpecNLRI final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.FlowSpecNLRI) */ {
 public:
  inline FlowSpecNLRI() : FlowSpecNLRI(nullptr) {}
  ~FlowSpecNLRI() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(FlowSpecNLRI* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(FlowSpecNLRI));
  }
#endif

  template <typename = void>
  explicit constexpr FlowSpecNLRI(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline FlowSpecNLRI(const FlowSpecNLRI& from) : FlowSpecNLRI(nullptr, from) {}
  inline FlowSpecNLRI(FlowSpecNLRI&& from) noexcept : FlowSpecNLRI(nullptr, ::std::move(from)) {}
  inline FlowSpecNLRI& operator=(const FlowSpecNLRI& from) {
    CopyFrom(from);
    return *this;
  }
  inline FlowSpecNLRI& operator=(FlowSpecNLRI&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const FlowSpecNLRI& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<FlowSpecNLRI>(&FlowSpecNLRI_globals_);
  }
  static constexpr int kIndexInFileMessages = 31;
  friend void swap(FlowSpecNLRI& a, FlowSpecNLRI& b) { a.Swap(&b); }
  inline void Swap(FlowSpecNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FlowSpecNLRI* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] FlowSpecNLRI* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<FlowSpecNLRI>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FlowSpecNLRI& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FlowSpecNLRI& from) { FlowSpecNLRI::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(FlowSpecNLRI* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.FlowSpecNLRI"; }

  explicit FlowSpecNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FlowSpecNLRI(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FlowSpecNLRI& from);
  FlowSpecNLRI(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FlowSpecNLRI&& from) noexcept
      : FlowSpecNLRI(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRulesFieldNumber = 1,
  };
  // repeated .google.protobuf.Any rules = 1;
  [[nodiscard]] int rules_size()
      const;
  private:
  int _internal_rules_size() const;

  public:
  void clear_rules() ;
  [[nodiscard]] const ::google::protobuf::Any& rules(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rules(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_rules();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  rules() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_rules();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_rules() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_rules();

  public:
  // @@protoc_insertion_point(class_scope:apipb.FlowSpecNLRI)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const FlowSpecNLRI& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > rules_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED FlowSpecComponent final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.FlowSpecComponent) */ {
 public:
  inline FlowSpecComponent() : FlowSpecComponent(nullptr) {}
  ~FlowSpecComponent() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(FlowSpecComponent* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(FlowSpecComponent));
  }
#endif

  template <typename = void>
  explicit constexpr FlowSpecComponent(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline FlowSpecComponent(const FlowSpecComponent& from) : FlowSpecComponent(nullptr, from) {}
  inline FlowSpecComponent(FlowSpecComponent&& from) noexcept : FlowSpecComponent(nullptr, ::std::move(from)) {}
  inline FlowSpecComponent& operator=(const FlowSpecComponent& from) {
    CopyFrom(from);
    return *this;
  }
  inline FlowSpecComponent& operator=(FlowSpecComponent&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const FlowSpecComponent& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<FlowSpecComponent>(&FlowSpecComponent_globals_);
  }
  static constexpr int kIndexInFileMessages = 30;
  friend void swap(FlowSpecComponent& a, FlowSpecComponent& b) { a.Swap(&b); }
  inline void Swap(FlowSpecComponent* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(FlowSpecComponent* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] FlowSpecComponent* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<FlowSpecComponent>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const FlowSpecComponent& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const FlowSpecComponent& from) { FlowSpecComponent::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(FlowSpecComponent* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.FlowSpecComponent"; }

  explicit FlowSpecComponent(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  FlowSpecComponent(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const FlowSpecComponent& from);
  FlowSpecComponent(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, FlowSpecComponent&& from) noexcept
      : FlowSpecComponent(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kItemsFieldNumber = 2,
    kTypeFieldNumber = 1,
  };
  // repeated .apipb.FlowSpecComponentItem items = 2;
  [[nodiscard]] int items_size()
      const;
  private:
  int _internal_items_size() const;

  public:
  void clear_items() ;
  [[nodiscard]] const ::apipb::FlowSpecComponentItem& items(int index) const;
  [[nodiscard]] ::apipb::FlowSpecComponentItem* PROTOBUF_NONNULL mutable_items(int index);
  ::apipb::FlowSpecComponentItem* PROTOBUF_NONNULL add_items();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::apipb::FlowSpecComponentItem>&
  items() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::apipb::FlowSpecComponentItem>* PROTOBUF_NONNULL
  mutable_items();

  private:
  const ::google::protobuf::RepeatedPtrField<::apipb::FlowSpecComponentItem>& _internal_items() const;
  ::google::protobuf::RepeatedPtrField<::apipb::FlowSpecComponentItem>* PROTOBUF_NONNULL _internal_mutable_items();

  public:
  // uint32 type = 1;
  void clear_type() ;
  [[nodiscard]] ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.FlowSpecComponent)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const FlowSpecComponent& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::apipb::FlowSpecComponentItem > items_;
    ::uint32_t type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED ExtendedCommunitiesAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.ExtendedCommunitiesAttribute) */ {
 public:
  inline ExtendedCommunitiesAttribute() : ExtendedCommunitiesAttribute(nullptr) {}
  ~ExtendedCommunitiesAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ExtendedCommunitiesAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ExtendedCommunitiesAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr ExtendedCommunitiesAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline ExtendedCommunitiesAttribute(const ExtendedCommunitiesAttribute& from) : ExtendedCommunitiesAttribute(nullptr, from) {}
  inline ExtendedCommunitiesAttribute(ExtendedCommunitiesAttribute&& from) noexcept : ExtendedCommunitiesAttribute(nullptr, ::std::move(from)) {}
  inline ExtendedCommunitiesAttribute& operator=(const ExtendedCommunitiesAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline ExtendedCommunitiesAttribute& operator=(ExtendedCommunitiesAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const ExtendedCommunitiesAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ExtendedCommunitiesAttribute>(&ExtendedCommunitiesAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 69;
  friend void swap(ExtendedCommunitiesAttribute& a, ExtendedCommunitiesAttribute& b) { a.Swap(&b); }
  inline void Swap(ExtendedCommunitiesAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ExtendedCommunitiesAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] ExtendedCommunitiesAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ExtendedCommunitiesAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ExtendedCommunitiesAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ExtendedCommunitiesAttribute& from) { ExtendedCommunitiesAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ExtendedCommunitiesAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.ExtendedCommunitiesAttribute"; }

  explicit ExtendedCommunitiesAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ExtendedCommunitiesAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ExtendedCommunitiesAttribute& from);
  ExtendedCommunitiesAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ExtendedCommunitiesAttribute&& from) noexcept
      : ExtendedCommunitiesAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kCommunitiesFieldNumber = 1,
  };
  // repeated .google.protobuf.Any communities = 1;
  [[nodiscard]] int communities_size()
      const;
  private:
  int _internal_communities_size() const;

  public:
  void clear_communities() ;
  [[nodiscard]] const ::google::protobuf::Any& communities(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_communities(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_communities();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  communities() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_communities();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_communities() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_communities();

  public:
  // @@protoc_insertion_point(class_scope:apipb.ExtendedCommunitiesAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ExtendedCommunitiesAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > communities_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED EVPNMACIPAdvertisementRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.EVPNMACIPAdvertisementRoute) */ {
 public:
  inline EVPNMACIPAdvertisementRoute() : EVPNMACIPAdvertisementRoute(nullptr) {}
  ~EVPNMACIPAdvertisementRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EVPNMACIPAdvertisementRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EVPNMACIPAdvertisementRoute));
  }
#endif

  template <typename = void>
  explicit constexpr EVPNMACIPAdvertisementRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EVPNMACIPAdvertisementRoute(const EVPNMACIPAdvertisementRoute& from) : EVPNMACIPAdvertisementRoute(nullptr, from) {}
  inline EVPNMACIPAdvertisementRoute(EVPNMACIPAdvertisementRoute&& from) noexcept : EVPNMACIPAdvertisementRoute(nullptr, ::std::move(from)) {}
  inline EVPNMACIPAdvertisementRoute& operator=(const EVPNMACIPAdvertisementRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline EVPNMACIPAdvertisementRoute& operator=(EVPNMACIPAdvertisementRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const EVPNMACIPAdvertisementRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EVPNMACIPAdvertisementRoute>(&EVPNMACIPAdvertisementRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 19;
  friend void swap(EVPNMACIPAdvertisementRoute& a, EVPNMACIPAdvertisementRoute& b) { a.Swap(&b); }
  inline void Swap(EVPNMACIPAdvertisementRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EVPNMACIPAdvertisementRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] EVPNMACIPAdvertisementRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<EVPNMACIPAdvertisementRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const EVPNMACIPAdvertisementRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const EVPNMACIPAdvertisementRoute& from) { EVPNMACIPAdvertisementRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EVPNMACIPAdvertisementRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.EVPNMACIPAdvertisementRoute"; }

  explicit EVPNMACIPAdvertisementRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EVPNMACIPAdvertisementRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EVPNMACIPAdvertisementRoute& from);
  EVPNMACIPAdvertisementRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EVPNMACIPAdvertisementRoute&& from) noexcept
      : EVPNMACIPAdvertisementRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kLabelsFieldNumber = 6,
    kMacAddressFieldNumber = 4,
    kIpAddressFieldNumber = 5,
    kRdFieldNumber = 1,
    kEsiFieldNumber = 2,
    kEthernetTagFieldNumber = 3,
  };
  // repeated uint32 labels = 6;
  [[nodiscard]] int labels_size()
      const;
  private:
  int _internal_labels_size() const;

  public:
  void clear_labels() ;
  [[nodiscard]] ::uint32_t labels(int index) const;
  void set_labels(int index, ::uint32_t value);
  void add_labels(::uint32_t value);
  [[nodiscard]] const ::google::protobuf::RepeatedField<::uint32_t>& labels()
      const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL mutable_labels();

  private:
  const ::google::protobuf::RepeatedField<::uint32_t>& _internal_labels() const;
  ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL _internal_mutable_labels();

  public:
  // string mac_address = 4;
  void clear_mac_address() ;
  [[nodiscard]] const ::std::string& mac_address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_mac_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_mac_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_mac_address();
  void set_allocated_mac_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_mac_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_mac_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_mac_address();

  public:
  // string ip_address = 5;
  void clear_ip_address() ;
  [[nodiscard]] const ::std::string& ip_address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_ip_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_ip_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_ip_address();
  void set_allocated_ip_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_ip_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_ip_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_ip_address();

  public:
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // .apipb.EthernetSegmentIdentifier esi = 2;
  [[nodiscard]] bool has_esi()
      const;
  void clear_esi() ;
  [[nodiscard]] const ::apipb::EthernetSegmentIdentifier& esi() const;
  [[nodiscard]] ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE release_esi();
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL mutable_esi();
  void set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value);
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE unsafe_arena_release_esi();

  private:
  const ::apipb::EthernetSegmentIdentifier& _internal_esi() const;
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL _internal_mutable_esi();

  public:
  // uint32 ethernet_tag = 3;
  void clear_ethernet_tag() ;
  [[nodiscard]] ::uint32_t ethernet_tag() const;
  void set_ethernet_tag(::uint32_t value);

  private:
  ::uint32_t _internal_ethernet_tag() const;
  void _internal_set_ethernet_tag(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.EVPNMACIPAdvertisementRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 6,
                          2, 63,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EVPNMACIPAdvertisementRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::uint32_t> labels_;
    ::google::protobuf::internal::CachedSize _labels_cached_byte_size_;
    ::google::protobuf::internal::ArenaStringPtr mac_address_;
    ::google::protobuf::internal::ArenaStringPtr ip_address_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE esi_;
    ::uint32_t ethernet_tag_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED EVPNInclusiveMulticastEthernetTagRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.EVPNInclusiveMulticastEthernetTagRoute) */ {
 public:
  inline EVPNInclusiveMulticastEthernetTagRoute() : EVPNInclusiveMulticastEthernetTagRoute(nullptr) {}
  ~EVPNInclusiveMulticastEthernetTagRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EVPNInclusiveMulticastEthernetTagRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EVPNInclusiveMulticastEthernetTagRoute));
  }
#endif

  template <typename = void>
  explicit constexpr EVPNInclusiveMulticastEthernetTagRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EVPNInclusiveMulticastEthernetTagRoute(const EVPNInclusiveMulticastEthernetTagRoute& from) : EVPNInclusiveMulticastEthernetTagRoute(nullptr, from) {}
  inline EVPNInclusiveMulticastEthernetTagRoute(EVPNInclusiveMulticastEthernetTagRoute&& from) noexcept : EVPNInclusiveMulticastEthernetTagRoute(nullptr, ::std::move(from)) {}
  inline EVPNInclusiveMulticastEthernetTagRoute& operator=(const EVPNInclusiveMulticastEthernetTagRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline EVPNInclusiveMulticastEthernetTagRoute& operator=(EVPNInclusiveMulticastEthernetTagRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const EVPNInclusiveMulticastEthernetTagRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EVPNInclusiveMulticastEthernetTagRoute>(&EVPNInclusiveMulticastEthernetTagRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 20;
  friend void swap(EVPNInclusiveMulticastEthernetTagRoute& a, EVPNInclusiveMulticastEthernetTagRoute& b) { a.Swap(&b); }
  inline void Swap(EVPNInclusiveMulticastEthernetTagRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EVPNInclusiveMulticastEthernetTagRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] EVPNInclusiveMulticastEthernetTagRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<EVPNInclusiveMulticastEthernetTagRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const EVPNInclusiveMulticastEthernetTagRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const EVPNInclusiveMulticastEthernetTagRoute& from) { EVPNInclusiveMulticastEthernetTagRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EVPNInclusiveMulticastEthernetTagRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.EVPNInclusiveMulticastEthernetTagRoute"; }

  explicit EVPNInclusiveMulticastEthernetTagRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EVPNInclusiveMulticastEthernetTagRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EVPNInclusiveMulticastEthernetTagRoute& from);
  EVPNInclusiveMulticastEthernetTagRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EVPNInclusiveMulticastEthernetTagRoute&& from) noexcept
      : EVPNInclusiveMulticastEthernetTagRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIpAddressFieldNumber = 3,
    kRdFieldNumber = 1,
    kEthernetTagFieldNumber = 2,
  };
  // string ip_address = 3;
  void clear_ip_address() ;
  [[nodiscard]] const ::std::string& ip_address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_ip_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_ip_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_ip_address();
  void set_allocated_ip_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_ip_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_ip_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_ip_address();

  public:
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // uint32 ethernet_tag = 2;
  void clear_ethernet_tag() ;
  [[nodiscard]] ::uint32_t ethernet_tag() const;
  void set_ethernet_tag(::uint32_t value);

  private:
  ::uint32_t _internal_ethernet_tag() const;
  void _internal_set_ethernet_tag(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.EVPNInclusiveMulticastEthernetTagRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          1, 63,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EVPNInclusiveMulticastEthernetTagRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr ip_address_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    ::uint32_t ethernet_tag_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED EVPNIPPrefixRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.EVPNIPPrefixRoute) */ {
 public:
  inline EVPNIPPrefixRoute() : EVPNIPPrefixRoute(nullptr) {}
  ~EVPNIPPrefixRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EVPNIPPrefixRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EVPNIPPrefixRoute));
  }
#endif

  template <typename = void>
  explicit constexpr EVPNIPPrefixRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EVPNIPPrefixRoute(const EVPNIPPrefixRoute& from) : EVPNIPPrefixRoute(nullptr, from) {}
  inline EVPNIPPrefixRoute(EVPNIPPrefixRoute&& from) noexcept : EVPNIPPrefixRoute(nullptr, ::std::move(from)) {}
  inline EVPNIPPrefixRoute& operator=(const EVPNIPPrefixRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline EVPNIPPrefixRoute& operator=(EVPNIPPrefixRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const EVPNIPPrefixRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EVPNIPPrefixRoute>(&EVPNIPPrefixRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 22;
  friend void swap(EVPNIPPrefixRoute& a, EVPNIPPrefixRoute& b) { a.Swap(&b); }
  inline void Swap(EVPNIPPrefixRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EVPNIPPrefixRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] EVPNIPPrefixRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<EVPNIPPrefixRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const EVPNIPPrefixRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const EVPNIPPrefixRoute& from) { EVPNIPPrefixRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EVPNIPPrefixRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.EVPNIPPrefixRoute"; }

  explicit EVPNIPPrefixRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EVPNIPPrefixRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EVPNIPPrefixRoute& from);
  EVPNIPPrefixRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EVPNIPPrefixRoute&& from) noexcept
      : EVPNIPPrefixRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIpPrefixFieldNumber = 4,
    kGwAddressFieldNumber = 6,
    kRdFieldNumber = 1,
    kEsiFieldNumber = 2,
    kEthernetTagFieldNumber = 3,
    kIpPrefixLenFieldNumber = 5,
    kLabelFieldNumber = 7,
  };
  // string ip_prefix = 4;
  void clear_ip_prefix() ;
  [[nodiscard]] const ::std::string& ip_prefix() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_ip_prefix(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_ip_prefix();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_ip_prefix();
  void set_allocated_ip_prefix(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_ip_prefix() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_ip_prefix(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_ip_prefix();

  public:
  // string gw_address = 6;
  void clear_gw_address() ;
  [[nodiscard]] const ::std::string& gw_address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_gw_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_gw_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_gw_address();
  void set_allocated_gw_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_gw_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_gw_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_gw_address();

  public:
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // .apipb.EthernetSegmentIdentifier esi = 2;
  [[nodiscard]] bool has_esi()
      const;
  void clear_esi() ;
  [[nodiscard]] const ::apipb::EthernetSegmentIdentifier& esi() const;
  [[nodiscard]] ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE release_esi();
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL mutable_esi();
  void set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value);
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE unsafe_arena_release_esi();

  private:
  const ::apipb::EthernetSegmentIdentifier& _internal_esi() const;
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL _internal_mutable_esi();

  public:
  // uint32 ethernet_tag = 3;
  void clear_ethernet_tag() ;
  [[nodiscard]] ::uint32_t ethernet_tag() const;
  void set_ethernet_tag(::uint32_t value);

  private:
  ::uint32_t _internal_ethernet_tag() const;
  void _internal_set_ethernet_tag(::uint32_t value);

  public:
  // uint32 ip_prefix_len = 5;
  void clear_ip_prefix_len() ;
  [[nodiscard]] ::uint32_t ip_prefix_len() const;
  void set_ip_prefix_len(::uint32_t value);

  private:
  ::uint32_t _internal_ip_prefix_len() const;
  void _internal_set_ip_prefix_len(::uint32_t value);

  public:
  // uint32 label = 7;
  void clear_label() ;
  [[nodiscard]] ::uint32_t label() const;
  void set_label(::uint32_t value);

  private:
  ::uint32_t _internal_label() const;
  void _internal_set_label(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.EVPNIPPrefixRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 7,
                          2, 51,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EVPNIPPrefixRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr ip_prefix_;
    ::google::protobuf::internal::ArenaStringPtr gw_address_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE esi_;
    ::uint32_t ethernet_tag_;
    ::uint32_t ip_prefix_len_;
    ::uint32_t label_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED EVPNIPMSIRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.EVPNIPMSIRoute) */ {
 public:
  inline EVPNIPMSIRoute() : EVPNIPMSIRoute(nullptr) {}
  ~EVPNIPMSIRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EVPNIPMSIRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EVPNIPMSIRoute));
  }
#endif

  template <typename = void>
  explicit constexpr EVPNIPMSIRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EVPNIPMSIRoute(const EVPNIPMSIRoute& from) : EVPNIPMSIRoute(nullptr, from) {}
  inline EVPNIPMSIRoute(EVPNIPMSIRoute&& from) noexcept : EVPNIPMSIRoute(nullptr, ::std::move(from)) {}
  inline EVPNIPMSIRoute& operator=(const EVPNIPMSIRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline EVPNIPMSIRoute& operator=(EVPNIPMSIRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const EVPNIPMSIRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EVPNIPMSIRoute>(&EVPNIPMSIRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 23;
  friend void swap(EVPNIPMSIRoute& a, EVPNIPMSIRoute& b) { a.Swap(&b); }
  inline void Swap(EVPNIPMSIRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EVPNIPMSIRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] EVPNIPMSIRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<EVPNIPMSIRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const EVPNIPMSIRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const EVPNIPMSIRoute& from) { EVPNIPMSIRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EVPNIPMSIRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.EVPNIPMSIRoute"; }

  explicit EVPNIPMSIRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EVPNIPMSIRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EVPNIPMSIRoute& from);
  EVPNIPMSIRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EVPNIPMSIRoute&& from) noexcept
      : EVPNIPMSIRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRdFieldNumber = 1,
    kRtFieldNumber = 3,
    kEthernetTagFieldNumber = 2,
  };
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // .google.protobuf.Any rt = 3;
  [[nodiscard]] bool has_rt()
      const;
  void clear_rt() ;
  [[nodiscard]] const ::google::protobuf::Any& rt() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rt();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rt();
  void set_allocated_rt(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rt(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rt();

  private:
  const ::google::protobuf::Any& _internal_rt() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rt();

  public:
  // uint32 ethernet_tag = 2;
  void clear_ethernet_tag() ;
  [[nodiscard]] ::uint32_t ethernet_tag() const;
  void set_ethernet_tag(::uint32_t value);

  private:
  ::uint32_t _internal_ethernet_tag() const;
  void _internal_set_ethernet_tag(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.EVPNIPMSIRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EVPNIPMSIRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rt_;
    ::uint32_t ethernet_tag_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED EVPNEthernetSegmentRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.EVPNEthernetSegmentRoute) */ {
 public:
  inline EVPNEthernetSegmentRoute() : EVPNEthernetSegmentRoute(nullptr) {}
  ~EVPNEthernetSegmentRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EVPNEthernetSegmentRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EVPNEthernetSegmentRoute));
  }
#endif

  template <typename = void>
  explicit constexpr EVPNEthernetSegmentRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EVPNEthernetSegmentRoute(const EVPNEthernetSegmentRoute& from) : EVPNEthernetSegmentRoute(nullptr, from) {}
  inline EVPNEthernetSegmentRoute(EVPNEthernetSegmentRoute&& from) noexcept : EVPNEthernetSegmentRoute(nullptr, ::std::move(from)) {}
  inline EVPNEthernetSegmentRoute& operator=(const EVPNEthernetSegmentRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline EVPNEthernetSegmentRoute& operator=(EVPNEthernetSegmentRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const EVPNEthernetSegmentRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EVPNEthernetSegmentRoute>(&EVPNEthernetSegmentRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 21;
  friend void swap(EVPNEthernetSegmentRoute& a, EVPNEthernetSegmentRoute& b) { a.Swap(&b); }
  inline void Swap(EVPNEthernetSegmentRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EVPNEthernetSegmentRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] EVPNEthernetSegmentRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<EVPNEthernetSegmentRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const EVPNEthernetSegmentRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const EVPNEthernetSegmentRoute& from) { EVPNEthernetSegmentRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EVPNEthernetSegmentRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.EVPNEthernetSegmentRoute"; }

  explicit EVPNEthernetSegmentRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EVPNEthernetSegmentRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EVPNEthernetSegmentRoute& from);
  EVPNEthernetSegmentRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EVPNEthernetSegmentRoute&& from) noexcept
      : EVPNEthernetSegmentRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kIpAddressFieldNumber = 3,
    kRdFieldNumber = 1,
    kEsiFieldNumber = 2,
  };
  // string ip_address = 3;
  void clear_ip_address() ;
  [[nodiscard]] const ::std::string& ip_address() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_ip_address(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_ip_address();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_ip_address();
  void set_allocated_ip_address(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_ip_address() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_ip_address(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_ip_address();

  public:
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // .apipb.EthernetSegmentIdentifier esi = 2;
  [[nodiscard]] bool has_esi()
      const;
  void clear_esi() ;
  [[nodiscard]] const ::apipb::EthernetSegmentIdentifier& esi() const;
  [[nodiscard]] ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE release_esi();
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL mutable_esi();
  void set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value);
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE unsafe_arena_release_esi();

  private:
  const ::apipb::EthernetSegmentIdentifier& _internal_esi() const;
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL _internal_mutable_esi();

  public:
  // @@protoc_insertion_point(class_scope:apipb.EVPNEthernetSegmentRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          2, 49,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EVPNEthernetSegmentRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr ip_address_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE esi_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED EVPNEthernetAutoDiscoveryRoute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.EVPNEthernetAutoDiscoveryRoute) */ {
 public:
  inline EVPNEthernetAutoDiscoveryRoute() : EVPNEthernetAutoDiscoveryRoute(nullptr) {}
  ~EVPNEthernetAutoDiscoveryRoute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(EVPNEthernetAutoDiscoveryRoute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(EVPNEthernetAutoDiscoveryRoute));
  }
#endif

  template <typename = void>
  explicit constexpr EVPNEthernetAutoDiscoveryRoute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline EVPNEthernetAutoDiscoveryRoute(const EVPNEthernetAutoDiscoveryRoute& from) : EVPNEthernetAutoDiscoveryRoute(nullptr, from) {}
  inline EVPNEthernetAutoDiscoveryRoute(EVPNEthernetAutoDiscoveryRoute&& from) noexcept : EVPNEthernetAutoDiscoveryRoute(nullptr, ::std::move(from)) {}
  inline EVPNEthernetAutoDiscoveryRoute& operator=(const EVPNEthernetAutoDiscoveryRoute& from) {
    CopyFrom(from);
    return *this;
  }
  inline EVPNEthernetAutoDiscoveryRoute& operator=(EVPNEthernetAutoDiscoveryRoute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const EVPNEthernetAutoDiscoveryRoute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<EVPNEthernetAutoDiscoveryRoute>(&EVPNEthernetAutoDiscoveryRoute_globals_);
  }
  static constexpr int kIndexInFileMessages = 18;
  friend void swap(EVPNEthernetAutoDiscoveryRoute& a, EVPNEthernetAutoDiscoveryRoute& b) { a.Swap(&b); }
  inline void Swap(EVPNEthernetAutoDiscoveryRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EVPNEthernetAutoDiscoveryRoute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] EVPNEthernetAutoDiscoveryRoute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<EVPNEthernetAutoDiscoveryRoute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const EVPNEthernetAutoDiscoveryRoute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const EVPNEthernetAutoDiscoveryRoute& from) { EVPNEthernetAutoDiscoveryRoute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(EVPNEthernetAutoDiscoveryRoute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.EVPNEthernetAutoDiscoveryRoute"; }

  explicit EVPNEthernetAutoDiscoveryRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  EVPNEthernetAutoDiscoveryRoute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const EVPNEthernetAutoDiscoveryRoute& from);
  EVPNEthernetAutoDiscoveryRoute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, EVPNEthernetAutoDiscoveryRoute&& from) noexcept
      : EVPNEthernetAutoDiscoveryRoute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kRdFieldNumber = 1,
    kEsiFieldNumber = 2,
    kEthernetTagFieldNumber = 3,
    kLabelFieldNumber = 4,
  };
  // .google.protobuf.Any rd = 1;
  [[nodiscard]] bool has_rd()
      const;
  void clear_rd() ;
  [[nodiscard]] const ::google::protobuf::Any& rd() const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NULLABLE release_rd();
  ::google::protobuf::Any* PROTOBUF_NONNULL mutable_rd();
  void set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value);
  ::google::protobuf::Any* PROTOBUF_NULLABLE unsafe_arena_release_rd();

  private:
  const ::google::protobuf::Any& _internal_rd() const;
  ::google::protobuf::Any* PROTOBUF_NONNULL _internal_mutable_rd();

  public:
  // .apipb.EthernetSegmentIdentifier esi = 2;
  [[nodiscard]] bool has_esi()
      const;
  void clear_esi() ;
  [[nodiscard]] const ::apipb::EthernetSegmentIdentifier& esi() const;
  [[nodiscard]] ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE release_esi();
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL mutable_esi();
  void set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value);
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE unsafe_arena_release_esi();

  private:
  const ::apipb::EthernetSegmentIdentifier& _internal_esi() const;
  ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL _internal_mutable_esi();

  public:
  // uint32 ethernet_tag = 3;
  void clear_ethernet_tag() ;
  [[nodiscard]] ::uint32_t ethernet_tag() const;
  void set_ethernet_tag(::uint32_t value);

  private:
  ::uint32_t _internal_ethernet_tag() const;
  void _internal_set_ethernet_tag(::uint32_t value);

  public:
  // uint32 label = 4;
  void clear_label() ;
  [[nodiscard]] ::uint32_t label() const;
  void set_label(::uint32_t value);

  private:
  ::uint32_t _internal_label() const;
  void _internal_set_label(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:apipb.EVPNEthernetAutoDiscoveryRoute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const EVPNEthernetAutoDiscoveryRoute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::Any* PROTOBUF_NULLABLE rd_;
    ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE esi_;
    ::uint32_t ethernet_tag_;
    ::uint32_t label_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED AsPathAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.AsPathAttribute) */ {
 public:
  inline AsPathAttribute() : AsPathAttribute(nullptr) {}
  ~AsPathAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AsPathAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AsPathAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr AsPathAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline AsPathAttribute(const AsPathAttribute& from) : AsPathAttribute(nullptr, from) {}
  inline AsPathAttribute(AsPathAttribute&& from) noexcept : AsPathAttribute(nullptr, ::std::move(from)) {}
  inline AsPathAttribute& operator=(const AsPathAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline AsPathAttribute& operator=(AsPathAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const AsPathAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<AsPathAttribute>(&AsPathAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(AsPathAttribute& a, AsPathAttribute& b) { a.Swap(&b); }
  inline void Swap(AsPathAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AsPathAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] AsPathAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AsPathAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AsPathAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AsPathAttribute& from) { AsPathAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AsPathAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.AsPathAttribute"; }

  explicit AsPathAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AsPathAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AsPathAttribute& from);
  AsPathAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AsPathAttribute&& from) noexcept
      : AsPathAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSegmentsFieldNumber = 1,
  };
  // repeated .apipb.AsSegment segments = 1;
  [[nodiscard]] int segments_size()
      const;
  private:
  int _internal_segments_size() const;

  public:
  void clear_segments() ;
  [[nodiscard]] const ::apipb::AsSegment& segments(int index) const;
  [[nodiscard]] ::apipb::AsSegment* PROTOBUF_NONNULL mutable_segments(int index);
  ::apipb::AsSegment* PROTOBUF_NONNULL add_segments();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>&
  segments() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>* PROTOBUF_NONNULL
  mutable_segments();

  private:
  const ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>& _internal_segments() const;
  ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>* PROTOBUF_NONNULL _internal_mutable_segments();

  public:
  // @@protoc_insertion_point(class_scope:apipb.AsPathAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AsPathAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::apipb::AsSegment > segments_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED As4PathAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.As4PathAttribute) */ {
 public:
  inline As4PathAttribute() : As4PathAttribute(nullptr) {}
  ~As4PathAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(As4PathAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(As4PathAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr As4PathAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline As4PathAttribute(const As4PathAttribute& from) : As4PathAttribute(nullptr, from) {}
  inline As4PathAttribute(As4PathAttribute&& from) noexcept : As4PathAttribute(nullptr, ::std::move(from)) {}
  inline As4PathAttribute& operator=(const As4PathAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline As4PathAttribute& operator=(As4PathAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const As4PathAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<As4PathAttribute>(&As4PathAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 70;
  friend void swap(As4PathAttribute& a, As4PathAttribute& b) { a.Swap(&b); }
  inline void Swap(As4PathAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(As4PathAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] As4PathAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<As4PathAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const As4PathAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const As4PathAttribute& from) { As4PathAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(As4PathAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.As4PathAttribute"; }

  explicit As4PathAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  As4PathAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const As4PathAttribute& from);
  As4PathAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, As4PathAttribute&& from) noexcept
      : As4PathAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSegmentsFieldNumber = 1,
  };
  // repeated .apipb.AsSegment segments = 1;
  [[nodiscard]] int segments_size()
      const;
  private:
  int _internal_segments_size() const;

  public:
  void clear_segments() ;
  [[nodiscard]] const ::apipb::AsSegment& segments(int index) const;
  [[nodiscard]] ::apipb::AsSegment* PROTOBUF_NONNULL mutable_segments(int index);
  ::apipb::AsSegment* PROTOBUF_NONNULL add_segments();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>&
  segments() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>* PROTOBUF_NONNULL
  mutable_segments();

  private:
  const ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>& _internal_segments() const;
  ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>* PROTOBUF_NONNULL _internal_mutable_segments();

  public:
  // @@protoc_insertion_point(class_scope:apipb.As4PathAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const As4PathAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::apipb::AsSegment > segments_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED AigpAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.AigpAttribute) */ {
 public:
  inline AigpAttribute() : AigpAttribute(nullptr) {}
  ~AigpAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(AigpAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(AigpAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr AigpAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline AigpAttribute(const AigpAttribute& from) : AigpAttribute(nullptr, from) {}
  inline AigpAttribute(AigpAttribute&& from) noexcept : AigpAttribute(nullptr, ::std::move(from)) {}
  inline AigpAttribute& operator=(const AigpAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline AigpAttribute& operator=(AigpAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const AigpAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<AigpAttribute>(&AigpAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 99;
  friend void swap(AigpAttribute& a, AigpAttribute& b) { a.Swap(&b); }
  inline void Swap(AigpAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(AigpAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] AigpAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<AigpAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const AigpAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const AigpAttribute& from) { AigpAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(AigpAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.AigpAttribute"; }

  explicit AigpAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  AigpAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AigpAttribute& from);
  AigpAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, AigpAttribute&& from) noexcept
      : AigpAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTlvsFieldNumber = 1,
  };
  // repeated .google.protobuf.Any tlvs = 1;
  [[nodiscard]] int tlvs_size()
      const;
  private:
  int _internal_tlvs_size() const;

  public:
  void clear_tlvs() ;
  [[nodiscard]] const ::google::protobuf::Any& tlvs(int index) const;
  [[nodiscard]] ::google::protobuf::Any* PROTOBUF_NONNULL mutable_tlvs(int index);
  ::google::protobuf::Any* PROTOBUF_NONNULL add_tlvs();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
  tlvs() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
  mutable_tlvs();

  private:
  const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& _internal_tlvs() const;
  ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL _internal_mutable_tlvs();

  public:
  // @@protoc_insertion_point(class_scope:apipb.AigpAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const AigpAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::google::protobuf::Any > tlvs_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED TunnelEncapAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.TunnelEncapAttribute) */ {
 public:
  inline TunnelEncapAttribute() : TunnelEncapAttribute(nullptr) {}
  ~TunnelEncapAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(TunnelEncapAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(TunnelEncapAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr TunnelEncapAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline TunnelEncapAttribute(const TunnelEncapAttribute& from) : TunnelEncapAttribute(nullptr, from) {}
  inline TunnelEncapAttribute(TunnelEncapAttribute&& from) noexcept : TunnelEncapAttribute(nullptr, ::std::move(from)) {}
  inline TunnelEncapAttribute& operator=(const TunnelEncapAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline TunnelEncapAttribute& operator=(TunnelEncapAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const TunnelEncapAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<TunnelEncapAttribute>(&TunnelEncapAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 93;
  friend void swap(TunnelEncapAttribute& a, TunnelEncapAttribute& b) { a.Swap(&b); }
  inline void Swap(TunnelEncapAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(TunnelEncapAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] TunnelEncapAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<TunnelEncapAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const TunnelEncapAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const TunnelEncapAttribute& from) { TunnelEncapAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(TunnelEncapAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.TunnelEncapAttribute"; }

  explicit TunnelEncapAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  TunnelEncapAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TunnelEncapAttribute& from);
  TunnelEncapAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, TunnelEncapAttribute&& from) noexcept
      : TunnelEncapAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kTlvsFieldNumber = 1,
  };
  // repeated .apipb.TunnelEncapTLV tlvs = 1;
  [[nodiscard]] int tlvs_size()
      const;
  private:
  int _internal_tlvs_size() const;

  public:
  void clear_tlvs() ;
  [[nodiscard]] const ::apipb::TunnelEncapTLV& tlvs(int index) const;
  [[nodiscard]] ::apipb::TunnelEncapTLV* PROTOBUF_NONNULL mutable_tlvs(int index);
  ::apipb::TunnelEncapTLV* PROTOBUF_NONNULL add_tlvs();
  [[nodiscard]] const ::google::protobuf::RepeatedPtrField<::apipb::TunnelEncapTLV>&
  tlvs() const;
  [[nodiscard]] ::google::protobuf::RepeatedPtrField<::apipb::TunnelEncapTLV>* PROTOBUF_NONNULL
  mutable_tlvs();

  private:
  const ::google::protobuf::RepeatedPtrField<::apipb::TunnelEncapTLV>& _internal_tlvs() const;
  ::google::protobuf::RepeatedPtrField<::apipb::TunnelEncapTLV>* PROTOBUF_NONNULL _internal_mutable_tlvs();

  public:
  // @@protoc_insertion_point(class_scope:apipb.TunnelEncapAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const TunnelEncapAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::apipb::TunnelEncapTLV > tlvs_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<::uint32_t, ::google::protobuf::Message,
                             ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
                             ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<::uint32_t, ::google::protobuf::Message,
                      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse();
  template <typename = void>
  explicit constexpr SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);
  explicit SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_message_globals() {
    return &SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse_globals_;
  }


  static constexpr auto InternalGenerateClassData_(
      const ::google::protobuf::MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_attribute_2eproto;
  friend ::google::protobuf::internal::PrivateAccess;
  friend SRv6L3ServiceTLV_SubTlvsEntry_DoNotUseGlobalsTypeInternal;

  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();
};
// -------------------------------------------------------------------

class PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<::uint32_t, ::google::protobuf::Message,
                             ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
                             ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<::uint32_t, ::google::protobuf::Message,
                      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse();
  template <typename = void>
  explicit constexpr SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);
  explicit SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_message_globals() {
    return &SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse_globals_;
  }


  static constexpr auto InternalGenerateClassData_(
      const ::google::protobuf::MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_attribute_2eproto;
  friend ::google::protobuf::internal::PrivateAccess;
  friend SRv6L2ServiceTLV_SubTlvsEntry_DoNotUseGlobalsTypeInternal;

  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();
};
// -------------------------------------------------------------------

class PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse final
    : public ::google::protobuf::internal::MapEntry<::uint32_t, ::google::protobuf::Message,
                             ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
                             ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE> {
 public:
  using SuperType =
      ::google::protobuf::internal::MapEntry<::uint32_t, ::google::protobuf::Message,
                      ::google::protobuf::internal::WireFormatLite::TYPE_UINT32,
                      ::google::protobuf::internal::WireFormatLite::TYPE_MESSAGE>;
  SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse();
  template <typename = void>
  explicit constexpr SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);
  explicit SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr const void* PROTOBUF_NONNULL internal_message_globals() {
    return &SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse_globals_;
  }


  static constexpr auto InternalGenerateClassData_(
      const ::google::protobuf::MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

 private:
  friend class ::google::protobuf::MessageLite;
  friend struct ::TableStruct_attribute_2eproto;
  friend ::google::protobuf::internal::PrivateAccess;
  friend SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUseGlobalsTypeInternal;

  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsAttributeNode final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsAttributeNode) */ {
 public:
  inline LsAttributeNode() : LsAttributeNode(nullptr) {}
  ~LsAttributeNode() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsAttributeNode* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsAttributeNode));
  }
#endif

  template <typename = void>
  explicit constexpr LsAttributeNode(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsAttributeNode(const LsAttributeNode& from) : LsAttributeNode(nullptr, from) {}
  inline LsAttributeNode(LsAttributeNode&& from) noexcept : LsAttributeNode(nullptr, ::std::move(from)) {}
  inline LsAttributeNode& operator=(const LsAttributeNode& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsAttributeNode& operator=(LsAttributeNode&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsAttributeNode& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsAttributeNode>(&LsAttributeNode_globals_);
  }
  static constexpr int kIndexInFileMessages = 107;
  friend void swap(LsAttributeNode& a, LsAttributeNode& b) { a.Swap(&b); }
  inline void Swap(LsAttributeNode* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsAttributeNode* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsAttributeNode* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsAttributeNode>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsAttributeNode& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsAttributeNode& from) { LsAttributeNode::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsAttributeNode* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsAttributeNode"; }

  explicit LsAttributeNode(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsAttributeNode(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsAttributeNode& from);
  LsAttributeNode(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsAttributeNode&& from) noexcept
      : LsAttributeNode(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNameFieldNumber = 1,
    kLocalRouterIdFieldNumber = 3,
    kLocalRouterIdV6FieldNumber = 4,
    kIsisAreaFieldNumber = 5,
    kOpaqueFieldNumber = 6,
    kSrAlgorithmsFieldNumber = 8,
    kFlagsFieldNumber = 2,
    kSrCapabilitiesFieldNumber = 7,
    kSrLocalBlockFieldNumber = 9,
  };
  // string name = 1;
  void clear_name() ;
  [[nodiscard]] const ::std::string& name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_name();

  public:
  // string local_router_id = 3;
  void clear_local_router_id() ;
  [[nodiscard]] const ::std::string& local_router_id() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_local_router_id(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_local_router_id();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_local_router_id();
  void set_allocated_local_router_id(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_local_router_id() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_local_router_id(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_local_router_id();

  public:
  // string local_router_id_v6 = 4;
  void clear_local_router_id_v6() ;
  [[nodiscard]] const ::std::string& local_router_id_v6() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_local_router_id_v6(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_local_router_id_v6();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_local_router_id_v6();
  void set_allocated_local_router_id_v6(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_local_router_id_v6() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_local_router_id_v6(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_local_router_id_v6();

  public:
  // bytes isis_area = 5;
  void clear_isis_area() ;
  [[nodiscard]] const ::std::string& isis_area() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_isis_area(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_isis_area();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_isis_area();
  void set_allocated_isis_area(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_isis_area() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_isis_area(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_isis_area();

  public:
  // bytes opaque = 6;
  void clear_opaque() ;
  [[nodiscard]] const ::std::string& opaque() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_opaque(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_opaque();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_opaque();
  void set_allocated_opaque(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_opaque() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_opaque(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_opaque();

  public:
  // bytes sr_algorithms = 8;
  void clear_sr_algorithms() ;
  [[nodiscard]] const ::std::string& sr_algorithms() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_sr_algorithms(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_sr_algorithms();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_sr_algorithms();
  void set_allocated_sr_algorithms(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_sr_algorithms() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_sr_algorithms(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_sr_algorithms();

  public:
  // .apipb.LsNodeFlags flags = 2;
  [[nodiscard]] bool has_flags()
      const;
  void clear_flags() ;
  [[nodiscard]] const ::apipb::LsNodeFlags& flags() const;
  [[nodiscard]] ::apipb::LsNodeFlags* PROTOBUF_NULLABLE release_flags();
  ::apipb::LsNodeFlags* PROTOBUF_NONNULL mutable_flags();
  void set_allocated_flags(::apipb::LsNodeFlags* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_flags(::apipb::LsNodeFlags* PROTOBUF_NULLABLE value);
  ::apipb::LsNodeFlags* PROTOBUF_NULLABLE unsafe_arena_release_flags();

  private:
  const ::apipb::LsNodeFlags& _internal_flags() const;
  ::apipb::LsNodeFlags* PROTOBUF_NONNULL _internal_mutable_flags();

  public:
  // .apipb.LsSrCapabilities sr_capabilities = 7;
  [[nodiscard]] bool has_sr_capabilities()
      const;
  void clear_sr_capabilities() ;
  [[nodiscard]] const ::apipb::LsSrCapabilities& sr_capabilities() const;
  [[nodiscard]] ::apipb::LsSrCapabilities* PROTOBUF_NULLABLE release_sr_capabilities();
  ::apipb::LsSrCapabilities* PROTOBUF_NONNULL mutable_sr_capabilities();
  void set_allocated_sr_capabilities(::apipb::LsSrCapabilities* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_sr_capabilities(::apipb::LsSrCapabilities* PROTOBUF_NULLABLE value);
  ::apipb::LsSrCapabilities* PROTOBUF_NULLABLE unsafe_arena_release_sr_capabilities();

  private:
  const ::apipb::LsSrCapabilities& _internal_sr_capabilities() const;
  ::apipb::LsSrCapabilities* PROTOBUF_NONNULL _internal_mutable_sr_capabilities();

  public:
  // .apipb.LsSrLocalBlock sr_local_block = 9;
  [[nodiscard]] bool has_sr_local_block()
      const;
  void clear_sr_local_block() ;
  [[nodiscard]] const ::apipb::LsSrLocalBlock& sr_local_block() const;
  [[nodiscard]] ::apipb::LsSrLocalBlock* PROTOBUF_NULLABLE release_sr_local_block();
  ::apipb::LsSrLocalBlock* PROTOBUF_NONNULL mutable_sr_local_block();
  void set_allocated_sr_local_block(::apipb::LsSrLocalBlock* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_sr_local_block(::apipb::LsSrLocalBlock* PROTOBUF_NULLABLE value);
  ::apipb::LsSrLocalBlock* PROTOBUF_NULLABLE unsafe_arena_release_sr_local_block();

  private:
  const ::apipb::LsSrLocalBlock& _internal_sr_local_block() const;
  ::apipb::LsSrLocalBlock* PROTOBUF_NONNULL _internal_mutable_sr_local_block();

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsAttributeNode)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<4, 9,
                          3, 75,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsAttributeNode& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr local_router_id_;
    ::google::protobuf::internal::ArenaStringPtr local_router_id_v6_;
    ::google::protobuf::internal::ArenaStringPtr isis_area_;
    ::google::protobuf::internal::ArenaStringPtr opaque_;
    ::google::protobuf::internal::ArenaStringPtr sr_algorithms_;
    ::apipb::LsNodeFlags* PROTOBUF_NULLABLE flags_;
    ::apipb::LsSrCapabilities* PROTOBUF_NULLABLE sr_capabilities_;
    ::apipb::LsSrLocalBlock* PROTOBUF_NULLABLE sr_local_block_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsAttributeBgpPeerSegment final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsAttributeBgpPeerSegment) */ {
 public:
  inline LsAttributeBgpPeerSegment() : LsAttributeBgpPeerSegment(nullptr) {}
  ~LsAttributeBgpPeerSegment() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsAttributeBgpPeerSegment* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsAttributeBgpPeerSegment));
  }
#endif

  template <typename = void>
  explicit constexpr LsAttributeBgpPeerSegment(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsAttributeBgpPeerSegment(const LsAttributeBgpPeerSegment& from) : LsAttributeBgpPeerSegment(nullptr, from) {}
  inline LsAttributeBgpPeerSegment(LsAttributeBgpPeerSegment&& from) noexcept : LsAttributeBgpPeerSegment(nullptr, ::std::move(from)) {}
  inline LsAttributeBgpPeerSegment& operator=(const LsAttributeBgpPeerSegment& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsAttributeBgpPeerSegment& operator=(LsAttributeBgpPeerSegment&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsAttributeBgpPeerSegment& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsAttributeBgpPeerSegment>(&LsAttributeBgpPeerSegment_globals_);
  }
  static constexpr int kIndexInFileMessages = 112;
  friend void swap(LsAttributeBgpPeerSegment& a, LsAttributeBgpPeerSegment& b) { a.Swap(&b); }
  inline void Swap(LsAttributeBgpPeerSegment* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsAttributeBgpPeerSegment* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsAttributeBgpPeerSegment* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsAttributeBgpPeerSegment>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsAttributeBgpPeerSegment& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsAttributeBgpPeerSegment& from) { LsAttributeBgpPeerSegment::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsAttributeBgpPeerSegment* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsAttributeBgpPeerSegment"; }

  explicit LsAttributeBgpPeerSegment(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsAttributeBgpPeerSegment(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsAttributeBgpPeerSegment& from);
  LsAttributeBgpPeerSegment(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsAttributeBgpPeerSegment&& from) noexcept
      : LsAttributeBgpPeerSegment(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBgpPeerNodeSidFieldNumber = 1,
    kBgpPeerAdjacencySidFieldNumber = 2,
    kBgpPeerSetSidFieldNumber = 3,
  };
  // .apipb.LsBgpPeerSegmentSID bgp_peer_node_sid = 1;
  [[nodiscard]] bool has_bgp_peer_node_sid()
      const;
  void clear_bgp_peer_node_sid() ;
  [[nodiscard]] const ::apipb::LsBgpPeerSegmentSID& bgp_peer_node_sid() const;
  [[nodiscard]] ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE release_bgp_peer_node_sid();
  ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL mutable_bgp_peer_node_sid();
  void set_allocated_bgp_peer_node_sid(::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bgp_peer_node_sid(::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value);
  ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE unsafe_arena_release_bgp_peer_node_sid();

  private:
  const ::apipb::LsBgpPeerSegmentSID& _internal_bgp_peer_node_sid() const;
  ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL _internal_mutable_bgp_peer_node_sid();

  public:
  // .apipb.LsBgpPeerSegmentSID bgp_peer_adjacency_sid = 2;
  [[nodiscard]] bool has_bgp_peer_adjacency_sid()
      const;
  void clear_bgp_peer_adjacency_sid() ;
  [[nodiscard]] const ::apipb::LsBgpPeerSegmentSID& bgp_peer_adjacency_sid() const;
  [[nodiscard]] ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE release_bgp_peer_adjacency_sid();
  ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL mutable_bgp_peer_adjacency_sid();
  void set_allocated_bgp_peer_adjacency_sid(::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bgp_peer_adjacency_sid(::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value);
  ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE unsafe_arena_release_bgp_peer_adjacency_sid();

  private:
  const ::apipb::LsBgpPeerSegmentSID& _internal_bgp_peer_adjacency_sid() const;
  ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL _internal_mutable_bgp_peer_adjacency_sid();

  public:
  // .apipb.LsBgpPeerSegmentSID bgp_peer_set_sid = 3;
  [[nodiscard]] bool has_bgp_peer_set_sid()
      const;
  void clear_bgp_peer_set_sid() ;
  [[nodiscard]] const ::apipb::LsBgpPeerSegmentSID& bgp_peer_set_sid() const;
  [[nodiscard]] ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE release_bgp_peer_set_sid();
  ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL mutable_bgp_peer_set_sid();
  void set_allocated_bgp_peer_set_sid(::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bgp_peer_set_sid(::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value);
  ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE unsafe_arena_release_bgp_peer_set_sid();

  private:
  const ::apipb::LsBgpPeerSegmentSID& _internal_bgp_peer_set_sid() const;
  ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL _internal_mutable_bgp_peer_set_sid();

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsAttributeBgpPeerSegment)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          3, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsAttributeBgpPeerSegment& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE bgp_peer_node_sid_;
    ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE bgp_peer_adjacency_sid_;
    ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE bgp_peer_set_sid_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6L3ServiceTLV final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRv6L3ServiceTLV) */ {
 public:
  inline SRv6L3ServiceTLV() : SRv6L3ServiceTLV(nullptr) {}
  ~SRv6L3ServiceTLV() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRv6L3ServiceTLV* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRv6L3ServiceTLV));
  }
#endif

  template <typename = void>
  explicit constexpr SRv6L3ServiceTLV(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRv6L3ServiceTLV(const SRv6L3ServiceTLV& from) : SRv6L3ServiceTLV(nullptr, from) {}
  inline SRv6L3ServiceTLV(SRv6L3ServiceTLV&& from) noexcept : SRv6L3ServiceTLV(nullptr, ::std::move(from)) {}
  inline SRv6L3ServiceTLV& operator=(const SRv6L3ServiceTLV& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRv6L3ServiceTLV& operator=(SRv6L3ServiceTLV&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRv6L3ServiceTLV& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRv6L3ServiceTLV>(&SRv6L3ServiceTLV_globals_);
  }
  static constexpr int kIndexInFileMessages = 121;
  friend void swap(SRv6L3ServiceTLV& a, SRv6L3ServiceTLV& b) { a.Swap(&b); }
  inline void Swap(SRv6L3ServiceTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRv6L3ServiceTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRv6L3ServiceTLV* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRv6L3ServiceTLV>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRv6L3ServiceTLV& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRv6L3ServiceTLV& from) { SRv6L3ServiceTLV::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRv6L3ServiceTLV* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRv6L3ServiceTLV"; }

  explicit SRv6L3ServiceTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRv6L3ServiceTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRv6L3ServiceTLV& from);
  SRv6L3ServiceTLV(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRv6L3ServiceTLV&& from) noexcept
      : SRv6L3ServiceTLV(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSubTlvsFieldNumber = 1,
  };
  // map<uint32, .apipb.SRv6TLV> sub_tlvs = 1;
  [[nodiscard]] int sub_tlvs_size()
      const;
  private:
  int _internal_sub_tlvs_size() const;

  public:
  void clear_sub_tlvs() ;
  [[nodiscard]] const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& sub_tlvs() const;
  [[nodiscard]] ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL mutable_sub_tlvs();

  private:
  const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& _internal_sub_tlvs() const;
  ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL _internal_mutable_sub_tlvs();

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRv6L3ServiceTLV)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRv6L3ServiceTLV& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::MapField<SRv6L3ServiceTLV_SubTlvsEntry_DoNotUse, ::uint32_t, ::apipb::SRv6TLV> sub_tlvs_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6L2ServiceTLV final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRv6L2ServiceTLV) */ {
 public:
  inline SRv6L2ServiceTLV() : SRv6L2ServiceTLV(nullptr) {}
  ~SRv6L2ServiceTLV() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRv6L2ServiceTLV* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRv6L2ServiceTLV));
  }
#endif

  template <typename = void>
  explicit constexpr SRv6L2ServiceTLV(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRv6L2ServiceTLV(const SRv6L2ServiceTLV& from) : SRv6L2ServiceTLV(nullptr, from) {}
  inline SRv6L2ServiceTLV(SRv6L2ServiceTLV&& from) noexcept : SRv6L2ServiceTLV(nullptr, ::std::move(from)) {}
  inline SRv6L2ServiceTLV& operator=(const SRv6L2ServiceTLV& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRv6L2ServiceTLV& operator=(SRv6L2ServiceTLV&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRv6L2ServiceTLV& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRv6L2ServiceTLV>(&SRv6L2ServiceTLV_globals_);
  }
  static constexpr int kIndexInFileMessages = 123;
  friend void swap(SRv6L2ServiceTLV& a, SRv6L2ServiceTLV& b) { a.Swap(&b); }
  inline void Swap(SRv6L2ServiceTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRv6L2ServiceTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRv6L2ServiceTLV* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRv6L2ServiceTLV>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRv6L2ServiceTLV& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRv6L2ServiceTLV& from) { SRv6L2ServiceTLV::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRv6L2ServiceTLV* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRv6L2ServiceTLV"; }

  explicit SRv6L2ServiceTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRv6L2ServiceTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRv6L2ServiceTLV& from);
  SRv6L2ServiceTLV(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRv6L2ServiceTLV&& from) noexcept
      : SRv6L2ServiceTLV(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSubTlvsFieldNumber = 1,
  };
  // map<uint32, .apipb.SRv6TLV> sub_tlvs = 1;
  [[nodiscard]] int sub_tlvs_size()
      const;
  private:
  int _internal_sub_tlvs_size() const;

  public:
  void clear_sub_tlvs() ;
  [[nodiscard]] const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& sub_tlvs() const;
  [[nodiscard]] ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL mutable_sub_tlvs();

  private:
  const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& _internal_sub_tlvs() const;
  ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL _internal_mutable_sub_tlvs();

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRv6L2ServiceTLV)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRv6L2ServiceTLV& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::MapField<SRv6L2ServiceTLV_SubTlvsEntry_DoNotUse, ::uint32_t, ::apipb::SRv6TLV> sub_tlvs_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED SRv6InformationSubTLV final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.SRv6InformationSubTLV) */ {
 public:
  inline SRv6InformationSubTLV() : SRv6InformationSubTLV(nullptr) {}
  ~SRv6InformationSubTLV() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(SRv6InformationSubTLV* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(SRv6InformationSubTLV));
  }
#endif

  template <typename = void>
  explicit constexpr SRv6InformationSubTLV(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline SRv6InformationSubTLV(const SRv6InformationSubTLV& from) : SRv6InformationSubTLV(nullptr, from) {}
  inline SRv6InformationSubTLV(SRv6InformationSubTLV&& from) noexcept : SRv6InformationSubTLV(nullptr, ::std::move(from)) {}
  inline SRv6InformationSubTLV& operator=(const SRv6InformationSubTLV& from) {
    CopyFrom(from);
    return *this;
  }
  inline SRv6InformationSubTLV& operator=(SRv6InformationSubTLV&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const SRv6InformationSubTLV& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<SRv6InformationSubTLV>(&SRv6InformationSubTLV_globals_);
  }
  static constexpr int kIndexInFileMessages = 119;
  friend void swap(SRv6InformationSubTLV& a, SRv6InformationSubTLV& b) { a.Swap(&b); }
  inline void Swap(SRv6InformationSubTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(SRv6InformationSubTLV* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] SRv6InformationSubTLV* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<SRv6InformationSubTLV>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const SRv6InformationSubTLV& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const SRv6InformationSubTLV& from) { SRv6InformationSubTLV::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(SRv6InformationSubTLV* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.SRv6InformationSubTLV"; }

  explicit SRv6InformationSubTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  SRv6InformationSubTLV(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const SRv6InformationSubTLV& from);
  SRv6InformationSubTLV(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, SRv6InformationSubTLV&& from) noexcept
      : SRv6InformationSubTLV(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kSidFieldNumber = 1,
    kFlagsFieldNumber = 2,
    kEndpointBehaviorFieldNumber = 3,
    kSubSubTlvsFieldNumber = 4,
  };
  // bytes sid = 1;
  void clear_sid() ;
  [[nodiscard]] const ::std::string& sid() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_sid(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_sid();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_sid();
  void set_allocated_sid(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_sid() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_sid(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_sid();

  public:
  // .apipb.SRv6SIDFlags flags = 2;
  [[nodiscard]] bool has_flags()
      const;
  void clear_flags() ;
  [[nodiscard]] const ::apipb::SRv6SIDFlags& flags() const;
  [[nodiscard]] ::apipb::SRv6SIDFlags* PROTOBUF_NULLABLE release_flags();
  ::apipb::SRv6SIDFlags* PROTOBUF_NONNULL mutable_flags();
  void set_allocated_flags(::apipb::SRv6SIDFlags* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_flags(::apipb::SRv6SIDFlags* PROTOBUF_NULLABLE value);
  ::apipb::SRv6SIDFlags* PROTOBUF_NULLABLE unsafe_arena_release_flags();

  private:
  const ::apipb::SRv6SIDFlags& _internal_flags() const;
  ::apipb::SRv6SIDFlags* PROTOBUF_NONNULL _internal_mutable_flags();

  public:
  // uint32 endpoint_behavior = 3;
  void clear_endpoint_behavior() ;
  [[nodiscard]] ::uint32_t endpoint_behavior() const;
  void set_endpoint_behavior(::uint32_t value);

  private:
  ::uint32_t _internal_endpoint_behavior() const;
  void _internal_set_endpoint_behavior(::uint32_t value);

  public:
  // map<uint32, .apipb.SRv6TLV> sub_sub_tlvs = 4;
  [[nodiscard]] int sub_sub_tlvs_size()
      const;
  private:
  int _internal_sub_sub_tlvs_size() const;

  public:
  void clear_sub_sub_tlvs() ;
  [[nodiscard]] const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& sub_sub_tlvs() const;
  [[nodiscard]] ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL mutable_sub_sub_tlvs();

  private:
  const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& _internal_sub_sub_tlvs() const;
  ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL _internal_mutable_sub_sub_tlvs();

  public:
  // @@protoc_insertion_point(class_scope:apipb.SRv6InformationSubTLV)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          3, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const SRv6InformationSubTLV& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr sid_;
    ::apipb::SRv6SIDFlags* PROTOBUF_NULLABLE flags_;
    ::uint32_t endpoint_behavior_;
    ::google::protobuf::internal::MapField<SRv6InformationSubTLV_SubSubTlvsEntry_DoNotUse, ::uint32_t, ::apipb::SRv6TLV> sub_sub_tlvs_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};
// -------------------------------------------------------------------

class  PROTOBUF_FUTURE_ADD_EARLY_WARN_UNUSED LsAttribute final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:apipb.LsAttribute) */ {
 public:
  inline LsAttribute() : LsAttribute(nullptr) {}
  ~LsAttribute() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(LsAttribute* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(LsAttribute));
  }
#endif

  template <typename = void>
  explicit constexpr LsAttribute(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

  inline LsAttribute(const LsAttribute& from) : LsAttribute(nullptr, from) {}
  inline LsAttribute(LsAttribute&& from) noexcept : LsAttribute(nullptr, ::std::move(from)) {}
  inline LsAttribute& operator=(const LsAttribute& from) {
    CopyFrom(from);
    return *this;
  }
  inline LsAttribute& operator=(LsAttribute&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  [[nodiscard]] inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  [[nodiscard]] inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  [[nodiscard]] static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL
  GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  [[nodiscard]] static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  [[nodiscard]] static const LsAttribute& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<LsAttribute>(&LsAttribute_globals_);
  }
  static constexpr int kIndexInFileMessages = 113;
  friend void swap(LsAttribute& a, LsAttribute& b) { a.Swap(&b); }
  inline void Swap(LsAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(LsAttribute* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  [[nodiscard]] LsAttribute* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<LsAttribute>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const LsAttribute& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const LsAttribute& from) { LsAttribute::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  [[nodiscard]] bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  [[nodiscard]] static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  [[nodiscard]] static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  [[nodiscard]] ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] ::size_t ByteSizeLong() const final;
  [[nodiscard]] ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  [[nodiscard]] int GetCachedSize() const {
    return _impl_._cached_size_.Get();
  }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(LsAttribute* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "apipb.LsAttribute"; }

  explicit LsAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  LsAttribute(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const LsAttribute& from);
  LsAttribute(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, LsAttribute&& from) noexcept
      : LsAttribute(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  [[nodiscard]] ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNodeFieldNumber = 1,
    kLinkFieldNumber = 2,
    kPrefixFieldNumber = 3,
    kBgpPeerSegmentFieldNumber = 4,
  };
  // .apipb.LsAttributeNode node = 1;
  [[nodiscard]] bool has_node()
      const;
  void clear_node() ;
  [[nodiscard]] const ::apipb::LsAttributeNode& node() const;
  [[nodiscard]] ::apipb::LsAttributeNode* PROTOBUF_NULLABLE release_node();
  ::apipb::LsAttributeNode* PROTOBUF_NONNULL mutable_node();
  void set_allocated_node(::apipb::LsAttributeNode* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_node(::apipb::LsAttributeNode* PROTOBUF_NULLABLE value);
  ::apipb::LsAttributeNode* PROTOBUF_NULLABLE unsafe_arena_release_node();

  private:
  const ::apipb::LsAttributeNode& _internal_node() const;
  ::apipb::LsAttributeNode* PROTOBUF_NONNULL _internal_mutable_node();

  public:
  // .apipb.LsAttributeLink link = 2;
  [[nodiscard]] bool has_link()
      const;
  void clear_link() ;
  [[nodiscard]] const ::apipb::LsAttributeLink& link() const;
  [[nodiscard]] ::apipb::LsAttributeLink* PROTOBUF_NULLABLE release_link();
  ::apipb::LsAttributeLink* PROTOBUF_NONNULL mutable_link();
  void set_allocated_link(::apipb::LsAttributeLink* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_link(::apipb::LsAttributeLink* PROTOBUF_NULLABLE value);
  ::apipb::LsAttributeLink* PROTOBUF_NULLABLE unsafe_arena_release_link();

  private:
  const ::apipb::LsAttributeLink& _internal_link() const;
  ::apipb::LsAttributeLink* PROTOBUF_NONNULL _internal_mutable_link();

  public:
  // .apipb.LsAttributePrefix prefix = 3;
  [[nodiscard]] bool has_prefix()
      const;
  void clear_prefix() ;
  [[nodiscard]] const ::apipb::LsAttributePrefix& prefix() const;
  [[nodiscard]] ::apipb::LsAttributePrefix* PROTOBUF_NULLABLE release_prefix();
  ::apipb::LsAttributePrefix* PROTOBUF_NONNULL mutable_prefix();
  void set_allocated_prefix(::apipb::LsAttributePrefix* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_prefix(::apipb::LsAttributePrefix* PROTOBUF_NULLABLE value);
  ::apipb::LsAttributePrefix* PROTOBUF_NULLABLE unsafe_arena_release_prefix();

  private:
  const ::apipb::LsAttributePrefix& _internal_prefix() const;
  ::apipb::LsAttributePrefix* PROTOBUF_NONNULL _internal_mutable_prefix();

  public:
  // .apipb.LsAttributeBgpPeerSegment bgp_peer_segment = 4;
  [[nodiscard]] bool has_bgp_peer_segment()
      const;
  void clear_bgp_peer_segment() ;
  [[nodiscard]] const ::apipb::LsAttributeBgpPeerSegment& bgp_peer_segment() const;
  [[nodiscard]] ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NULLABLE release_bgp_peer_segment();
  ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NONNULL mutable_bgp_peer_segment();
  void set_allocated_bgp_peer_segment(::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bgp_peer_segment(::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NULLABLE value);
  ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NULLABLE unsafe_arena_release_bgp_peer_segment();

  private:
  const ::apipb::LsAttributeBgpPeerSegment& _internal_bgp_peer_segment() const;
  ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NONNULL _internal_mutable_bgp_peer_segment();

  public:
  // @@protoc_insertion_point(class_scope:apipb.LsAttribute)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 4,
                          4, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const LsAttribute& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::apipb::LsAttributeNode* PROTOBUF_NULLABLE node_;
    ::apipb::LsAttributeLink* PROTOBUF_NULLABLE link_;
    ::apipb::LsAttributePrefix* PROTOBUF_NULLABLE prefix_;
    ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NULLABLE bgp_peer_segment_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_attribute_2eproto;
};

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




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


#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// OriginAttribute

// uint32 origin = 1;
inline void OriginAttribute::clear_origin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.origin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t OriginAttribute::origin() const {
  // @@protoc_insertion_point(field_get:apipb.OriginAttribute.origin)
  return _internal_origin();
}
inline void OriginAttribute::set_origin(::uint32_t value) {
  _internal_set_origin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.OriginAttribute.origin)
}
inline ::uint32_t OriginAttribute::_internal_origin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.origin_;
}
inline void OriginAttribute::_internal_set_origin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.origin_ = value;
}

// -------------------------------------------------------------------

// AsSegment

// .apipb.AsSegment.Type type = 1;
inline void AsSegment::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::apipb::AsSegment_Type AsSegment::type() const {
  // @@protoc_insertion_point(field_get:apipb.AsSegment.type)
  return _internal_type();
}
inline void AsSegment::set_type(::apipb::AsSegment_Type value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.AsSegment.type)
}
inline ::apipb::AsSegment_Type AsSegment::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::apipb::AsSegment_Type>(_impl_.type_);
}
inline void AsSegment::_internal_set_type(::apipb::AsSegment_Type value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// repeated uint32 numbers = 2;
inline int AsSegment::_internal_numbers_size() const {
  return _internal_numbers().size();
}
inline int AsSegment::numbers_size() const {
  return _internal_numbers_size();
}
inline void AsSegment::clear_numbers() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.numbers_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t AsSegment::numbers(int index) const {
  // @@protoc_insertion_point(field_get:apipb.AsSegment.numbers)
  return _internal_numbers().Get(index);
}
inline void AsSegment::set_numbers(int index, ::uint32_t value) {
  _internal_mutable_numbers()->Set(index, value);
  // @@protoc_insertion_point(field_set:apipb.AsSegment.numbers)
}
inline void AsSegment::add_numbers(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_numbers()
      ->InternalAddWithArena<const ::google::protobuf::MessageLite*>(
          internal_visibility(), this, value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.AsSegment.numbers)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& AsSegment::numbers() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.AsSegment.numbers)
  return _internal_numbers();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL AsSegment::mutable_numbers()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.AsSegment.numbers)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_numbers();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
AsSegment::_internal_numbers() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.numbers_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
AsSegment::_internal_mutable_numbers() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.numbers_;
}

// -------------------------------------------------------------------

// AsPathAttribute

// repeated .apipb.AsSegment segments = 1;
inline int AsPathAttribute::_internal_segments_size() const {
  return _internal_segments().size();
}
inline int AsPathAttribute::segments_size() const {
  return _internal_segments_size();
}
inline void AsPathAttribute::clear_segments() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.segments_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::AsSegment& AsPathAttribute::segments(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.AsPathAttribute.segments)
  return _internal_segments().Get(index);
}
inline ::apipb::AsSegment* PROTOBUF_NONNULL AsPathAttribute::mutable_segments(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.AsPathAttribute.segments)
  return _internal_mutable_segments()->Mutable(index);
}
inline ::apipb::AsSegment* PROTOBUF_NONNULL AsPathAttribute::add_segments()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::apipb::AsSegment* _add =
      _internal_mutable_segments()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.AsPathAttribute.segments)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>& AsPathAttribute::segments() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.AsPathAttribute.segments)
  return _internal_segments();
}
inline ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>* PROTOBUF_NONNULL
AsPathAttribute::mutable_segments() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.AsPathAttribute.segments)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_segments();
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>&
AsPathAttribute::_internal_segments() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.segments_;
}
inline ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>* PROTOBUF_NONNULL
AsPathAttribute::_internal_mutable_segments() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.segments_;
}

// -------------------------------------------------------------------

// NextHopAttribute

// string next_hop = 1;
inline void NextHopAttribute::clear_next_hop() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.next_hop_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& NextHopAttribute::next_hop() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.NextHopAttribute.next_hop)
  return _internal_next_hop();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void NextHopAttribute::set_next_hop(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.next_hop_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.NextHopAttribute.next_hop)
}
inline ::std::string* PROTOBUF_NONNULL NextHopAttribute::mutable_next_hop()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_next_hop();
  // @@protoc_insertion_point(field_mutable:apipb.NextHopAttribute.next_hop)
  return _s;
}
inline const ::std::string& NextHopAttribute::_internal_next_hop() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.next_hop_.Get();
}
inline void NextHopAttribute::_internal_set_next_hop(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.next_hop_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL NextHopAttribute::_internal_mutable_next_hop() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.next_hop_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE NextHopAttribute::release_next_hop() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.NextHopAttribute.next_hop)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.next_hop_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.next_hop_.Set("", GetArena());
  }
  return released;
}
inline void NextHopAttribute::set_allocated_next_hop(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.next_hop_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.next_hop_.IsDefault()) {
    _impl_.next_hop_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.NextHopAttribute.next_hop)
}

// -------------------------------------------------------------------

// MultiExitDiscAttribute

// uint32 med = 1;
inline void MultiExitDiscAttribute::clear_med() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.med_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t MultiExitDiscAttribute::med() const {
  // @@protoc_insertion_point(field_get:apipb.MultiExitDiscAttribute.med)
  return _internal_med();
}
inline void MultiExitDiscAttribute::set_med(::uint32_t value) {
  _internal_set_med(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.MultiExitDiscAttribute.med)
}
inline ::uint32_t MultiExitDiscAttribute::_internal_med() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.med_;
}
inline void MultiExitDiscAttribute::_internal_set_med(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.med_ = value;
}

// -------------------------------------------------------------------

// LocalPrefAttribute

// uint32 local_pref = 1;
inline void LocalPrefAttribute::clear_local_pref() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_pref_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t LocalPrefAttribute::local_pref() const {
  // @@protoc_insertion_point(field_get:apipb.LocalPrefAttribute.local_pref)
  return _internal_local_pref();
}
inline void LocalPrefAttribute::set_local_pref(::uint32_t value) {
  _internal_set_local_pref(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.LocalPrefAttribute.local_pref)
}
inline ::uint32_t LocalPrefAttribute::_internal_local_pref() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_pref_;
}
inline void LocalPrefAttribute::_internal_set_local_pref(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_pref_ = value;
}

// -------------------------------------------------------------------

// AtomicAggregateAttribute

// -------------------------------------------------------------------

// AggregatorAttribute

// uint32 asn = 1;
inline void AggregatorAttribute::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t AggregatorAttribute::asn() const {
  // @@protoc_insertion_point(field_get:apipb.AggregatorAttribute.asn)
  return _internal_asn();
}
inline void AggregatorAttribute::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.AggregatorAttribute.asn)
}
inline ::uint32_t AggregatorAttribute::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void AggregatorAttribute::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// string address = 2;
inline void AggregatorAttribute::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& AggregatorAttribute::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.AggregatorAttribute.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AggregatorAttribute::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.AggregatorAttribute.address)
}
inline ::std::string* PROTOBUF_NONNULL AggregatorAttribute::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.AggregatorAttribute.address)
  return _s;
}
inline const ::std::string& AggregatorAttribute::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void AggregatorAttribute::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AggregatorAttribute::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AggregatorAttribute::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.AggregatorAttribute.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void AggregatorAttribute::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.AggregatorAttribute.address)
}

// -------------------------------------------------------------------

// CommunitiesAttribute

// repeated uint32 communities = 1;
inline int CommunitiesAttribute::_internal_communities_size() const {
  return _internal_communities().size();
}
inline int CommunitiesAttribute::communities_size() const {
  return _internal_communities_size();
}
inline void CommunitiesAttribute::clear_communities() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.communities_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t CommunitiesAttribute::communities(int index) const {
  // @@protoc_insertion_point(field_get:apipb.CommunitiesAttribute.communities)
  return _internal_communities().Get(index);
}
inline void CommunitiesAttribute::set_communities(int index, ::uint32_t value) {
  _internal_mutable_communities()->Set(index, value);
  // @@protoc_insertion_point(field_set:apipb.CommunitiesAttribute.communities)
}
inline void CommunitiesAttribute::add_communities(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_communities()
      ->InternalAddWithArena<const ::google::protobuf::MessageLite*>(
          internal_visibility(), this, value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.CommunitiesAttribute.communities)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& CommunitiesAttribute::communities() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.CommunitiesAttribute.communities)
  return _internal_communities();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL CommunitiesAttribute::mutable_communities()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.CommunitiesAttribute.communities)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_communities();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
CommunitiesAttribute::_internal_communities() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.communities_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
CommunitiesAttribute::_internal_mutable_communities() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.communities_;
}

// -------------------------------------------------------------------

// OriginatorIdAttribute

// string id = 1;
inline void OriginatorIdAttribute::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& OriginatorIdAttribute::id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.OriginatorIdAttribute.id)
  return _internal_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OriginatorIdAttribute::set_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.OriginatorIdAttribute.id)
}
inline ::std::string* PROTOBUF_NONNULL OriginatorIdAttribute::mutable_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_id();
  // @@protoc_insertion_point(field_mutable:apipb.OriginatorIdAttribute.id)
  return _s;
}
inline const ::std::string& OriginatorIdAttribute::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_.Get();
}
inline void OriginatorIdAttribute::_internal_set_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OriginatorIdAttribute::_internal_mutable_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OriginatorIdAttribute::release_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.OriginatorIdAttribute.id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.id_.Set("", GetArena());
  }
  return released;
}
inline void OriginatorIdAttribute::set_allocated_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.id_.IsDefault()) {
    _impl_.id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.OriginatorIdAttribute.id)
}

// -------------------------------------------------------------------

// ClusterListAttribute

// repeated string ids = 1;
inline int ClusterListAttribute::_internal_ids_size() const {
  return _internal_ids().size();
}
inline int ClusterListAttribute::ids_size() const {
  return _internal_ids_size();
}
inline void ClusterListAttribute::clear_ids() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ids_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL ClusterListAttribute::add_ids()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_ids()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:apipb.ClusterListAttribute.ids)
  return _s;
}
inline const ::std::string& ClusterListAttribute::ids(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.ClusterListAttribute.ids)
  return _internal_ids().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL ClusterListAttribute::mutable_ids(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.ClusterListAttribute.ids)
  return _internal_mutable_ids()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void ClusterListAttribute::set_ids(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_ids()->Mutable(index),
      ::std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:apipb.ClusterListAttribute.ids)
}
template <typename Arg_, typename... Args_>
inline void ClusterListAttribute::add_ids(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_ids(), ::std::forward<Arg_>(value),
      args... );
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.ClusterListAttribute.ids)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& ClusterListAttribute::ids()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.ClusterListAttribute.ids)
  return _internal_ids();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
ClusterListAttribute::mutable_ids() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.ClusterListAttribute.ids)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_ids();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
ClusterListAttribute::_internal_ids() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ids_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
ClusterListAttribute::_internal_mutable_ids() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.ids_;
}

// -------------------------------------------------------------------

// IPAddressPrefix

// uint32 prefix_len = 1;
inline void IPAddressPrefix::clear_prefix_len() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_len_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t IPAddressPrefix::prefix_len() const {
  // @@protoc_insertion_point(field_get:apipb.IPAddressPrefix.prefix_len)
  return _internal_prefix_len();
}
inline void IPAddressPrefix::set_prefix_len(::uint32_t value) {
  _internal_set_prefix_len(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.IPAddressPrefix.prefix_len)
}
inline ::uint32_t IPAddressPrefix::_internal_prefix_len() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_len_;
}
inline void IPAddressPrefix::_internal_set_prefix_len(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_len_ = value;
}

// string prefix = 2;
inline void IPAddressPrefix::clear_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& IPAddressPrefix::prefix() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.IPAddressPrefix.prefix)
  return _internal_prefix();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void IPAddressPrefix::set_prefix(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.prefix_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.IPAddressPrefix.prefix)
}
inline ::std::string* PROTOBUF_NONNULL IPAddressPrefix::mutable_prefix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_prefix();
  // @@protoc_insertion_point(field_mutable:apipb.IPAddressPrefix.prefix)
  return _s;
}
inline const ::std::string& IPAddressPrefix::_internal_prefix() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_.Get();
}
inline void IPAddressPrefix::_internal_set_prefix(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL IPAddressPrefix::_internal_mutable_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.prefix_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE IPAddressPrefix::release_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.IPAddressPrefix.prefix)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.prefix_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.prefix_.Set("", GetArena());
  }
  return released;
}
inline void IPAddressPrefix::set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.prefix_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.prefix_.IsDefault()) {
    _impl_.prefix_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.IPAddressPrefix.prefix)
}

// -------------------------------------------------------------------

// LabeledIPAddressPrefix

// repeated uint32 labels = 1;
inline int LabeledIPAddressPrefix::_internal_labels_size() const {
  return _internal_labels().size();
}
inline int LabeledIPAddressPrefix::labels_size() const {
  return _internal_labels_size();
}
inline void LabeledIPAddressPrefix::clear_labels() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.labels_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t LabeledIPAddressPrefix::labels(int index) const {
  // @@protoc_insertion_point(field_get:apipb.LabeledIPAddressPrefix.labels)
  return _internal_labels().Get(index);
}
inline void LabeledIPAddressPrefix::set_labels(int index, ::uint32_t value) {
  _internal_mutable_labels()->Set(index, value);
  // @@protoc_insertion_point(field_set:apipb.LabeledIPAddressPrefix.labels)
}
inline void LabeledIPAddressPrefix::add_labels(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_labels()
      ->InternalAddWithArena<const ::google::protobuf::MessageLite*>(
          internal_visibility(), this, value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.LabeledIPAddressPrefix.labels)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& LabeledIPAddressPrefix::labels() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.LabeledIPAddressPrefix.labels)
  return _internal_labels();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL LabeledIPAddressPrefix::mutable_labels()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.LabeledIPAddressPrefix.labels)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_labels();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
LabeledIPAddressPrefix::_internal_labels() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.labels_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
LabeledIPAddressPrefix::_internal_mutable_labels() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.labels_;
}

// uint32 prefix_len = 2;
inline void LabeledIPAddressPrefix::clear_prefix_len() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_len_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t LabeledIPAddressPrefix::prefix_len() const {
  // @@protoc_insertion_point(field_get:apipb.LabeledIPAddressPrefix.prefix_len)
  return _internal_prefix_len();
}
inline void LabeledIPAddressPrefix::set_prefix_len(::uint32_t value) {
  _internal_set_prefix_len(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LabeledIPAddressPrefix.prefix_len)
}
inline ::uint32_t LabeledIPAddressPrefix::_internal_prefix_len() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_len_;
}
inline void LabeledIPAddressPrefix::_internal_set_prefix_len(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_len_ = value;
}

// string prefix = 3;
inline void LabeledIPAddressPrefix::clear_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& LabeledIPAddressPrefix::prefix() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LabeledIPAddressPrefix.prefix)
  return _internal_prefix();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LabeledIPAddressPrefix::set_prefix(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.prefix_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LabeledIPAddressPrefix.prefix)
}
inline ::std::string* PROTOBUF_NONNULL LabeledIPAddressPrefix::mutable_prefix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_prefix();
  // @@protoc_insertion_point(field_mutable:apipb.LabeledIPAddressPrefix.prefix)
  return _s;
}
inline const ::std::string& LabeledIPAddressPrefix::_internal_prefix() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_.Get();
}
inline void LabeledIPAddressPrefix::_internal_set_prefix(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LabeledIPAddressPrefix::_internal_mutable_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.prefix_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LabeledIPAddressPrefix::release_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LabeledIPAddressPrefix.prefix)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.prefix_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.prefix_.Set("", GetArena());
  }
  return released;
}
inline void LabeledIPAddressPrefix::set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.prefix_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.prefix_.IsDefault()) {
    _impl_.prefix_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LabeledIPAddressPrefix.prefix)
}

// -------------------------------------------------------------------

// EncapsulationNLRI

// string address = 1;
inline void EncapsulationNLRI::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& EncapsulationNLRI::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EncapsulationNLRI.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EncapsulationNLRI::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.EncapsulationNLRI.address)
}
inline ::std::string* PROTOBUF_NONNULL EncapsulationNLRI::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.EncapsulationNLRI.address)
  return _s;
}
inline const ::std::string& EncapsulationNLRI::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void EncapsulationNLRI::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EncapsulationNLRI::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EncapsulationNLRI::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EncapsulationNLRI.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void EncapsulationNLRI::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.EncapsulationNLRI.address)
}

// -------------------------------------------------------------------

// RouteDistinguisherTwoOctetASN

// uint32 admin = 1;
inline void RouteDistinguisherTwoOctetASN::clear_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t RouteDistinguisherTwoOctetASN::admin() const {
  // @@protoc_insertion_point(field_get:apipb.RouteDistinguisherTwoOctetASN.admin)
  return _internal_admin();
}
inline void RouteDistinguisherTwoOctetASN::set_admin(::uint32_t value) {
  _internal_set_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.RouteDistinguisherTwoOctetASN.admin)
}
inline ::uint32_t RouteDistinguisherTwoOctetASN::_internal_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.admin_;
}
inline void RouteDistinguisherTwoOctetASN::_internal_set_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.admin_ = value;
}

// uint32 assigned = 2;
inline void RouteDistinguisherTwoOctetASN::clear_assigned() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.assigned_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t RouteDistinguisherTwoOctetASN::assigned() const {
  // @@protoc_insertion_point(field_get:apipb.RouteDistinguisherTwoOctetASN.assigned)
  return _internal_assigned();
}
inline void RouteDistinguisherTwoOctetASN::set_assigned(::uint32_t value) {
  _internal_set_assigned(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.RouteDistinguisherTwoOctetASN.assigned)
}
inline ::uint32_t RouteDistinguisherTwoOctetASN::_internal_assigned() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.assigned_;
}
inline void RouteDistinguisherTwoOctetASN::_internal_set_assigned(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.assigned_ = value;
}

// -------------------------------------------------------------------

// RouteDistinguisherIPAddress

// string admin = 1;
inline void RouteDistinguisherIPAddress::clear_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.admin_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& RouteDistinguisherIPAddress::admin() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.RouteDistinguisherIPAddress.admin)
  return _internal_admin();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void RouteDistinguisherIPAddress::set_admin(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.admin_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.RouteDistinguisherIPAddress.admin)
}
inline ::std::string* PROTOBUF_NONNULL RouteDistinguisherIPAddress::mutable_admin()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_admin();
  // @@protoc_insertion_point(field_mutable:apipb.RouteDistinguisherIPAddress.admin)
  return _s;
}
inline const ::std::string& RouteDistinguisherIPAddress::_internal_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.admin_.Get();
}
inline void RouteDistinguisherIPAddress::_internal_set_admin(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.admin_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL RouteDistinguisherIPAddress::_internal_mutable_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.admin_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE RouteDistinguisherIPAddress::release_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.RouteDistinguisherIPAddress.admin)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.admin_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.admin_.Set("", GetArena());
  }
  return released;
}
inline void RouteDistinguisherIPAddress::set_allocated_admin(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.admin_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.admin_.IsDefault()) {
    _impl_.admin_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.RouteDistinguisherIPAddress.admin)
}

// uint32 assigned = 2;
inline void RouteDistinguisherIPAddress::clear_assigned() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.assigned_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t RouteDistinguisherIPAddress::assigned() const {
  // @@protoc_insertion_point(field_get:apipb.RouteDistinguisherIPAddress.assigned)
  return _internal_assigned();
}
inline void RouteDistinguisherIPAddress::set_assigned(::uint32_t value) {
  _internal_set_assigned(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.RouteDistinguisherIPAddress.assigned)
}
inline ::uint32_t RouteDistinguisherIPAddress::_internal_assigned() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.assigned_;
}
inline void RouteDistinguisherIPAddress::_internal_set_assigned(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.assigned_ = value;
}

// -------------------------------------------------------------------

// RouteDistinguisherFourOctetASN

// uint32 admin = 1;
inline void RouteDistinguisherFourOctetASN::clear_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t RouteDistinguisherFourOctetASN::admin() const {
  // @@protoc_insertion_point(field_get:apipb.RouteDistinguisherFourOctetASN.admin)
  return _internal_admin();
}
inline void RouteDistinguisherFourOctetASN::set_admin(::uint32_t value) {
  _internal_set_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.RouteDistinguisherFourOctetASN.admin)
}
inline ::uint32_t RouteDistinguisherFourOctetASN::_internal_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.admin_;
}
inline void RouteDistinguisherFourOctetASN::_internal_set_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.admin_ = value;
}

// uint32 assigned = 2;
inline void RouteDistinguisherFourOctetASN::clear_assigned() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.assigned_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t RouteDistinguisherFourOctetASN::assigned() const {
  // @@protoc_insertion_point(field_get:apipb.RouteDistinguisherFourOctetASN.assigned)
  return _internal_assigned();
}
inline void RouteDistinguisherFourOctetASN::set_assigned(::uint32_t value) {
  _internal_set_assigned(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.RouteDistinguisherFourOctetASN.assigned)
}
inline ::uint32_t RouteDistinguisherFourOctetASN::_internal_assigned() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.assigned_;
}
inline void RouteDistinguisherFourOctetASN::_internal_set_assigned(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.assigned_ = value;
}

// -------------------------------------------------------------------

// EthernetSegmentIdentifier

// uint32 type = 1;
inline void EthernetSegmentIdentifier::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t EthernetSegmentIdentifier::type() const {
  // @@protoc_insertion_point(field_get:apipb.EthernetSegmentIdentifier.type)
  return _internal_type();
}
inline void EthernetSegmentIdentifier::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.EthernetSegmentIdentifier.type)
}
inline ::uint32_t EthernetSegmentIdentifier::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void EthernetSegmentIdentifier::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// bytes value = 2;
inline void EthernetSegmentIdentifier::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& EthernetSegmentIdentifier::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EthernetSegmentIdentifier.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EthernetSegmentIdentifier::set_value(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.value_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.EthernetSegmentIdentifier.value)
}
inline ::std::string* PROTOBUF_NONNULL EthernetSegmentIdentifier::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:apipb.EthernetSegmentIdentifier.value)
  return _s;
}
inline const ::std::string& EthernetSegmentIdentifier::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_.Get();
}
inline void EthernetSegmentIdentifier::_internal_set_value(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EthernetSegmentIdentifier::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.value_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EthernetSegmentIdentifier::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EthernetSegmentIdentifier.value)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.value_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.value_.Set("", GetArena());
  }
  return released;
}
inline void EthernetSegmentIdentifier::set_allocated_value(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.value_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.value_.IsDefault()) {
    _impl_.value_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.EthernetSegmentIdentifier.value)
}

// -------------------------------------------------------------------

// EVPNEthernetAutoDiscoveryRoute

// .google.protobuf.Any rd = 1;
inline bool EVPNEthernetAutoDiscoveryRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& EVPNEthernetAutoDiscoveryRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& EVPNEthernetAutoDiscoveryRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNEthernetAutoDiscoveryRoute.rd)
  return _internal_rd();
}
inline void EVPNEthernetAutoDiscoveryRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNEthernetAutoDiscoveryRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNEthernetAutoDiscoveryRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNEthernetAutoDiscoveryRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNEthernetAutoDiscoveryRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNEthernetAutoDiscoveryRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNEthernetAutoDiscoveryRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNEthernetAutoDiscoveryRoute.rd)
  return _msg;
}
inline void EVPNEthernetAutoDiscoveryRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNEthernetAutoDiscoveryRoute.rd)
}

// .apipb.EthernetSegmentIdentifier esi = 2;
inline bool EVPNEthernetAutoDiscoveryRoute::has_esi() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.esi_ != nullptr);
  return value;
}
inline void EVPNEthernetAutoDiscoveryRoute::clear_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.esi_ != nullptr) _impl_.esi_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::EthernetSegmentIdentifier& EVPNEthernetAutoDiscoveryRoute::_internal_esi() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::EthernetSegmentIdentifier* p = _impl_.esi_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::EthernetSegmentIdentifier>(&::apipb::EthernetSegmentIdentifier_globals_);
}
inline const ::apipb::EthernetSegmentIdentifier& EVPNEthernetAutoDiscoveryRoute::esi() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNEthernetAutoDiscoveryRoute.esi)
  return _internal_esi();
}
inline void EVPNEthernetAutoDiscoveryRoute::unsafe_arena_set_allocated_esi(
    ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.esi_);
  }
  _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNEthernetAutoDiscoveryRoute.esi)
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE EVPNEthernetAutoDiscoveryRoute::release_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::EthernetSegmentIdentifier* released = _impl_.esi_;
  _impl_.esi_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE EVPNEthernetAutoDiscoveryRoute::unsafe_arena_release_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNEthernetAutoDiscoveryRoute.esi)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::EthernetSegmentIdentifier* temp = _impl_.esi_;
  _impl_.esi_ = nullptr;
  return temp;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL EVPNEthernetAutoDiscoveryRoute::_internal_mutable_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.esi_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::EthernetSegmentIdentifier>(GetArena());
    _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(p);
  }
  return _impl_.esi_;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL EVPNEthernetAutoDiscoveryRoute::mutable_esi()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::EthernetSegmentIdentifier* _msg = _internal_mutable_esi();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNEthernetAutoDiscoveryRoute.esi)
  return _msg;
}
inline void EVPNEthernetAutoDiscoveryRoute::set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.esi_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNEthernetAutoDiscoveryRoute.esi)
}

// uint32 ethernet_tag = 3;
inline void EVPNEthernetAutoDiscoveryRoute::clear_ethernet_tag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t EVPNEthernetAutoDiscoveryRoute::ethernet_tag() const {
  // @@protoc_insertion_point(field_get:apipb.EVPNEthernetAutoDiscoveryRoute.ethernet_tag)
  return _internal_ethernet_tag();
}
inline void EVPNEthernetAutoDiscoveryRoute::set_ethernet_tag(::uint32_t value) {
  _internal_set_ethernet_tag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.EVPNEthernetAutoDiscoveryRoute.ethernet_tag)
}
inline ::uint32_t EVPNEthernetAutoDiscoveryRoute::_internal_ethernet_tag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ethernet_tag_;
}
inline void EVPNEthernetAutoDiscoveryRoute::_internal_set_ethernet_tag(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = value;
}

// uint32 label = 4;
inline void EVPNEthernetAutoDiscoveryRoute::clear_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t EVPNEthernetAutoDiscoveryRoute::label() const {
  // @@protoc_insertion_point(field_get:apipb.EVPNEthernetAutoDiscoveryRoute.label)
  return _internal_label();
}
inline void EVPNEthernetAutoDiscoveryRoute::set_label(::uint32_t value) {
  _internal_set_label(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.EVPNEthernetAutoDiscoveryRoute.label)
}
inline ::uint32_t EVPNEthernetAutoDiscoveryRoute::_internal_label() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.label_;
}
inline void EVPNEthernetAutoDiscoveryRoute::_internal_set_label(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = value;
}

// -------------------------------------------------------------------

// EVPNMACIPAdvertisementRoute

// .google.protobuf.Any rd = 1;
inline bool EVPNMACIPAdvertisementRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& EVPNMACIPAdvertisementRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& EVPNMACIPAdvertisementRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNMACIPAdvertisementRoute.rd)
  return _internal_rd();
}
inline void EVPNMACIPAdvertisementRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNMACIPAdvertisementRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNMACIPAdvertisementRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNMACIPAdvertisementRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNMACIPAdvertisementRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNMACIPAdvertisementRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNMACIPAdvertisementRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNMACIPAdvertisementRoute.rd)
  return _msg;
}
inline void EVPNMACIPAdvertisementRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNMACIPAdvertisementRoute.rd)
}

// .apipb.EthernetSegmentIdentifier esi = 2;
inline bool EVPNMACIPAdvertisementRoute::has_esi() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  PROTOBUF_ASSUME(!value || _impl_.esi_ != nullptr);
  return value;
}
inline void EVPNMACIPAdvertisementRoute::clear_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.esi_ != nullptr) _impl_.esi_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline const ::apipb::EthernetSegmentIdentifier& EVPNMACIPAdvertisementRoute::_internal_esi() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::EthernetSegmentIdentifier* p = _impl_.esi_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::EthernetSegmentIdentifier>(&::apipb::EthernetSegmentIdentifier_globals_);
}
inline const ::apipb::EthernetSegmentIdentifier& EVPNMACIPAdvertisementRoute::esi() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNMACIPAdvertisementRoute.esi)
  return _internal_esi();
}
inline void EVPNMACIPAdvertisementRoute::unsafe_arena_set_allocated_esi(
    ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.esi_);
  }
  _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNMACIPAdvertisementRoute.esi)
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE EVPNMACIPAdvertisementRoute::release_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::apipb::EthernetSegmentIdentifier* released = _impl_.esi_;
  _impl_.esi_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE EVPNMACIPAdvertisementRoute::unsafe_arena_release_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNMACIPAdvertisementRoute.esi)

  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::apipb::EthernetSegmentIdentifier* temp = _impl_.esi_;
  _impl_.esi_ = nullptr;
  return temp;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL EVPNMACIPAdvertisementRoute::_internal_mutable_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.esi_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::EthernetSegmentIdentifier>(GetArena());
    _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(p);
  }
  return _impl_.esi_;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL EVPNMACIPAdvertisementRoute::mutable_esi()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::apipb::EthernetSegmentIdentifier* _msg = _internal_mutable_esi();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNMACIPAdvertisementRoute.esi)
  return _msg;
}
inline void EVPNMACIPAdvertisementRoute::set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.esi_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }

  _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNMACIPAdvertisementRoute.esi)
}

// uint32 ethernet_tag = 3;
inline void EVPNMACIPAdvertisementRoute::clear_ethernet_tag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::uint32_t EVPNMACIPAdvertisementRoute::ethernet_tag() const {
  // @@protoc_insertion_point(field_get:apipb.EVPNMACIPAdvertisementRoute.ethernet_tag)
  return _internal_ethernet_tag();
}
inline void EVPNMACIPAdvertisementRoute::set_ethernet_tag(::uint32_t value) {
  _internal_set_ethernet_tag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:apipb.EVPNMACIPAdvertisementRoute.ethernet_tag)
}
inline ::uint32_t EVPNMACIPAdvertisementRoute::_internal_ethernet_tag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ethernet_tag_;
}
inline void EVPNMACIPAdvertisementRoute::_internal_set_ethernet_tag(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = value;
}

// string mac_address = 4;
inline void EVPNMACIPAdvertisementRoute::clear_mac_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mac_address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& EVPNMACIPAdvertisementRoute::mac_address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNMACIPAdvertisementRoute.mac_address)
  return _internal_mac_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EVPNMACIPAdvertisementRoute::set_mac_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.mac_address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.EVPNMACIPAdvertisementRoute.mac_address)
}
inline ::std::string* PROTOBUF_NONNULL EVPNMACIPAdvertisementRoute::mutable_mac_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_mac_address();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNMACIPAdvertisementRoute.mac_address)
  return _s;
}
inline const ::std::string& EVPNMACIPAdvertisementRoute::_internal_mac_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mac_address_.Get();
}
inline void EVPNMACIPAdvertisementRoute::_internal_set_mac_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mac_address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EVPNMACIPAdvertisementRoute::_internal_mutable_mac_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.mac_address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EVPNMACIPAdvertisementRoute::release_mac_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNMACIPAdvertisementRoute.mac_address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.mac_address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.mac_address_.Set("", GetArena());
  }
  return released;
}
inline void EVPNMACIPAdvertisementRoute::set_allocated_mac_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.mac_address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.mac_address_.IsDefault()) {
    _impl_.mac_address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNMACIPAdvertisementRoute.mac_address)
}

// string ip_address = 5;
inline void EVPNMACIPAdvertisementRoute::clear_ip_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& EVPNMACIPAdvertisementRoute::ip_address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNMACIPAdvertisementRoute.ip_address)
  return _internal_ip_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EVPNMACIPAdvertisementRoute::set_ip_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.ip_address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.EVPNMACIPAdvertisementRoute.ip_address)
}
inline ::std::string* PROTOBUF_NONNULL EVPNMACIPAdvertisementRoute::mutable_ip_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_ip_address();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNMACIPAdvertisementRoute.ip_address)
  return _s;
}
inline const ::std::string& EVPNMACIPAdvertisementRoute::_internal_ip_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ip_address_.Get();
}
inline void EVPNMACIPAdvertisementRoute::_internal_set_ip_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EVPNMACIPAdvertisementRoute::_internal_mutable_ip_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.ip_address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EVPNMACIPAdvertisementRoute::release_ip_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNMACIPAdvertisementRoute.ip_address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.ip_address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.ip_address_.Set("", GetArena());
  }
  return released;
}
inline void EVPNMACIPAdvertisementRoute::set_allocated_ip_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.ip_address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.ip_address_.IsDefault()) {
    _impl_.ip_address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNMACIPAdvertisementRoute.ip_address)
}

// repeated uint32 labels = 6;
inline int EVPNMACIPAdvertisementRoute::_internal_labels_size() const {
  return _internal_labels().size();
}
inline int EVPNMACIPAdvertisementRoute::labels_size() const {
  return _internal_labels_size();
}
inline void EVPNMACIPAdvertisementRoute::clear_labels() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.labels_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t EVPNMACIPAdvertisementRoute::labels(int index) const {
  // @@protoc_insertion_point(field_get:apipb.EVPNMACIPAdvertisementRoute.labels)
  return _internal_labels().Get(index);
}
inline void EVPNMACIPAdvertisementRoute::set_labels(int index, ::uint32_t value) {
  _internal_mutable_labels()->Set(index, value);
  // @@protoc_insertion_point(field_set:apipb.EVPNMACIPAdvertisementRoute.labels)
}
inline void EVPNMACIPAdvertisementRoute::add_labels(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_labels()
      ->InternalAddWithArena<const ::google::protobuf::MessageLite*>(
          internal_visibility(), this, value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.EVPNMACIPAdvertisementRoute.labels)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& EVPNMACIPAdvertisementRoute::labels() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.EVPNMACIPAdvertisementRoute.labels)
  return _internal_labels();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL EVPNMACIPAdvertisementRoute::mutable_labels()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.EVPNMACIPAdvertisementRoute.labels)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_labels();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
EVPNMACIPAdvertisementRoute::_internal_labels() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.labels_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
EVPNMACIPAdvertisementRoute::_internal_mutable_labels() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.labels_;
}

// -------------------------------------------------------------------

// EVPNInclusiveMulticastEthernetTagRoute

// .google.protobuf.Any rd = 1;
inline bool EVPNInclusiveMulticastEthernetTagRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& EVPNInclusiveMulticastEthernetTagRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& EVPNInclusiveMulticastEthernetTagRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNInclusiveMulticastEthernetTagRoute.rd)
  return _internal_rd();
}
inline void EVPNInclusiveMulticastEthernetTagRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNInclusiveMulticastEthernetTagRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNInclusiveMulticastEthernetTagRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNInclusiveMulticastEthernetTagRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNInclusiveMulticastEthernetTagRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNInclusiveMulticastEthernetTagRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNInclusiveMulticastEthernetTagRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNInclusiveMulticastEthernetTagRoute.rd)
  return _msg;
}
inline void EVPNInclusiveMulticastEthernetTagRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNInclusiveMulticastEthernetTagRoute.rd)
}

// uint32 ethernet_tag = 2;
inline void EVPNInclusiveMulticastEthernetTagRoute::clear_ethernet_tag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t EVPNInclusiveMulticastEthernetTagRoute::ethernet_tag() const {
  // @@protoc_insertion_point(field_get:apipb.EVPNInclusiveMulticastEthernetTagRoute.ethernet_tag)
  return _internal_ethernet_tag();
}
inline void EVPNInclusiveMulticastEthernetTagRoute::set_ethernet_tag(::uint32_t value) {
  _internal_set_ethernet_tag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.EVPNInclusiveMulticastEthernetTagRoute.ethernet_tag)
}
inline ::uint32_t EVPNInclusiveMulticastEthernetTagRoute::_internal_ethernet_tag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ethernet_tag_;
}
inline void EVPNInclusiveMulticastEthernetTagRoute::_internal_set_ethernet_tag(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = value;
}

// string ip_address = 3;
inline void EVPNInclusiveMulticastEthernetTagRoute::clear_ip_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& EVPNInclusiveMulticastEthernetTagRoute::ip_address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNInclusiveMulticastEthernetTagRoute.ip_address)
  return _internal_ip_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EVPNInclusiveMulticastEthernetTagRoute::set_ip_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.ip_address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.EVPNInclusiveMulticastEthernetTagRoute.ip_address)
}
inline ::std::string* PROTOBUF_NONNULL EVPNInclusiveMulticastEthernetTagRoute::mutable_ip_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_ip_address();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNInclusiveMulticastEthernetTagRoute.ip_address)
  return _s;
}
inline const ::std::string& EVPNInclusiveMulticastEthernetTagRoute::_internal_ip_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ip_address_.Get();
}
inline void EVPNInclusiveMulticastEthernetTagRoute::_internal_set_ip_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EVPNInclusiveMulticastEthernetTagRoute::_internal_mutable_ip_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.ip_address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EVPNInclusiveMulticastEthernetTagRoute::release_ip_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNInclusiveMulticastEthernetTagRoute.ip_address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.ip_address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.ip_address_.Set("", GetArena());
  }
  return released;
}
inline void EVPNInclusiveMulticastEthernetTagRoute::set_allocated_ip_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.ip_address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.ip_address_.IsDefault()) {
    _impl_.ip_address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNInclusiveMulticastEthernetTagRoute.ip_address)
}

// -------------------------------------------------------------------

// EVPNEthernetSegmentRoute

// .google.protobuf.Any rd = 1;
inline bool EVPNEthernetSegmentRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& EVPNEthernetSegmentRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& EVPNEthernetSegmentRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNEthernetSegmentRoute.rd)
  return _internal_rd();
}
inline void EVPNEthernetSegmentRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNEthernetSegmentRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNEthernetSegmentRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNEthernetSegmentRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNEthernetSegmentRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNEthernetSegmentRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNEthernetSegmentRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNEthernetSegmentRoute.rd)
  return _msg;
}
inline void EVPNEthernetSegmentRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNEthernetSegmentRoute.rd)
}

// .apipb.EthernetSegmentIdentifier esi = 2;
inline bool EVPNEthernetSegmentRoute::has_esi() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.esi_ != nullptr);
  return value;
}
inline void EVPNEthernetSegmentRoute::clear_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.esi_ != nullptr) _impl_.esi_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::apipb::EthernetSegmentIdentifier& EVPNEthernetSegmentRoute::_internal_esi() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::EthernetSegmentIdentifier* p = _impl_.esi_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::EthernetSegmentIdentifier>(&::apipb::EthernetSegmentIdentifier_globals_);
}
inline const ::apipb::EthernetSegmentIdentifier& EVPNEthernetSegmentRoute::esi() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNEthernetSegmentRoute.esi)
  return _internal_esi();
}
inline void EVPNEthernetSegmentRoute::unsafe_arena_set_allocated_esi(
    ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.esi_);
  }
  _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNEthernetSegmentRoute.esi)
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE EVPNEthernetSegmentRoute::release_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::EthernetSegmentIdentifier* released = _impl_.esi_;
  _impl_.esi_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE EVPNEthernetSegmentRoute::unsafe_arena_release_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNEthernetSegmentRoute.esi)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::EthernetSegmentIdentifier* temp = _impl_.esi_;
  _impl_.esi_ = nullptr;
  return temp;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL EVPNEthernetSegmentRoute::_internal_mutable_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.esi_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::EthernetSegmentIdentifier>(GetArena());
    _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(p);
  }
  return _impl_.esi_;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL EVPNEthernetSegmentRoute::mutable_esi()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::EthernetSegmentIdentifier* _msg = _internal_mutable_esi();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNEthernetSegmentRoute.esi)
  return _msg;
}
inline void EVPNEthernetSegmentRoute::set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.esi_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNEthernetSegmentRoute.esi)
}

// string ip_address = 3;
inline void EVPNEthernetSegmentRoute::clear_ip_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& EVPNEthernetSegmentRoute::ip_address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNEthernetSegmentRoute.ip_address)
  return _internal_ip_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EVPNEthernetSegmentRoute::set_ip_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.ip_address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.EVPNEthernetSegmentRoute.ip_address)
}
inline ::std::string* PROTOBUF_NONNULL EVPNEthernetSegmentRoute::mutable_ip_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_ip_address();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNEthernetSegmentRoute.ip_address)
  return _s;
}
inline const ::std::string& EVPNEthernetSegmentRoute::_internal_ip_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ip_address_.Get();
}
inline void EVPNEthernetSegmentRoute::_internal_set_ip_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EVPNEthernetSegmentRoute::_internal_mutable_ip_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.ip_address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EVPNEthernetSegmentRoute::release_ip_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNEthernetSegmentRoute.ip_address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.ip_address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.ip_address_.Set("", GetArena());
  }
  return released;
}
inline void EVPNEthernetSegmentRoute::set_allocated_ip_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.ip_address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.ip_address_.IsDefault()) {
    _impl_.ip_address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNEthernetSegmentRoute.ip_address)
}

// -------------------------------------------------------------------

// EVPNIPPrefixRoute

// .google.protobuf.Any rd = 1;
inline bool EVPNIPPrefixRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& EVPNIPPrefixRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& EVPNIPPrefixRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPPrefixRoute.rd)
  return _internal_rd();
}
inline void EVPNIPPrefixRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNIPPrefixRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNIPPrefixRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNIPPrefixRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNIPPrefixRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNIPPrefixRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNIPPrefixRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNIPPrefixRoute.rd)
  return _msg;
}
inline void EVPNIPPrefixRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNIPPrefixRoute.rd)
}

// .apipb.EthernetSegmentIdentifier esi = 2;
inline bool EVPNIPPrefixRoute::has_esi() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  PROTOBUF_ASSUME(!value || _impl_.esi_ != nullptr);
  return value;
}
inline void EVPNIPPrefixRoute::clear_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.esi_ != nullptr) _impl_.esi_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::apipb::EthernetSegmentIdentifier& EVPNIPPrefixRoute::_internal_esi() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::EthernetSegmentIdentifier* p = _impl_.esi_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::EthernetSegmentIdentifier>(&::apipb::EthernetSegmentIdentifier_globals_);
}
inline const ::apipb::EthernetSegmentIdentifier& EVPNIPPrefixRoute::esi() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPPrefixRoute.esi)
  return _internal_esi();
}
inline void EVPNIPPrefixRoute::unsafe_arena_set_allocated_esi(
    ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.esi_);
  }
  _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNIPPrefixRoute.esi)
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE EVPNIPPrefixRoute::release_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::apipb::EthernetSegmentIdentifier* released = _impl_.esi_;
  _impl_.esi_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE EVPNIPPrefixRoute::unsafe_arena_release_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNIPPrefixRoute.esi)

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::apipb::EthernetSegmentIdentifier* temp = _impl_.esi_;
  _impl_.esi_ = nullptr;
  return temp;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL EVPNIPPrefixRoute::_internal_mutable_esi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.esi_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::EthernetSegmentIdentifier>(GetArena());
    _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(p);
  }
  return _impl_.esi_;
}
inline ::apipb::EthernetSegmentIdentifier* PROTOBUF_NONNULL EVPNIPPrefixRoute::mutable_esi()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::apipb::EthernetSegmentIdentifier* _msg = _internal_mutable_esi();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNIPPrefixRoute.esi)
  return _msg;
}
inline void EVPNIPPrefixRoute::set_allocated_esi(::apipb::EthernetSegmentIdentifier* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.esi_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }

  _impl_.esi_ = reinterpret_cast<::apipb::EthernetSegmentIdentifier*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNIPPrefixRoute.esi)
}

// uint32 ethernet_tag = 3;
inline void EVPNIPPrefixRoute::clear_ethernet_tag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::uint32_t EVPNIPPrefixRoute::ethernet_tag() const {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPPrefixRoute.ethernet_tag)
  return _internal_ethernet_tag();
}
inline void EVPNIPPrefixRoute::set_ethernet_tag(::uint32_t value) {
  _internal_set_ethernet_tag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:apipb.EVPNIPPrefixRoute.ethernet_tag)
}
inline ::uint32_t EVPNIPPrefixRoute::_internal_ethernet_tag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ethernet_tag_;
}
inline void EVPNIPPrefixRoute::_internal_set_ethernet_tag(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = value;
}

// string ip_prefix = 4;
inline void EVPNIPPrefixRoute::clear_ip_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_prefix_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& EVPNIPPrefixRoute::ip_prefix() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPPrefixRoute.ip_prefix)
  return _internal_ip_prefix();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EVPNIPPrefixRoute::set_ip_prefix(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.ip_prefix_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.EVPNIPPrefixRoute.ip_prefix)
}
inline ::std::string* PROTOBUF_NONNULL EVPNIPPrefixRoute::mutable_ip_prefix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_ip_prefix();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNIPPrefixRoute.ip_prefix)
  return _s;
}
inline const ::std::string& EVPNIPPrefixRoute::_internal_ip_prefix() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ip_prefix_.Get();
}
inline void EVPNIPPrefixRoute::_internal_set_ip_prefix(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_prefix_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EVPNIPPrefixRoute::_internal_mutable_ip_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.ip_prefix_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EVPNIPPrefixRoute::release_ip_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNIPPrefixRoute.ip_prefix)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.ip_prefix_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.ip_prefix_.Set("", GetArena());
  }
  return released;
}
inline void EVPNIPPrefixRoute::set_allocated_ip_prefix(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.ip_prefix_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.ip_prefix_.IsDefault()) {
    _impl_.ip_prefix_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNIPPrefixRoute.ip_prefix)
}

// uint32 ip_prefix_len = 5;
inline void EVPNIPPrefixRoute::clear_ip_prefix_len() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_prefix_len_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::uint32_t EVPNIPPrefixRoute::ip_prefix_len() const {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPPrefixRoute.ip_prefix_len)
  return _internal_ip_prefix_len();
}
inline void EVPNIPPrefixRoute::set_ip_prefix_len(::uint32_t value) {
  _internal_set_ip_prefix_len(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:apipb.EVPNIPPrefixRoute.ip_prefix_len)
}
inline ::uint32_t EVPNIPPrefixRoute::_internal_ip_prefix_len() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ip_prefix_len_;
}
inline void EVPNIPPrefixRoute::_internal_set_ip_prefix_len(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_prefix_len_ = value;
}

// string gw_address = 6;
inline void EVPNIPPrefixRoute::clear_gw_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.gw_address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& EVPNIPPrefixRoute::gw_address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPPrefixRoute.gw_address)
  return _internal_gw_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void EVPNIPPrefixRoute::set_gw_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.gw_address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.EVPNIPPrefixRoute.gw_address)
}
inline ::std::string* PROTOBUF_NONNULL EVPNIPPrefixRoute::mutable_gw_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_gw_address();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNIPPrefixRoute.gw_address)
  return _s;
}
inline const ::std::string& EVPNIPPrefixRoute::_internal_gw_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.gw_address_.Get();
}
inline void EVPNIPPrefixRoute::_internal_set_gw_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.gw_address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL EVPNIPPrefixRoute::_internal_mutable_gw_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.gw_address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE EVPNIPPrefixRoute::release_gw_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNIPPrefixRoute.gw_address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.gw_address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.gw_address_.Set("", GetArena());
  }
  return released;
}
inline void EVPNIPPrefixRoute::set_allocated_gw_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.gw_address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.gw_address_.IsDefault()) {
    _impl_.gw_address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNIPPrefixRoute.gw_address)
}

// uint32 label = 7;
inline void EVPNIPPrefixRoute::clear_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline ::uint32_t EVPNIPPrefixRoute::label() const {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPPrefixRoute.label)
  return _internal_label();
}
inline void EVPNIPPrefixRoute::set_label(::uint32_t value) {
  _internal_set_label(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:apipb.EVPNIPPrefixRoute.label)
}
inline ::uint32_t EVPNIPPrefixRoute::_internal_label() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.label_;
}
inline void EVPNIPPrefixRoute::_internal_set_label(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = value;
}

// -------------------------------------------------------------------

// EVPNIPMSIRoute

// .google.protobuf.Any rd = 1;
inline bool EVPNIPMSIRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& EVPNIPMSIRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& EVPNIPMSIRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPMSIRoute.rd)
  return _internal_rd();
}
inline void EVPNIPMSIRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNIPMSIRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNIPMSIRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNIPMSIRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNIPMSIRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNIPMSIRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNIPMSIRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNIPMSIRoute.rd)
  return _msg;
}
inline void EVPNIPMSIRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNIPMSIRoute.rd)
}

// uint32 ethernet_tag = 2;
inline void EVPNIPMSIRoute::clear_ethernet_tag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t EVPNIPMSIRoute::ethernet_tag() const {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPMSIRoute.ethernet_tag)
  return _internal_ethernet_tag();
}
inline void EVPNIPMSIRoute::set_ethernet_tag(::uint32_t value) {
  _internal_set_ethernet_tag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.EVPNIPMSIRoute.ethernet_tag)
}
inline ::uint32_t EVPNIPMSIRoute::_internal_ethernet_tag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ethernet_tag_;
}
inline void EVPNIPMSIRoute::_internal_set_ethernet_tag(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ethernet_tag_ = value;
}

// .google.protobuf.Any rt = 3;
inline bool EVPNIPMSIRoute::has_rt() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.rt_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& EVPNIPMSIRoute::_internal_rt() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rt_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& EVPNIPMSIRoute::rt() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.EVPNIPMSIRoute.rt)
  return _internal_rt();
}
inline void EVPNIPMSIRoute::unsafe_arena_set_allocated_rt(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rt_);
  }
  _impl_.rt_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.EVPNIPMSIRoute.rt)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNIPMSIRoute::release_rt() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* released = _impl_.rt_;
  _impl_.rt_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE EVPNIPMSIRoute::unsafe_arena_release_rt() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.EVPNIPMSIRoute.rt)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* temp = _impl_.rt_;
  _impl_.rt_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNIPMSIRoute::_internal_mutable_rt() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rt_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rt_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rt_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL EVPNIPMSIRoute::mutable_rt()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* _msg = _internal_mutable_rt();
  // @@protoc_insertion_point(field_mutable:apipb.EVPNIPMSIRoute.rt)
  return _msg;
}
inline void EVPNIPMSIRoute::set_allocated_rt(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rt_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.rt_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.EVPNIPMSIRoute.rt)
}

// -------------------------------------------------------------------

// SRPolicyNLRI

// uint32 length = 1;
inline void SRPolicyNLRI::clear_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t SRPolicyNLRI::length() const {
  // @@protoc_insertion_point(field_get:apipb.SRPolicyNLRI.length)
  return _internal_length();
}
inline void SRPolicyNLRI::set_length(::uint32_t value) {
  _internal_set_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.SRPolicyNLRI.length)
}
inline ::uint32_t SRPolicyNLRI::_internal_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.length_;
}
inline void SRPolicyNLRI::_internal_set_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = value;
}

// uint32 distinguisher = 2;
inline void SRPolicyNLRI::clear_distinguisher() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.distinguisher_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t SRPolicyNLRI::distinguisher() const {
  // @@protoc_insertion_point(field_get:apipb.SRPolicyNLRI.distinguisher)
  return _internal_distinguisher();
}
inline void SRPolicyNLRI::set_distinguisher(::uint32_t value) {
  _internal_set_distinguisher(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.SRPolicyNLRI.distinguisher)
}
inline ::uint32_t SRPolicyNLRI::_internal_distinguisher() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.distinguisher_;
}
inline void SRPolicyNLRI::_internal_set_distinguisher(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.distinguisher_ = value;
}

// uint32 color = 3;
inline void SRPolicyNLRI::clear_color() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t SRPolicyNLRI::color() const {
  // @@protoc_insertion_point(field_get:apipb.SRPolicyNLRI.color)
  return _internal_color();
}
inline void SRPolicyNLRI::set_color(::uint32_t value) {
  _internal_set_color(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.SRPolicyNLRI.color)
}
inline ::uint32_t SRPolicyNLRI::_internal_color() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.color_;
}
inline void SRPolicyNLRI::_internal_set_color(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = value;
}

// bytes endpoint = 4;
inline void SRPolicyNLRI::clear_endpoint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& SRPolicyNLRI::endpoint() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SRPolicyNLRI.endpoint)
  return _internal_endpoint();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void SRPolicyNLRI::set_endpoint(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.endpoint_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.SRPolicyNLRI.endpoint)
}
inline ::std::string* PROTOBUF_NONNULL SRPolicyNLRI::mutable_endpoint()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_endpoint();
  // @@protoc_insertion_point(field_mutable:apipb.SRPolicyNLRI.endpoint)
  return _s;
}
inline const ::std::string& SRPolicyNLRI::_internal_endpoint() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.endpoint_.Get();
}
inline void SRPolicyNLRI::_internal_set_endpoint(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL SRPolicyNLRI::_internal_mutable_endpoint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.endpoint_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE SRPolicyNLRI::release_endpoint() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SRPolicyNLRI.endpoint)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.endpoint_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.endpoint_.Set("", GetArena());
  }
  return released;
}
inline void SRPolicyNLRI::set_allocated_endpoint(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.endpoint_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.endpoint_.IsDefault()) {
    _impl_.endpoint_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.SRPolicyNLRI.endpoint)
}

// -------------------------------------------------------------------

// LabeledVPNIPAddressPrefix

// repeated uint32 labels = 1;
inline int LabeledVPNIPAddressPrefix::_internal_labels_size() const {
  return _internal_labels().size();
}
inline int LabeledVPNIPAddressPrefix::labels_size() const {
  return _internal_labels_size();
}
inline void LabeledVPNIPAddressPrefix::clear_labels() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.labels_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t LabeledVPNIPAddressPrefix::labels(int index) const {
  // @@protoc_insertion_point(field_get:apipb.LabeledVPNIPAddressPrefix.labels)
  return _internal_labels().Get(index);
}
inline void LabeledVPNIPAddressPrefix::set_labels(int index, ::uint32_t value) {
  _internal_mutable_labels()->Set(index, value);
  // @@protoc_insertion_point(field_set:apipb.LabeledVPNIPAddressPrefix.labels)
}
inline void LabeledVPNIPAddressPrefix::add_labels(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_labels()
      ->InternalAddWithArena<const ::google::protobuf::MessageLite*>(
          internal_visibility(), this, value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.LabeledVPNIPAddressPrefix.labels)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& LabeledVPNIPAddressPrefix::labels() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.LabeledVPNIPAddressPrefix.labels)
  return _internal_labels();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL LabeledVPNIPAddressPrefix::mutable_labels()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.LabeledVPNIPAddressPrefix.labels)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_labels();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
LabeledVPNIPAddressPrefix::_internal_labels() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.labels_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
LabeledVPNIPAddressPrefix::_internal_mutable_labels() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.labels_;
}

// .google.protobuf.Any rd = 2;
inline bool LabeledVPNIPAddressPrefix::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& LabeledVPNIPAddressPrefix::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& LabeledVPNIPAddressPrefix::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LabeledVPNIPAddressPrefix.rd)
  return _internal_rd();
}
inline void LabeledVPNIPAddressPrefix::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LabeledVPNIPAddressPrefix.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE LabeledVPNIPAddressPrefix::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE LabeledVPNIPAddressPrefix::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LabeledVPNIPAddressPrefix.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL LabeledVPNIPAddressPrefix::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL LabeledVPNIPAddressPrefix::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.LabeledVPNIPAddressPrefix.rd)
  return _msg;
}
inline void LabeledVPNIPAddressPrefix::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LabeledVPNIPAddressPrefix.rd)
}

// uint32 prefix_len = 3;
inline void LabeledVPNIPAddressPrefix::clear_prefix_len() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_len_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t LabeledVPNIPAddressPrefix::prefix_len() const {
  // @@protoc_insertion_point(field_get:apipb.LabeledVPNIPAddressPrefix.prefix_len)
  return _internal_prefix_len();
}
inline void LabeledVPNIPAddressPrefix::set_prefix_len(::uint32_t value) {
  _internal_set_prefix_len(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.LabeledVPNIPAddressPrefix.prefix_len)
}
inline ::uint32_t LabeledVPNIPAddressPrefix::_internal_prefix_len() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_len_;
}
inline void LabeledVPNIPAddressPrefix::_internal_set_prefix_len(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_len_ = value;
}

// string prefix = 4;
inline void LabeledVPNIPAddressPrefix::clear_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& LabeledVPNIPAddressPrefix::prefix() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LabeledVPNIPAddressPrefix.prefix)
  return _internal_prefix();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LabeledVPNIPAddressPrefix::set_prefix(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.prefix_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LabeledVPNIPAddressPrefix.prefix)
}
inline ::std::string* PROTOBUF_NONNULL LabeledVPNIPAddressPrefix::mutable_prefix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_prefix();
  // @@protoc_insertion_point(field_mutable:apipb.LabeledVPNIPAddressPrefix.prefix)
  return _s;
}
inline const ::std::string& LabeledVPNIPAddressPrefix::_internal_prefix() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_.Get();
}
inline void LabeledVPNIPAddressPrefix::_internal_set_prefix(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LabeledVPNIPAddressPrefix::_internal_mutable_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.prefix_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LabeledVPNIPAddressPrefix::release_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LabeledVPNIPAddressPrefix.prefix)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.prefix_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.prefix_.Set("", GetArena());
  }
  return released;
}
inline void LabeledVPNIPAddressPrefix::set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.prefix_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.prefix_.IsDefault()) {
    _impl_.prefix_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LabeledVPNIPAddressPrefix.prefix)
}

// -------------------------------------------------------------------

// RouteTargetMembershipNLRI

// uint32 asn = 1;
inline void RouteTargetMembershipNLRI::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t RouteTargetMembershipNLRI::asn() const {
  // @@protoc_insertion_point(field_get:apipb.RouteTargetMembershipNLRI.asn)
  return _internal_asn();
}
inline void RouteTargetMembershipNLRI::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.RouteTargetMembershipNLRI.asn)
}
inline ::uint32_t RouteTargetMembershipNLRI::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void RouteTargetMembershipNLRI::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// .google.protobuf.Any rt = 2;
inline bool RouteTargetMembershipNLRI::has_rt() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.rt_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& RouteTargetMembershipNLRI::_internal_rt() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rt_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& RouteTargetMembershipNLRI::rt() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.RouteTargetMembershipNLRI.rt)
  return _internal_rt();
}
inline void RouteTargetMembershipNLRI::unsafe_arena_set_allocated_rt(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rt_);
  }
  _impl_.rt_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.RouteTargetMembershipNLRI.rt)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE RouteTargetMembershipNLRI::release_rt() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* released = _impl_.rt_;
  _impl_.rt_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE RouteTargetMembershipNLRI::unsafe_arena_release_rt() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.RouteTargetMembershipNLRI.rt)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* temp = _impl_.rt_;
  _impl_.rt_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL RouteTargetMembershipNLRI::_internal_mutable_rt() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rt_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rt_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rt_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL RouteTargetMembershipNLRI::mutable_rt()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* _msg = _internal_mutable_rt();
  // @@protoc_insertion_point(field_mutable:apipb.RouteTargetMembershipNLRI.rt)
  return _msg;
}
inline void RouteTargetMembershipNLRI::set_allocated_rt(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rt_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.rt_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.RouteTargetMembershipNLRI.rt)
}

// -------------------------------------------------------------------

// FlowSpecIPPrefix

// uint32 type = 1;
inline void FlowSpecIPPrefix::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t FlowSpecIPPrefix::type() const {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecIPPrefix.type)
  return _internal_type();
}
inline void FlowSpecIPPrefix::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.FlowSpecIPPrefix.type)
}
inline ::uint32_t FlowSpecIPPrefix::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void FlowSpecIPPrefix::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// uint32 prefix_len = 2;
inline void FlowSpecIPPrefix::clear_prefix_len() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_len_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t FlowSpecIPPrefix::prefix_len() const {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecIPPrefix.prefix_len)
  return _internal_prefix_len();
}
inline void FlowSpecIPPrefix::set_prefix_len(::uint32_t value) {
  _internal_set_prefix_len(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.FlowSpecIPPrefix.prefix_len)
}
inline ::uint32_t FlowSpecIPPrefix::_internal_prefix_len() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_len_;
}
inline void FlowSpecIPPrefix::_internal_set_prefix_len(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_len_ = value;
}

// string prefix = 3;
inline void FlowSpecIPPrefix::clear_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& FlowSpecIPPrefix::prefix() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecIPPrefix.prefix)
  return _internal_prefix();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void FlowSpecIPPrefix::set_prefix(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.prefix_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.FlowSpecIPPrefix.prefix)
}
inline ::std::string* PROTOBUF_NONNULL FlowSpecIPPrefix::mutable_prefix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_prefix();
  // @@protoc_insertion_point(field_mutable:apipb.FlowSpecIPPrefix.prefix)
  return _s;
}
inline const ::std::string& FlowSpecIPPrefix::_internal_prefix() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_.Get();
}
inline void FlowSpecIPPrefix::_internal_set_prefix(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL FlowSpecIPPrefix::_internal_mutable_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.prefix_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE FlowSpecIPPrefix::release_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.FlowSpecIPPrefix.prefix)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.prefix_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.prefix_.Set("", GetArena());
  }
  return released;
}
inline void FlowSpecIPPrefix::set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.prefix_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.prefix_.IsDefault()) {
    _impl_.prefix_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.FlowSpecIPPrefix.prefix)
}

// uint32 offset = 4;
inline void FlowSpecIPPrefix::clear_offset() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.offset_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t FlowSpecIPPrefix::offset() const {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecIPPrefix.offset)
  return _internal_offset();
}
inline void FlowSpecIPPrefix::set_offset(::uint32_t value) {
  _internal_set_offset(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.FlowSpecIPPrefix.offset)
}
inline ::uint32_t FlowSpecIPPrefix::_internal_offset() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.offset_;
}
inline void FlowSpecIPPrefix::_internal_set_offset(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.offset_ = value;
}

// -------------------------------------------------------------------

// FlowSpecMAC

// uint32 type = 1;
inline void FlowSpecMAC::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t FlowSpecMAC::type() const {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecMAC.type)
  return _internal_type();
}
inline void FlowSpecMAC::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.FlowSpecMAC.type)
}
inline ::uint32_t FlowSpecMAC::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void FlowSpecMAC::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// string address = 2;
inline void FlowSpecMAC::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& FlowSpecMAC::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecMAC.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void FlowSpecMAC::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.FlowSpecMAC.address)
}
inline ::std::string* PROTOBUF_NONNULL FlowSpecMAC::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.FlowSpecMAC.address)
  return _s;
}
inline const ::std::string& FlowSpecMAC::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void FlowSpecMAC::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL FlowSpecMAC::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE FlowSpecMAC::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.FlowSpecMAC.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void FlowSpecMAC::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.FlowSpecMAC.address)
}

// -------------------------------------------------------------------

// FlowSpecComponentItem

// uint32 op = 1;
inline void FlowSpecComponentItem::clear_op() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.op_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t FlowSpecComponentItem::op() const {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecComponentItem.op)
  return _internal_op();
}
inline void FlowSpecComponentItem::set_op(::uint32_t value) {
  _internal_set_op(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.FlowSpecComponentItem.op)
}
inline ::uint32_t FlowSpecComponentItem::_internal_op() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.op_;
}
inline void FlowSpecComponentItem::_internal_set_op(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.op_ = value;
}

// uint64 value = 2;
inline void FlowSpecComponentItem::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_ = ::uint64_t{0u};
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint64_t FlowSpecComponentItem::value() const {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecComponentItem.value)
  return _internal_value();
}
inline void FlowSpecComponentItem::set_value(::uint64_t value) {
  _internal_set_value(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.FlowSpecComponentItem.value)
}
inline ::uint64_t FlowSpecComponentItem::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_;
}
inline void FlowSpecComponentItem::_internal_set_value(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_ = value;
}

// -------------------------------------------------------------------

// FlowSpecComponent

// uint32 type = 1;
inline void FlowSpecComponent::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t FlowSpecComponent::type() const {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecComponent.type)
  return _internal_type();
}
inline void FlowSpecComponent::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.FlowSpecComponent.type)
}
inline ::uint32_t FlowSpecComponent::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void FlowSpecComponent::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// repeated .apipb.FlowSpecComponentItem items = 2;
inline int FlowSpecComponent::_internal_items_size() const {
  return _internal_items().size();
}
inline int FlowSpecComponent::items_size() const {
  return _internal_items_size();
}
inline void FlowSpecComponent::clear_items() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.items_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::FlowSpecComponentItem& FlowSpecComponent::items(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecComponent.items)
  return _internal_items().Get(index);
}
inline ::apipb::FlowSpecComponentItem* PROTOBUF_NONNULL FlowSpecComponent::mutable_items(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.FlowSpecComponent.items)
  return _internal_mutable_items()->Mutable(index);
}
inline ::apipb::FlowSpecComponentItem* PROTOBUF_NONNULL FlowSpecComponent::add_items()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::apipb::FlowSpecComponentItem* _add =
      _internal_mutable_items()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.FlowSpecComponent.items)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::FlowSpecComponentItem>& FlowSpecComponent::items() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.FlowSpecComponent.items)
  return _internal_items();
}
inline ::google::protobuf::RepeatedPtrField<::apipb::FlowSpecComponentItem>* PROTOBUF_NONNULL
FlowSpecComponent::mutable_items() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.FlowSpecComponent.items)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_items();
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::FlowSpecComponentItem>&
FlowSpecComponent::_internal_items() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.items_;
}
inline ::google::protobuf::RepeatedPtrField<::apipb::FlowSpecComponentItem>* PROTOBUF_NONNULL
FlowSpecComponent::_internal_mutable_items() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.items_;
}

// -------------------------------------------------------------------

// FlowSpecNLRI

// repeated .google.protobuf.Any rules = 1;
inline int FlowSpecNLRI::_internal_rules_size() const {
  return _internal_rules().size();
}
inline int FlowSpecNLRI::rules_size() const {
  return _internal_rules_size();
}
inline const ::google::protobuf::Any& FlowSpecNLRI::rules(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.FlowSpecNLRI.rules)
  return _internal_rules().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL FlowSpecNLRI::mutable_rules(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.FlowSpecNLRI.rules)
  return _internal_mutable_rules()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL FlowSpecNLRI::add_rules()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_rules()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.FlowSpecNLRI.rules)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& FlowSpecNLRI::rules() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.FlowSpecNLRI.rules)
  return _internal_rules();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
FlowSpecNLRI::mutable_rules() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.FlowSpecNLRI.rules)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_rules();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
FlowSpecNLRI::_internal_rules() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.rules_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
FlowSpecNLRI::_internal_mutable_rules() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.rules_;
}

// -------------------------------------------------------------------

// VPNFlowSpecNLRI

// .google.protobuf.Any rd = 1;
inline bool VPNFlowSpecNLRI::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& VPNFlowSpecNLRI::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& VPNFlowSpecNLRI::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.VPNFlowSpecNLRI.rd)
  return _internal_rd();
}
inline void VPNFlowSpecNLRI::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.VPNFlowSpecNLRI.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE VPNFlowSpecNLRI::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE VPNFlowSpecNLRI::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.VPNFlowSpecNLRI.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL VPNFlowSpecNLRI::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL VPNFlowSpecNLRI::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.VPNFlowSpecNLRI.rd)
  return _msg;
}
inline void VPNFlowSpecNLRI::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.VPNFlowSpecNLRI.rd)
}

// repeated .google.protobuf.Any rules = 2;
inline int VPNFlowSpecNLRI::_internal_rules_size() const {
  return _internal_rules().size();
}
inline int VPNFlowSpecNLRI::rules_size() const {
  return _internal_rules_size();
}
inline const ::google::protobuf::Any& VPNFlowSpecNLRI::rules(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.VPNFlowSpecNLRI.rules)
  return _internal_rules().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL VPNFlowSpecNLRI::mutable_rules(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.VPNFlowSpecNLRI.rules)
  return _internal_mutable_rules()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL VPNFlowSpecNLRI::add_rules()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_rules()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.VPNFlowSpecNLRI.rules)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& VPNFlowSpecNLRI::rules() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.VPNFlowSpecNLRI.rules)
  return _internal_rules();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
VPNFlowSpecNLRI::mutable_rules() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.VPNFlowSpecNLRI.rules)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_rules();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
VPNFlowSpecNLRI::_internal_rules() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.rules_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
VPNFlowSpecNLRI::_internal_mutable_rules() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.rules_;
}

// -------------------------------------------------------------------

// OpaqueNLRI

// bytes key = 1;
inline void OpaqueNLRI::clear_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.key_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& OpaqueNLRI::key() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.OpaqueNLRI.key)
  return _internal_key();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OpaqueNLRI::set_key(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.key_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.OpaqueNLRI.key)
}
inline ::std::string* PROTOBUF_NONNULL OpaqueNLRI::mutable_key()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_key();
  // @@protoc_insertion_point(field_mutable:apipb.OpaqueNLRI.key)
  return _s;
}
inline const ::std::string& OpaqueNLRI::_internal_key() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.key_.Get();
}
inline void OpaqueNLRI::_internal_set_key(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.key_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OpaqueNLRI::_internal_mutable_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.key_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OpaqueNLRI::release_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.OpaqueNLRI.key)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.key_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.key_.Set("", GetArena());
  }
  return released;
}
inline void OpaqueNLRI::set_allocated_key(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.key_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.key_.IsDefault()) {
    _impl_.key_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.OpaqueNLRI.key)
}

// bytes value = 2;
inline void OpaqueNLRI::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& OpaqueNLRI::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.OpaqueNLRI.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OpaqueNLRI::set_value(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.value_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.OpaqueNLRI.value)
}
inline ::std::string* PROTOBUF_NONNULL OpaqueNLRI::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:apipb.OpaqueNLRI.value)
  return _s;
}
inline const ::std::string& OpaqueNLRI::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_.Get();
}
inline void OpaqueNLRI::_internal_set_value(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OpaqueNLRI::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.value_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OpaqueNLRI::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.OpaqueNLRI.value)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.value_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.value_.Set("", GetArena());
  }
  return released;
}
inline void OpaqueNLRI::set_allocated_value(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.value_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.value_.IsDefault()) {
    _impl_.value_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.OpaqueNLRI.value)
}

// -------------------------------------------------------------------

// LsNodeDescriptor

// uint32 asn = 1;
inline void LsNodeDescriptor::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t LsNodeDescriptor::asn() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeDescriptor.asn)
  return _internal_asn();
}
inline void LsNodeDescriptor::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeDescriptor.asn)
}
inline ::uint32_t LsNodeDescriptor::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void LsNodeDescriptor::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// uint32 bgp_ls_id = 2;
inline void LsNodeDescriptor::clear_bgp_ls_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bgp_ls_id_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t LsNodeDescriptor::bgp_ls_id() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeDescriptor.bgp_ls_id)
  return _internal_bgp_ls_id();
}
inline void LsNodeDescriptor::set_bgp_ls_id(::uint32_t value) {
  _internal_set_bgp_ls_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeDescriptor.bgp_ls_id)
}
inline ::uint32_t LsNodeDescriptor::_internal_bgp_ls_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bgp_ls_id_;
}
inline void LsNodeDescriptor::_internal_set_bgp_ls_id(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bgp_ls_id_ = value;
}

// uint32 ospf_area_id = 3;
inline void LsNodeDescriptor::clear_ospf_area_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ospf_area_id_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::uint32_t LsNodeDescriptor::ospf_area_id() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeDescriptor.ospf_area_id)
  return _internal_ospf_area_id();
}
inline void LsNodeDescriptor::set_ospf_area_id(::uint32_t value) {
  _internal_set_ospf_area_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeDescriptor.ospf_area_id)
}
inline ::uint32_t LsNodeDescriptor::_internal_ospf_area_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ospf_area_id_;
}
inline void LsNodeDescriptor::_internal_set_ospf_area_id(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ospf_area_id_ = value;
}

// bool pseudonode = 4;
inline void LsNodeDescriptor::clear_pseudonode() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pseudonode_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline bool LsNodeDescriptor::pseudonode() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeDescriptor.pseudonode)
  return _internal_pseudonode();
}
inline void LsNodeDescriptor::set_pseudonode(bool value) {
  _internal_set_pseudonode(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeDescriptor.pseudonode)
}
inline bool LsNodeDescriptor::_internal_pseudonode() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.pseudonode_;
}
inline void LsNodeDescriptor::_internal_set_pseudonode(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.pseudonode_ = value;
}

// string igp_router_id = 5;
inline void LsNodeDescriptor::clear_igp_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.igp_router_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& LsNodeDescriptor::igp_router_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsNodeDescriptor.igp_router_id)
  return _internal_igp_router_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsNodeDescriptor::set_igp_router_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.igp_router_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsNodeDescriptor.igp_router_id)
}
inline ::std::string* PROTOBUF_NONNULL LsNodeDescriptor::mutable_igp_router_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_igp_router_id();
  // @@protoc_insertion_point(field_mutable:apipb.LsNodeDescriptor.igp_router_id)
  return _s;
}
inline const ::std::string& LsNodeDescriptor::_internal_igp_router_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.igp_router_id_.Get();
}
inline void LsNodeDescriptor::_internal_set_igp_router_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.igp_router_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsNodeDescriptor::_internal_mutable_igp_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.igp_router_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsNodeDescriptor::release_igp_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsNodeDescriptor.igp_router_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.igp_router_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.igp_router_id_.Set("", GetArena());
  }
  return released;
}
inline void LsNodeDescriptor::set_allocated_igp_router_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.igp_router_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.igp_router_id_.IsDefault()) {
    _impl_.igp_router_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsNodeDescriptor.igp_router_id)
}

// string bgp_router_id = 6;
inline void LsNodeDescriptor::clear_bgp_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bgp_router_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& LsNodeDescriptor::bgp_router_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsNodeDescriptor.bgp_router_id)
  return _internal_bgp_router_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsNodeDescriptor::set_bgp_router_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.bgp_router_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsNodeDescriptor.bgp_router_id)
}
inline ::std::string* PROTOBUF_NONNULL LsNodeDescriptor::mutable_bgp_router_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_bgp_router_id();
  // @@protoc_insertion_point(field_mutable:apipb.LsNodeDescriptor.bgp_router_id)
  return _s;
}
inline const ::std::string& LsNodeDescriptor::_internal_bgp_router_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bgp_router_id_.Get();
}
inline void LsNodeDescriptor::_internal_set_bgp_router_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bgp_router_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsNodeDescriptor::_internal_mutable_bgp_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.bgp_router_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsNodeDescriptor::release_bgp_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsNodeDescriptor.bgp_router_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.bgp_router_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.bgp_router_id_.Set("", GetArena());
  }
  return released;
}
inline void LsNodeDescriptor::set_allocated_bgp_router_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.bgp_router_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.bgp_router_id_.IsDefault()) {
    _impl_.bgp_router_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsNodeDescriptor.bgp_router_id)
}

// uint32 bgp_confederation_member = 7;
inline void LsNodeDescriptor::clear_bgp_confederation_member() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bgp_confederation_member_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline ::uint32_t LsNodeDescriptor::bgp_confederation_member() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeDescriptor.bgp_confederation_member)
  return _internal_bgp_confederation_member();
}
inline void LsNodeDescriptor::set_bgp_confederation_member(::uint32_t value) {
  _internal_set_bgp_confederation_member(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeDescriptor.bgp_confederation_member)
}
inline ::uint32_t LsNodeDescriptor::_internal_bgp_confederation_member() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bgp_confederation_member_;
}
inline void LsNodeDescriptor::_internal_set_bgp_confederation_member(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bgp_confederation_member_ = value;
}

// -------------------------------------------------------------------

// LsLinkDescriptor

// uint32 link_local_id = 1;
inline void LsLinkDescriptor::clear_link_local_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.link_local_id_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::uint32_t LsLinkDescriptor::link_local_id() const {
  // @@protoc_insertion_point(field_get:apipb.LsLinkDescriptor.link_local_id)
  return _internal_link_local_id();
}
inline void LsLinkDescriptor::set_link_local_id(::uint32_t value) {
  _internal_set_link_local_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:apipb.LsLinkDescriptor.link_local_id)
}
inline ::uint32_t LsLinkDescriptor::_internal_link_local_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.link_local_id_;
}
inline void LsLinkDescriptor::_internal_set_link_local_id(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.link_local_id_ = value;
}

// uint32 link_remote_id = 2;
inline void LsLinkDescriptor::clear_link_remote_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.link_remote_id_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::uint32_t LsLinkDescriptor::link_remote_id() const {
  // @@protoc_insertion_point(field_get:apipb.LsLinkDescriptor.link_remote_id)
  return _internal_link_remote_id();
}
inline void LsLinkDescriptor::set_link_remote_id(::uint32_t value) {
  _internal_set_link_remote_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:apipb.LsLinkDescriptor.link_remote_id)
}
inline ::uint32_t LsLinkDescriptor::_internal_link_remote_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.link_remote_id_;
}
inline void LsLinkDescriptor::_internal_set_link_remote_id(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.link_remote_id_ = value;
}

// string interface_addr_ipv4 = 3;
inline void LsLinkDescriptor::clear_interface_addr_ipv4() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interface_addr_ipv4_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& LsLinkDescriptor::interface_addr_ipv4() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsLinkDescriptor.interface_addr_ipv4)
  return _internal_interface_addr_ipv4();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsLinkDescriptor::set_interface_addr_ipv4(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.interface_addr_ipv4_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsLinkDescriptor.interface_addr_ipv4)
}
inline ::std::string* PROTOBUF_NONNULL LsLinkDescriptor::mutable_interface_addr_ipv4()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_interface_addr_ipv4();
  // @@protoc_insertion_point(field_mutable:apipb.LsLinkDescriptor.interface_addr_ipv4)
  return _s;
}
inline const ::std::string& LsLinkDescriptor::_internal_interface_addr_ipv4() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.interface_addr_ipv4_.Get();
}
inline void LsLinkDescriptor::_internal_set_interface_addr_ipv4(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interface_addr_ipv4_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsLinkDescriptor::_internal_mutable_interface_addr_ipv4() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.interface_addr_ipv4_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsLinkDescriptor::release_interface_addr_ipv4() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsLinkDescriptor.interface_addr_ipv4)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.interface_addr_ipv4_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.interface_addr_ipv4_.Set("", GetArena());
  }
  return released;
}
inline void LsLinkDescriptor::set_allocated_interface_addr_ipv4(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.interface_addr_ipv4_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.interface_addr_ipv4_.IsDefault()) {
    _impl_.interface_addr_ipv4_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsLinkDescriptor.interface_addr_ipv4)
}

// string neighbor_addr_ipv4 = 4;
inline void LsLinkDescriptor::clear_neighbor_addr_ipv4() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.neighbor_addr_ipv4_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& LsLinkDescriptor::neighbor_addr_ipv4() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsLinkDescriptor.neighbor_addr_ipv4)
  return _internal_neighbor_addr_ipv4();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsLinkDescriptor::set_neighbor_addr_ipv4(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.neighbor_addr_ipv4_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsLinkDescriptor.neighbor_addr_ipv4)
}
inline ::std::string* PROTOBUF_NONNULL LsLinkDescriptor::mutable_neighbor_addr_ipv4()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_neighbor_addr_ipv4();
  // @@protoc_insertion_point(field_mutable:apipb.LsLinkDescriptor.neighbor_addr_ipv4)
  return _s;
}
inline const ::std::string& LsLinkDescriptor::_internal_neighbor_addr_ipv4() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.neighbor_addr_ipv4_.Get();
}
inline void LsLinkDescriptor::_internal_set_neighbor_addr_ipv4(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.neighbor_addr_ipv4_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsLinkDescriptor::_internal_mutable_neighbor_addr_ipv4() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.neighbor_addr_ipv4_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsLinkDescriptor::release_neighbor_addr_ipv4() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsLinkDescriptor.neighbor_addr_ipv4)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.neighbor_addr_ipv4_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.neighbor_addr_ipv4_.Set("", GetArena());
  }
  return released;
}
inline void LsLinkDescriptor::set_allocated_neighbor_addr_ipv4(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.neighbor_addr_ipv4_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.neighbor_addr_ipv4_.IsDefault()) {
    _impl_.neighbor_addr_ipv4_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsLinkDescriptor.neighbor_addr_ipv4)
}

// string interface_addr_ipv6 = 5;
inline void LsLinkDescriptor::clear_interface_addr_ipv6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interface_addr_ipv6_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& LsLinkDescriptor::interface_addr_ipv6() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsLinkDescriptor.interface_addr_ipv6)
  return _internal_interface_addr_ipv6();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsLinkDescriptor::set_interface_addr_ipv6(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.interface_addr_ipv6_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsLinkDescriptor.interface_addr_ipv6)
}
inline ::std::string* PROTOBUF_NONNULL LsLinkDescriptor::mutable_interface_addr_ipv6()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_interface_addr_ipv6();
  // @@protoc_insertion_point(field_mutable:apipb.LsLinkDescriptor.interface_addr_ipv6)
  return _s;
}
inline const ::std::string& LsLinkDescriptor::_internal_interface_addr_ipv6() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.interface_addr_ipv6_.Get();
}
inline void LsLinkDescriptor::_internal_set_interface_addr_ipv6(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interface_addr_ipv6_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsLinkDescriptor::_internal_mutable_interface_addr_ipv6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.interface_addr_ipv6_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsLinkDescriptor::release_interface_addr_ipv6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsLinkDescriptor.interface_addr_ipv6)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.interface_addr_ipv6_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.interface_addr_ipv6_.Set("", GetArena());
  }
  return released;
}
inline void LsLinkDescriptor::set_allocated_interface_addr_ipv6(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.interface_addr_ipv6_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.interface_addr_ipv6_.IsDefault()) {
    _impl_.interface_addr_ipv6_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsLinkDescriptor.interface_addr_ipv6)
}

// string neighbor_addr_ipv6 = 6;
inline void LsLinkDescriptor::clear_neighbor_addr_ipv6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.neighbor_addr_ipv6_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& LsLinkDescriptor::neighbor_addr_ipv6() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsLinkDescriptor.neighbor_addr_ipv6)
  return _internal_neighbor_addr_ipv6();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsLinkDescriptor::set_neighbor_addr_ipv6(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.neighbor_addr_ipv6_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsLinkDescriptor.neighbor_addr_ipv6)
}
inline ::std::string* PROTOBUF_NONNULL LsLinkDescriptor::mutable_neighbor_addr_ipv6()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_neighbor_addr_ipv6();
  // @@protoc_insertion_point(field_mutable:apipb.LsLinkDescriptor.neighbor_addr_ipv6)
  return _s;
}
inline const ::std::string& LsLinkDescriptor::_internal_neighbor_addr_ipv6() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.neighbor_addr_ipv6_.Get();
}
inline void LsLinkDescriptor::_internal_set_neighbor_addr_ipv6(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.neighbor_addr_ipv6_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsLinkDescriptor::_internal_mutable_neighbor_addr_ipv6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.neighbor_addr_ipv6_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsLinkDescriptor::release_neighbor_addr_ipv6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsLinkDescriptor.neighbor_addr_ipv6)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.neighbor_addr_ipv6_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.neighbor_addr_ipv6_.Set("", GetArena());
  }
  return released;
}
inline void LsLinkDescriptor::set_allocated_neighbor_addr_ipv6(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.neighbor_addr_ipv6_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.neighbor_addr_ipv6_.IsDefault()) {
    _impl_.neighbor_addr_ipv6_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsLinkDescriptor.neighbor_addr_ipv6)
}

// -------------------------------------------------------------------

// LsPrefixDescriptor

// repeated string ip_reachability = 1;
inline int LsPrefixDescriptor::_internal_ip_reachability_size() const {
  return _internal_ip_reachability().size();
}
inline int LsPrefixDescriptor::ip_reachability_size() const {
  return _internal_ip_reachability_size();
}
inline void LsPrefixDescriptor::clear_ip_reachability() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ip_reachability_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL LsPrefixDescriptor::add_ip_reachability()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_ip_reachability()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:apipb.LsPrefixDescriptor.ip_reachability)
  return _s;
}
inline const ::std::string& LsPrefixDescriptor::ip_reachability(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsPrefixDescriptor.ip_reachability)
  return _internal_ip_reachability().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL LsPrefixDescriptor::mutable_ip_reachability(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.LsPrefixDescriptor.ip_reachability)
  return _internal_mutable_ip_reachability()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void LsPrefixDescriptor::set_ip_reachability(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_ip_reachability()->Mutable(index),
      ::std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:apipb.LsPrefixDescriptor.ip_reachability)
}
template <typename Arg_, typename... Args_>
inline void LsPrefixDescriptor::add_ip_reachability(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_ip_reachability(), ::std::forward<Arg_>(value),
      args... );
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.LsPrefixDescriptor.ip_reachability)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& LsPrefixDescriptor::ip_reachability()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.LsPrefixDescriptor.ip_reachability)
  return _internal_ip_reachability();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
LsPrefixDescriptor::mutable_ip_reachability() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.LsPrefixDescriptor.ip_reachability)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_ip_reachability();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
LsPrefixDescriptor::_internal_ip_reachability() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ip_reachability_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
LsPrefixDescriptor::_internal_mutable_ip_reachability() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.ip_reachability_;
}

// .apipb.LsOspfRouteType ospf_route_type = 2;
inline void LsPrefixDescriptor::clear_ospf_route_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ospf_route_type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::apipb::LsOspfRouteType LsPrefixDescriptor::ospf_route_type() const {
  // @@protoc_insertion_point(field_get:apipb.LsPrefixDescriptor.ospf_route_type)
  return _internal_ospf_route_type();
}
inline void LsPrefixDescriptor::set_ospf_route_type(::apipb::LsOspfRouteType value) {
  _internal_set_ospf_route_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LsPrefixDescriptor.ospf_route_type)
}
inline ::apipb::LsOspfRouteType LsPrefixDescriptor::_internal_ospf_route_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::apipb::LsOspfRouteType>(_impl_.ospf_route_type_);
}
inline void LsPrefixDescriptor::_internal_set_ospf_route_type(::apipb::LsOspfRouteType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ospf_route_type_ = value;
}

// -------------------------------------------------------------------

// LsNodeNLRI

// .apipb.LsNodeDescriptor local_node = 1;
inline bool LsNodeNLRI::has_local_node() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.local_node_ != nullptr);
  return value;
}
inline void LsNodeNLRI::clear_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.local_node_ != nullptr) _impl_.local_node_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LsNodeDescriptor& LsNodeNLRI::_internal_local_node() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsNodeDescriptor* p = _impl_.local_node_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsNodeDescriptor>(&::apipb::LsNodeDescriptor_globals_);
}
inline const ::apipb::LsNodeDescriptor& LsNodeNLRI::local_node() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsNodeNLRI.local_node)
  return _internal_local_node();
}
inline void LsNodeNLRI::unsafe_arena_set_allocated_local_node(
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.local_node_);
  }
  _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsNodeNLRI.local_node)
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsNodeNLRI::release_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* released = _impl_.local_node_;
  _impl_.local_node_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsNodeNLRI::unsafe_arena_release_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsNodeNLRI.local_node)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* temp = _impl_.local_node_;
  _impl_.local_node_ = nullptr;
  return temp;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsNodeNLRI::_internal_mutable_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.local_node_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsNodeDescriptor>(GetArena());
    _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(p);
  }
  return _impl_.local_node_;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsNodeNLRI::mutable_local_node()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* _msg = _internal_mutable_local_node();
  // @@protoc_insertion_point(field_mutable:apipb.LsNodeNLRI.local_node)
  return _msg;
}
inline void LsNodeNLRI::set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.local_node_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsNodeNLRI.local_node)
}

// -------------------------------------------------------------------

// LsLinkNLRI

// .apipb.LsNodeDescriptor local_node = 1;
inline bool LsLinkNLRI::has_local_node() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.local_node_ != nullptr);
  return value;
}
inline void LsLinkNLRI::clear_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.local_node_ != nullptr) _impl_.local_node_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LsNodeDescriptor& LsLinkNLRI::_internal_local_node() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsNodeDescriptor* p = _impl_.local_node_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsNodeDescriptor>(&::apipb::LsNodeDescriptor_globals_);
}
inline const ::apipb::LsNodeDescriptor& LsLinkNLRI::local_node() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsLinkNLRI.local_node)
  return _internal_local_node();
}
inline void LsLinkNLRI::unsafe_arena_set_allocated_local_node(
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.local_node_);
  }
  _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsLinkNLRI.local_node)
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsLinkNLRI::release_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* released = _impl_.local_node_;
  _impl_.local_node_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsLinkNLRI::unsafe_arena_release_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsLinkNLRI.local_node)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* temp = _impl_.local_node_;
  _impl_.local_node_ = nullptr;
  return temp;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsLinkNLRI::_internal_mutable_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.local_node_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsNodeDescriptor>(GetArena());
    _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(p);
  }
  return _impl_.local_node_;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsLinkNLRI::mutable_local_node()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* _msg = _internal_mutable_local_node();
  // @@protoc_insertion_point(field_mutable:apipb.LsLinkNLRI.local_node)
  return _msg;
}
inline void LsLinkNLRI::set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.local_node_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsLinkNLRI.local_node)
}

// .apipb.LsNodeDescriptor remote_node = 2;
inline bool LsLinkNLRI::has_remote_node() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.remote_node_ != nullptr);
  return value;
}
inline void LsLinkNLRI::clear_remote_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.remote_node_ != nullptr) _impl_.remote_node_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::LsNodeDescriptor& LsLinkNLRI::_internal_remote_node() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsNodeDescriptor* p = _impl_.remote_node_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsNodeDescriptor>(&::apipb::LsNodeDescriptor_globals_);
}
inline const ::apipb::LsNodeDescriptor& LsLinkNLRI::remote_node() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsLinkNLRI.remote_node)
  return _internal_remote_node();
}
inline void LsLinkNLRI::unsafe_arena_set_allocated_remote_node(
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.remote_node_);
  }
  _impl_.remote_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsLinkNLRI.remote_node)
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsLinkNLRI::release_remote_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsNodeDescriptor* released = _impl_.remote_node_;
  _impl_.remote_node_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsLinkNLRI::unsafe_arena_release_remote_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsLinkNLRI.remote_node)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsNodeDescriptor* temp = _impl_.remote_node_;
  _impl_.remote_node_ = nullptr;
  return temp;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsLinkNLRI::_internal_mutable_remote_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.remote_node_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsNodeDescriptor>(GetArena());
    _impl_.remote_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(p);
  }
  return _impl_.remote_node_;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsLinkNLRI::mutable_remote_node()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsNodeDescriptor* _msg = _internal_mutable_remote_node();
  // @@protoc_insertion_point(field_mutable:apipb.LsLinkNLRI.remote_node)
  return _msg;
}
inline void LsLinkNLRI::set_allocated_remote_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.remote_node_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.remote_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsLinkNLRI.remote_node)
}

// .apipb.LsLinkDescriptor link_descriptor = 3;
inline bool LsLinkNLRI::has_link_descriptor() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.link_descriptor_ != nullptr);
  return value;
}
inline void LsLinkNLRI::clear_link_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.link_descriptor_ != nullptr) _impl_.link_descriptor_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::apipb::LsLinkDescriptor& LsLinkNLRI::_internal_link_descriptor() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsLinkDescriptor* p = _impl_.link_descriptor_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsLinkDescriptor>(&::apipb::LsLinkDescriptor_globals_);
}
inline const ::apipb::LsLinkDescriptor& LsLinkNLRI::link_descriptor() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsLinkNLRI.link_descriptor)
  return _internal_link_descriptor();
}
inline void LsLinkNLRI::unsafe_arena_set_allocated_link_descriptor(
    ::apipb::LsLinkDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.link_descriptor_);
  }
  _impl_.link_descriptor_ = reinterpret_cast<::apipb::LsLinkDescriptor*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsLinkNLRI.link_descriptor)
}
inline ::apipb::LsLinkDescriptor* PROTOBUF_NULLABLE LsLinkNLRI::release_link_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::LsLinkDescriptor* released = _impl_.link_descriptor_;
  _impl_.link_descriptor_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsLinkDescriptor* PROTOBUF_NULLABLE LsLinkNLRI::unsafe_arena_release_link_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsLinkNLRI.link_descriptor)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::LsLinkDescriptor* temp = _impl_.link_descriptor_;
  _impl_.link_descriptor_ = nullptr;
  return temp;
}
inline ::apipb::LsLinkDescriptor* PROTOBUF_NONNULL LsLinkNLRI::_internal_mutable_link_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.link_descriptor_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsLinkDescriptor>(GetArena());
    _impl_.link_descriptor_ = reinterpret_cast<::apipb::LsLinkDescriptor*>(p);
  }
  return _impl_.link_descriptor_;
}
inline ::apipb::LsLinkDescriptor* PROTOBUF_NONNULL LsLinkNLRI::mutable_link_descriptor()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::LsLinkDescriptor* _msg = _internal_mutable_link_descriptor();
  // @@protoc_insertion_point(field_mutable:apipb.LsLinkNLRI.link_descriptor)
  return _msg;
}
inline void LsLinkNLRI::set_allocated_link_descriptor(::apipb::LsLinkDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.link_descriptor_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.link_descriptor_ = reinterpret_cast<::apipb::LsLinkDescriptor*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsLinkNLRI.link_descriptor)
}

// -------------------------------------------------------------------

// LsPrefixV4NLRI

// .apipb.LsNodeDescriptor local_node = 1;
inline bool LsPrefixV4NLRI::has_local_node() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.local_node_ != nullptr);
  return value;
}
inline void LsPrefixV4NLRI::clear_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.local_node_ != nullptr) _impl_.local_node_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LsNodeDescriptor& LsPrefixV4NLRI::_internal_local_node() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsNodeDescriptor* p = _impl_.local_node_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsNodeDescriptor>(&::apipb::LsNodeDescriptor_globals_);
}
inline const ::apipb::LsNodeDescriptor& LsPrefixV4NLRI::local_node() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsPrefixV4NLRI.local_node)
  return _internal_local_node();
}
inline void LsPrefixV4NLRI::unsafe_arena_set_allocated_local_node(
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.local_node_);
  }
  _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsPrefixV4NLRI.local_node)
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsPrefixV4NLRI::release_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* released = _impl_.local_node_;
  _impl_.local_node_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsPrefixV4NLRI::unsafe_arena_release_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsPrefixV4NLRI.local_node)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* temp = _impl_.local_node_;
  _impl_.local_node_ = nullptr;
  return temp;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsPrefixV4NLRI::_internal_mutable_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.local_node_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsNodeDescriptor>(GetArena());
    _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(p);
  }
  return _impl_.local_node_;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsPrefixV4NLRI::mutable_local_node()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* _msg = _internal_mutable_local_node();
  // @@protoc_insertion_point(field_mutable:apipb.LsPrefixV4NLRI.local_node)
  return _msg;
}
inline void LsPrefixV4NLRI::set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.local_node_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsPrefixV4NLRI.local_node)
}

// .apipb.LsPrefixDescriptor prefix_descriptor = 2;
inline bool LsPrefixV4NLRI::has_prefix_descriptor() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.prefix_descriptor_ != nullptr);
  return value;
}
inline void LsPrefixV4NLRI::clear_prefix_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.prefix_descriptor_ != nullptr) _impl_.prefix_descriptor_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::LsPrefixDescriptor& LsPrefixV4NLRI::_internal_prefix_descriptor() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsPrefixDescriptor* p = _impl_.prefix_descriptor_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsPrefixDescriptor>(&::apipb::LsPrefixDescriptor_globals_);
}
inline const ::apipb::LsPrefixDescriptor& LsPrefixV4NLRI::prefix_descriptor() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsPrefixV4NLRI.prefix_descriptor)
  return _internal_prefix_descriptor();
}
inline void LsPrefixV4NLRI::unsafe_arena_set_allocated_prefix_descriptor(
    ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.prefix_descriptor_);
  }
  _impl_.prefix_descriptor_ = reinterpret_cast<::apipb::LsPrefixDescriptor*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsPrefixV4NLRI.prefix_descriptor)
}
inline ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE LsPrefixV4NLRI::release_prefix_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsPrefixDescriptor* released = _impl_.prefix_descriptor_;
  _impl_.prefix_descriptor_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE LsPrefixV4NLRI::unsafe_arena_release_prefix_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsPrefixV4NLRI.prefix_descriptor)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsPrefixDescriptor* temp = _impl_.prefix_descriptor_;
  _impl_.prefix_descriptor_ = nullptr;
  return temp;
}
inline ::apipb::LsPrefixDescriptor* PROTOBUF_NONNULL LsPrefixV4NLRI::_internal_mutable_prefix_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.prefix_descriptor_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsPrefixDescriptor>(GetArena());
    _impl_.prefix_descriptor_ = reinterpret_cast<::apipb::LsPrefixDescriptor*>(p);
  }
  return _impl_.prefix_descriptor_;
}
inline ::apipb::LsPrefixDescriptor* PROTOBUF_NONNULL LsPrefixV4NLRI::mutable_prefix_descriptor()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsPrefixDescriptor* _msg = _internal_mutable_prefix_descriptor();
  // @@protoc_insertion_point(field_mutable:apipb.LsPrefixV4NLRI.prefix_descriptor)
  return _msg;
}
inline void LsPrefixV4NLRI::set_allocated_prefix_descriptor(::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.prefix_descriptor_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.prefix_descriptor_ = reinterpret_cast<::apipb::LsPrefixDescriptor*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsPrefixV4NLRI.prefix_descriptor)
}

// -------------------------------------------------------------------

// LsPrefixV6NLRI

// .apipb.LsNodeDescriptor local_node = 1;
inline bool LsPrefixV6NLRI::has_local_node() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.local_node_ != nullptr);
  return value;
}
inline void LsPrefixV6NLRI::clear_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.local_node_ != nullptr) _impl_.local_node_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LsNodeDescriptor& LsPrefixV6NLRI::_internal_local_node() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsNodeDescriptor* p = _impl_.local_node_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsNodeDescriptor>(&::apipb::LsNodeDescriptor_globals_);
}
inline const ::apipb::LsNodeDescriptor& LsPrefixV6NLRI::local_node() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsPrefixV6NLRI.local_node)
  return _internal_local_node();
}
inline void LsPrefixV6NLRI::unsafe_arena_set_allocated_local_node(
    ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.local_node_);
  }
  _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsPrefixV6NLRI.local_node)
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsPrefixV6NLRI::release_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* released = _impl_.local_node_;
  _impl_.local_node_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE LsPrefixV6NLRI::unsafe_arena_release_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsPrefixV6NLRI.local_node)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* temp = _impl_.local_node_;
  _impl_.local_node_ = nullptr;
  return temp;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsPrefixV6NLRI::_internal_mutable_local_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.local_node_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsNodeDescriptor>(GetArena());
    _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(p);
  }
  return _impl_.local_node_;
}
inline ::apipb::LsNodeDescriptor* PROTOBUF_NONNULL LsPrefixV6NLRI::mutable_local_node()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsNodeDescriptor* _msg = _internal_mutable_local_node();
  // @@protoc_insertion_point(field_mutable:apipb.LsPrefixV6NLRI.local_node)
  return _msg;
}
inline void LsPrefixV6NLRI::set_allocated_local_node(::apipb::LsNodeDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.local_node_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.local_node_ = reinterpret_cast<::apipb::LsNodeDescriptor*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsPrefixV6NLRI.local_node)
}

// .apipb.LsPrefixDescriptor prefix_descriptor = 2;
inline bool LsPrefixV6NLRI::has_prefix_descriptor() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.prefix_descriptor_ != nullptr);
  return value;
}
inline void LsPrefixV6NLRI::clear_prefix_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.prefix_descriptor_ != nullptr) _impl_.prefix_descriptor_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::LsPrefixDescriptor& LsPrefixV6NLRI::_internal_prefix_descriptor() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsPrefixDescriptor* p = _impl_.prefix_descriptor_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsPrefixDescriptor>(&::apipb::LsPrefixDescriptor_globals_);
}
inline const ::apipb::LsPrefixDescriptor& LsPrefixV6NLRI::prefix_descriptor() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsPrefixV6NLRI.prefix_descriptor)
  return _internal_prefix_descriptor();
}
inline void LsPrefixV6NLRI::unsafe_arena_set_allocated_prefix_descriptor(
    ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.prefix_descriptor_);
  }
  _impl_.prefix_descriptor_ = reinterpret_cast<::apipb::LsPrefixDescriptor*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsPrefixV6NLRI.prefix_descriptor)
}
inline ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE LsPrefixV6NLRI::release_prefix_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsPrefixDescriptor* released = _impl_.prefix_descriptor_;
  _impl_.prefix_descriptor_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE LsPrefixV6NLRI::unsafe_arena_release_prefix_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsPrefixV6NLRI.prefix_descriptor)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsPrefixDescriptor* temp = _impl_.prefix_descriptor_;
  _impl_.prefix_descriptor_ = nullptr;
  return temp;
}
inline ::apipb::LsPrefixDescriptor* PROTOBUF_NONNULL LsPrefixV6NLRI::_internal_mutable_prefix_descriptor() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.prefix_descriptor_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsPrefixDescriptor>(GetArena());
    _impl_.prefix_descriptor_ = reinterpret_cast<::apipb::LsPrefixDescriptor*>(p);
  }
  return _impl_.prefix_descriptor_;
}
inline ::apipb::LsPrefixDescriptor* PROTOBUF_NONNULL LsPrefixV6NLRI::mutable_prefix_descriptor()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsPrefixDescriptor* _msg = _internal_mutable_prefix_descriptor();
  // @@protoc_insertion_point(field_mutable:apipb.LsPrefixV6NLRI.prefix_descriptor)
  return _msg;
}
inline void LsPrefixV6NLRI::set_allocated_prefix_descriptor(::apipb::LsPrefixDescriptor* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.prefix_descriptor_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.prefix_descriptor_ = reinterpret_cast<::apipb::LsPrefixDescriptor*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsPrefixV6NLRI.prefix_descriptor)
}

// -------------------------------------------------------------------

// LsAddrPrefix

// .apipb.LsNLRIType type = 1;
inline void LsAddrPrefix::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::apipb::LsNLRIType LsAddrPrefix::type() const {
  // @@protoc_insertion_point(field_get:apipb.LsAddrPrefix.type)
  return _internal_type();
}
inline void LsAddrPrefix::set_type(::apipb::LsNLRIType value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LsAddrPrefix.type)
}
inline ::apipb::LsNLRIType LsAddrPrefix::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::apipb::LsNLRIType>(_impl_.type_);
}
inline void LsAddrPrefix::_internal_set_type(::apipb::LsNLRIType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// .google.protobuf.Any nlri = 2;
inline bool LsAddrPrefix::has_nlri() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.nlri_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& LsAddrPrefix::_internal_nlri() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.nlri_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& LsAddrPrefix::nlri() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAddrPrefix.nlri)
  return _internal_nlri();
}
inline void LsAddrPrefix::unsafe_arena_set_allocated_nlri(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.nlri_);
  }
  _impl_.nlri_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAddrPrefix.nlri)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE LsAddrPrefix::release_nlri() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* released = _impl_.nlri_;
  _impl_.nlri_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE LsAddrPrefix::unsafe_arena_release_nlri() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAddrPrefix.nlri)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* temp = _impl_.nlri_;
  _impl_.nlri_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL LsAddrPrefix::_internal_mutable_nlri() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.nlri_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.nlri_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.nlri_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL LsAddrPrefix::mutable_nlri()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* _msg = _internal_mutable_nlri();
  // @@protoc_insertion_point(field_mutable:apipb.LsAddrPrefix.nlri)
  return _msg;
}
inline void LsAddrPrefix::set_allocated_nlri(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.nlri_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.nlri_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAddrPrefix.nlri)
}

// uint32 length = 3;
inline void LsAddrPrefix::clear_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t LsAddrPrefix::length() const {
  // @@protoc_insertion_point(field_get:apipb.LsAddrPrefix.length)
  return _internal_length();
}
inline void LsAddrPrefix::set_length(::uint32_t value) {
  _internal_set_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LsAddrPrefix.length)
}
inline ::uint32_t LsAddrPrefix::_internal_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.length_;
}
inline void LsAddrPrefix::_internal_set_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.length_ = value;
}

// .apipb.LsProtocolID protocol_id = 4;
inline void LsAddrPrefix::clear_protocol_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protocol_id_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::apipb::LsProtocolID LsAddrPrefix::protocol_id() const {
  // @@protoc_insertion_point(field_get:apipb.LsAddrPrefix.protocol_id)
  return _internal_protocol_id();
}
inline void LsAddrPrefix::set_protocol_id(::apipb::LsProtocolID value) {
  _internal_set_protocol_id(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:apipb.LsAddrPrefix.protocol_id)
}
inline ::apipb::LsProtocolID LsAddrPrefix::_internal_protocol_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::apipb::LsProtocolID>(_impl_.protocol_id_);
}
inline void LsAddrPrefix::_internal_set_protocol_id(::apipb::LsProtocolID value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protocol_id_ = value;
}

// uint64 identifier = 5;
inline void LsAddrPrefix::clear_identifier() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.identifier_ = ::uint64_t{0u};
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint64_t LsAddrPrefix::identifier() const {
  // @@protoc_insertion_point(field_get:apipb.LsAddrPrefix.identifier)
  return _internal_identifier();
}
inline void LsAddrPrefix::set_identifier(::uint64_t value) {
  _internal_set_identifier(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.LsAddrPrefix.identifier)
}
inline ::uint64_t LsAddrPrefix::_internal_identifier() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.identifier_;
}
inline void LsAddrPrefix::_internal_set_identifier(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.identifier_ = value;
}

// -------------------------------------------------------------------

// MUPInterworkSegmentDiscoveryRoute

// .google.protobuf.Any rd = 1;
inline bool MUPInterworkSegmentDiscoveryRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& MUPInterworkSegmentDiscoveryRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& MUPInterworkSegmentDiscoveryRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MUPInterworkSegmentDiscoveryRoute.rd)
  return _internal_rd();
}
inline void MUPInterworkSegmentDiscoveryRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.MUPInterworkSegmentDiscoveryRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE MUPInterworkSegmentDiscoveryRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE MUPInterworkSegmentDiscoveryRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MUPInterworkSegmentDiscoveryRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MUPInterworkSegmentDiscoveryRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MUPInterworkSegmentDiscoveryRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.MUPInterworkSegmentDiscoveryRoute.rd)
  return _msg;
}
inline void MUPInterworkSegmentDiscoveryRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.MUPInterworkSegmentDiscoveryRoute.rd)
}

// string prefix = 2;
inline void MUPInterworkSegmentDiscoveryRoute::clear_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& MUPInterworkSegmentDiscoveryRoute::prefix() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MUPInterworkSegmentDiscoveryRoute.prefix)
  return _internal_prefix();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MUPInterworkSegmentDiscoveryRoute::set_prefix(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.prefix_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.MUPInterworkSegmentDiscoveryRoute.prefix)
}
inline ::std::string* PROTOBUF_NONNULL MUPInterworkSegmentDiscoveryRoute::mutable_prefix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_prefix();
  // @@protoc_insertion_point(field_mutable:apipb.MUPInterworkSegmentDiscoveryRoute.prefix)
  return _s;
}
inline const ::std::string& MUPInterworkSegmentDiscoveryRoute::_internal_prefix() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_.Get();
}
inline void MUPInterworkSegmentDiscoveryRoute::_internal_set_prefix(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL MUPInterworkSegmentDiscoveryRoute::_internal_mutable_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.prefix_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MUPInterworkSegmentDiscoveryRoute::release_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MUPInterworkSegmentDiscoveryRoute.prefix)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.prefix_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.prefix_.Set("", GetArena());
  }
  return released;
}
inline void MUPInterworkSegmentDiscoveryRoute::set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.prefix_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.prefix_.IsDefault()) {
    _impl_.prefix_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.MUPInterworkSegmentDiscoveryRoute.prefix)
}

// -------------------------------------------------------------------

// MUPDirectSegmentDiscoveryRoute

// .google.protobuf.Any rd = 1;
inline bool MUPDirectSegmentDiscoveryRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& MUPDirectSegmentDiscoveryRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& MUPDirectSegmentDiscoveryRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MUPDirectSegmentDiscoveryRoute.rd)
  return _internal_rd();
}
inline void MUPDirectSegmentDiscoveryRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.MUPDirectSegmentDiscoveryRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE MUPDirectSegmentDiscoveryRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE MUPDirectSegmentDiscoveryRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MUPDirectSegmentDiscoveryRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MUPDirectSegmentDiscoveryRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MUPDirectSegmentDiscoveryRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.MUPDirectSegmentDiscoveryRoute.rd)
  return _msg;
}
inline void MUPDirectSegmentDiscoveryRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.MUPDirectSegmentDiscoveryRoute.rd)
}

// string address = 2;
inline void MUPDirectSegmentDiscoveryRoute::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& MUPDirectSegmentDiscoveryRoute::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MUPDirectSegmentDiscoveryRoute.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MUPDirectSegmentDiscoveryRoute::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.MUPDirectSegmentDiscoveryRoute.address)
}
inline ::std::string* PROTOBUF_NONNULL MUPDirectSegmentDiscoveryRoute::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.MUPDirectSegmentDiscoveryRoute.address)
  return _s;
}
inline const ::std::string& MUPDirectSegmentDiscoveryRoute::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void MUPDirectSegmentDiscoveryRoute::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL MUPDirectSegmentDiscoveryRoute::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MUPDirectSegmentDiscoveryRoute::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MUPDirectSegmentDiscoveryRoute.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void MUPDirectSegmentDiscoveryRoute::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.MUPDirectSegmentDiscoveryRoute.address)
}

// -------------------------------------------------------------------

// MUPType1SessionTransformedRoute

// .google.protobuf.Any rd = 1;
inline bool MUPType1SessionTransformedRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& MUPType1SessionTransformedRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& MUPType1SessionTransformedRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MUPType1SessionTransformedRoute.rd)
  return _internal_rd();
}
inline void MUPType1SessionTransformedRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.MUPType1SessionTransformedRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE MUPType1SessionTransformedRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE MUPType1SessionTransformedRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MUPType1SessionTransformedRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MUPType1SessionTransformedRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MUPType1SessionTransformedRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.MUPType1SessionTransformedRoute.rd)
  return _msg;
}
inline void MUPType1SessionTransformedRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.MUPType1SessionTransformedRoute.rd)
}

// uint32 prefix_length = 2 [deprecated = true];
inline void MUPType1SessionTransformedRoute::clear_prefix_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t MUPType1SessionTransformedRoute::prefix_length() const {
  // @@protoc_insertion_point(field_get:apipb.MUPType1SessionTransformedRoute.prefix_length)
  return _internal_prefix_length();
}
inline void MUPType1SessionTransformedRoute::set_prefix_length(::uint32_t value) {
  _internal_set_prefix_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.MUPType1SessionTransformedRoute.prefix_length)
}
inline ::uint32_t MUPType1SessionTransformedRoute::_internal_prefix_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_length_;
}
inline void MUPType1SessionTransformedRoute::_internal_set_prefix_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_length_ = value;
}

// string prefix = 3;
inline void MUPType1SessionTransformedRoute::clear_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& MUPType1SessionTransformedRoute::prefix() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MUPType1SessionTransformedRoute.prefix)
  return _internal_prefix();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MUPType1SessionTransformedRoute::set_prefix(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.prefix_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.MUPType1SessionTransformedRoute.prefix)
}
inline ::std::string* PROTOBUF_NONNULL MUPType1SessionTransformedRoute::mutable_prefix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_prefix();
  // @@protoc_insertion_point(field_mutable:apipb.MUPType1SessionTransformedRoute.prefix)
  return _s;
}
inline const ::std::string& MUPType1SessionTransformedRoute::_internal_prefix() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.prefix_.Get();
}
inline void MUPType1SessionTransformedRoute::_internal_set_prefix(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.prefix_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL MUPType1SessionTransformedRoute::_internal_mutable_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.prefix_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MUPType1SessionTransformedRoute::release_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MUPType1SessionTransformedRoute.prefix)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.prefix_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.prefix_.Set("", GetArena());
  }
  return released;
}
inline void MUPType1SessionTransformedRoute::set_allocated_prefix(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.prefix_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.prefix_.IsDefault()) {
    _impl_.prefix_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.MUPType1SessionTransformedRoute.prefix)
}

// uint32 teid = 4;
inline void MUPType1SessionTransformedRoute::clear_teid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.teid_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::uint32_t MUPType1SessionTransformedRoute::teid() const {
  // @@protoc_insertion_point(field_get:apipb.MUPType1SessionTransformedRoute.teid)
  return _internal_teid();
}
inline void MUPType1SessionTransformedRoute::set_teid(::uint32_t value) {
  _internal_set_teid(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:apipb.MUPType1SessionTransformedRoute.teid)
}
inline ::uint32_t MUPType1SessionTransformedRoute::_internal_teid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.teid_;
}
inline void MUPType1SessionTransformedRoute::_internal_set_teid(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.teid_ = value;
}

// uint32 qfi = 5;
inline void MUPType1SessionTransformedRoute::clear_qfi() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.qfi_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::uint32_t MUPType1SessionTransformedRoute::qfi() const {
  // @@protoc_insertion_point(field_get:apipb.MUPType1SessionTransformedRoute.qfi)
  return _internal_qfi();
}
inline void MUPType1SessionTransformedRoute::set_qfi(::uint32_t value) {
  _internal_set_qfi(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:apipb.MUPType1SessionTransformedRoute.qfi)
}
inline ::uint32_t MUPType1SessionTransformedRoute::_internal_qfi() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.qfi_;
}
inline void MUPType1SessionTransformedRoute::_internal_set_qfi(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.qfi_ = value;
}

// uint32 endpoint_address_length = 6;
inline void MUPType1SessionTransformedRoute::clear_endpoint_address_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_address_length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline ::uint32_t MUPType1SessionTransformedRoute::endpoint_address_length() const {
  // @@protoc_insertion_point(field_get:apipb.MUPType1SessionTransformedRoute.endpoint_address_length)
  return _internal_endpoint_address_length();
}
inline void MUPType1SessionTransformedRoute::set_endpoint_address_length(::uint32_t value) {
  _internal_set_endpoint_address_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:apipb.MUPType1SessionTransformedRoute.endpoint_address_length)
}
inline ::uint32_t MUPType1SessionTransformedRoute::_internal_endpoint_address_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.endpoint_address_length_;
}
inline void MUPType1SessionTransformedRoute::_internal_set_endpoint_address_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_address_length_ = value;
}

// string endpoint_address = 7;
inline void MUPType1SessionTransformedRoute::clear_endpoint_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& MUPType1SessionTransformedRoute::endpoint_address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MUPType1SessionTransformedRoute.endpoint_address)
  return _internal_endpoint_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MUPType1SessionTransformedRoute::set_endpoint_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.endpoint_address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.MUPType1SessionTransformedRoute.endpoint_address)
}
inline ::std::string* PROTOBUF_NONNULL MUPType1SessionTransformedRoute::mutable_endpoint_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_endpoint_address();
  // @@protoc_insertion_point(field_mutable:apipb.MUPType1SessionTransformedRoute.endpoint_address)
  return _s;
}
inline const ::std::string& MUPType1SessionTransformedRoute::_internal_endpoint_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.endpoint_address_.Get();
}
inline void MUPType1SessionTransformedRoute::_internal_set_endpoint_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL MUPType1SessionTransformedRoute::_internal_mutable_endpoint_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.endpoint_address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MUPType1SessionTransformedRoute::release_endpoint_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MUPType1SessionTransformedRoute.endpoint_address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.endpoint_address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.endpoint_address_.Set("", GetArena());
  }
  return released;
}
inline void MUPType1SessionTransformedRoute::set_allocated_endpoint_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.endpoint_address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.endpoint_address_.IsDefault()) {
    _impl_.endpoint_address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.MUPType1SessionTransformedRoute.endpoint_address)
}

// -------------------------------------------------------------------

// MUPType2SessionTransformedRoute

// .google.protobuf.Any rd = 1;
inline bool MUPType2SessionTransformedRoute::has_rd() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.rd_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& MUPType2SessionTransformedRoute::_internal_rd() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.rd_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& MUPType2SessionTransformedRoute::rd() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MUPType2SessionTransformedRoute.rd)
  return _internal_rd();
}
inline void MUPType2SessionTransformedRoute::unsafe_arena_set_allocated_rd(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }
  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.MUPType2SessionTransformedRoute.rd)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE MUPType2SessionTransformedRoute::release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* released = _impl_.rd_;
  _impl_.rd_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE MUPType2SessionTransformedRoute::unsafe_arena_release_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MUPType2SessionTransformedRoute.rd)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* temp = _impl_.rd_;
  _impl_.rd_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MUPType2SessionTransformedRoute::_internal_mutable_rd() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.rd_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.rd_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MUPType2SessionTransformedRoute::mutable_rd()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::google::protobuf::Any* _msg = _internal_mutable_rd();
  // @@protoc_insertion_point(field_mutable:apipb.MUPType2SessionTransformedRoute.rd)
  return _msg;
}
inline void MUPType2SessionTransformedRoute::set_allocated_rd(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.rd_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.rd_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.MUPType2SessionTransformedRoute.rd)
}

// uint32 endpoint_address_length = 2;
inline void MUPType2SessionTransformedRoute::clear_endpoint_address_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_address_length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t MUPType2SessionTransformedRoute::endpoint_address_length() const {
  // @@protoc_insertion_point(field_get:apipb.MUPType2SessionTransformedRoute.endpoint_address_length)
  return _internal_endpoint_address_length();
}
inline void MUPType2SessionTransformedRoute::set_endpoint_address_length(::uint32_t value) {
  _internal_set_endpoint_address_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.MUPType2SessionTransformedRoute.endpoint_address_length)
}
inline ::uint32_t MUPType2SessionTransformedRoute::_internal_endpoint_address_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.endpoint_address_length_;
}
inline void MUPType2SessionTransformedRoute::_internal_set_endpoint_address_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_address_length_ = value;
}

// string endpoint_address = 3;
inline void MUPType2SessionTransformedRoute::clear_endpoint_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& MUPType2SessionTransformedRoute::endpoint_address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MUPType2SessionTransformedRoute.endpoint_address)
  return _internal_endpoint_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void MUPType2SessionTransformedRoute::set_endpoint_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.endpoint_address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.MUPType2SessionTransformedRoute.endpoint_address)
}
inline ::std::string* PROTOBUF_NONNULL MUPType2SessionTransformedRoute::mutable_endpoint_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_endpoint_address();
  // @@protoc_insertion_point(field_mutable:apipb.MUPType2SessionTransformedRoute.endpoint_address)
  return _s;
}
inline const ::std::string& MUPType2SessionTransformedRoute::_internal_endpoint_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.endpoint_address_.Get();
}
inline void MUPType2SessionTransformedRoute::_internal_set_endpoint_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL MUPType2SessionTransformedRoute::_internal_mutable_endpoint_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.endpoint_address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE MUPType2SessionTransformedRoute::release_endpoint_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MUPType2SessionTransformedRoute.endpoint_address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.endpoint_address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.endpoint_address_.Set("", GetArena());
  }
  return released;
}
inline void MUPType2SessionTransformedRoute::set_allocated_endpoint_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.endpoint_address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.endpoint_address_.IsDefault()) {
    _impl_.endpoint_address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.MUPType2SessionTransformedRoute.endpoint_address)
}

// uint32 teid = 4;
inline void MUPType2SessionTransformedRoute::clear_teid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.teid_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t MUPType2SessionTransformedRoute::teid() const {
  // @@protoc_insertion_point(field_get:apipb.MUPType2SessionTransformedRoute.teid)
  return _internal_teid();
}
inline void MUPType2SessionTransformedRoute::set_teid(::uint32_t value) {
  _internal_set_teid(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.MUPType2SessionTransformedRoute.teid)
}
inline ::uint32_t MUPType2SessionTransformedRoute::_internal_teid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.teid_;
}
inline void MUPType2SessionTransformedRoute::_internal_set_teid(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.teid_ = value;
}

// -------------------------------------------------------------------

// MpReachNLRIAttribute

// .apipb.Family family = 1;
inline bool MpReachNLRIAttribute::has_family() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.family_ != nullptr);
  return value;
}
inline const ::apipb::Family& MpReachNLRIAttribute::_internal_family() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::Family* p = _impl_.family_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::Family>(&::apipb::Family_globals_);
}
inline const ::apipb::Family& MpReachNLRIAttribute::family() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MpReachNLRIAttribute.family)
  return _internal_family();
}
inline void MpReachNLRIAttribute::unsafe_arena_set_allocated_family(
    ::apipb::Family* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.family_);
  }
  _impl_.family_ = reinterpret_cast<::apipb::Family*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.MpReachNLRIAttribute.family)
}
inline ::apipb::Family* PROTOBUF_NULLABLE MpReachNLRIAttribute::release_family() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::Family* released = _impl_.family_;
  _impl_.family_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::Family* PROTOBUF_NULLABLE MpReachNLRIAttribute::unsafe_arena_release_family() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MpReachNLRIAttribute.family)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::Family* temp = _impl_.family_;
  _impl_.family_ = nullptr;
  return temp;
}
inline ::apipb::Family* PROTOBUF_NONNULL MpReachNLRIAttribute::_internal_mutable_family() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.family_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::Family>(GetArena());
    _impl_.family_ = reinterpret_cast<::apipb::Family*>(p);
  }
  return _impl_.family_;
}
inline ::apipb::Family* PROTOBUF_NONNULL MpReachNLRIAttribute::mutable_family()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::Family* _msg = _internal_mutable_family();
  // @@protoc_insertion_point(field_mutable:apipb.MpReachNLRIAttribute.family)
  return _msg;
}
inline void MpReachNLRIAttribute::set_allocated_family(::apipb::Family* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.family_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.family_ = reinterpret_cast<::apipb::Family*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.MpReachNLRIAttribute.family)
}

// repeated string next_hops = 2;
inline int MpReachNLRIAttribute::_internal_next_hops_size() const {
  return _internal_next_hops().size();
}
inline int MpReachNLRIAttribute::next_hops_size() const {
  return _internal_next_hops_size();
}
inline void MpReachNLRIAttribute::clear_next_hops() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.next_hops_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::std::string* PROTOBUF_NONNULL MpReachNLRIAttribute::add_next_hops()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::std::string* _s =
      _internal_mutable_next_hops()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add_mutable:apipb.MpReachNLRIAttribute.next_hops)
  return _s;
}
inline const ::std::string& MpReachNLRIAttribute::next_hops(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MpReachNLRIAttribute.next_hops)
  return _internal_next_hops().Get(index);
}
inline ::std::string* PROTOBUF_NONNULL MpReachNLRIAttribute::mutable_next_hops(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.MpReachNLRIAttribute.next_hops)
  return _internal_mutable_next_hops()->Mutable(index);
}
template <typename Arg_, typename... Args_>
inline void MpReachNLRIAttribute::set_next_hops(int index, Arg_&& value, Args_... args) {
  ::google::protobuf::internal::AssignToString(
      *_internal_mutable_next_hops()->Mutable(index),
      ::std::forward<Arg_>(value), args... );
  // @@protoc_insertion_point(field_set:apipb.MpReachNLRIAttribute.next_hops)
}
template <typename Arg_, typename... Args_>
inline void MpReachNLRIAttribute::add_next_hops(Arg_&& value, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::internal::AddToRepeatedPtrField(
      ::google::protobuf::MessageLite::internal_visibility(), GetArena(),
      *_internal_mutable_next_hops(), ::std::forward<Arg_>(value),
      args... );
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.MpReachNLRIAttribute.next_hops)
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>& MpReachNLRIAttribute::next_hops()
    const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.MpReachNLRIAttribute.next_hops)
  return _internal_next_hops();
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
MpReachNLRIAttribute::mutable_next_hops() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.MpReachNLRIAttribute.next_hops)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_next_hops();
}
inline const ::google::protobuf::RepeatedPtrField<::std::string>&
MpReachNLRIAttribute::_internal_next_hops() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.next_hops_;
}
inline ::google::protobuf::RepeatedPtrField<::std::string>* PROTOBUF_NONNULL
MpReachNLRIAttribute::_internal_mutable_next_hops() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.next_hops_;
}

// repeated .google.protobuf.Any nlris = 3;
inline int MpReachNLRIAttribute::_internal_nlris_size() const {
  return _internal_nlris().size();
}
inline int MpReachNLRIAttribute::nlris_size() const {
  return _internal_nlris_size();
}
inline const ::google::protobuf::Any& MpReachNLRIAttribute::nlris(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MpReachNLRIAttribute.nlris)
  return _internal_nlris().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MpReachNLRIAttribute::mutable_nlris(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.MpReachNLRIAttribute.nlris)
  return _internal_mutable_nlris()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MpReachNLRIAttribute::add_nlris()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_nlris()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:apipb.MpReachNLRIAttribute.nlris)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& MpReachNLRIAttribute::nlris() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.MpReachNLRIAttribute.nlris)
  return _internal_nlris();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
MpReachNLRIAttribute::mutable_nlris() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:apipb.MpReachNLRIAttribute.nlris)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_nlris();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
MpReachNLRIAttribute::_internal_nlris() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.nlris_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
MpReachNLRIAttribute::_internal_mutable_nlris() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.nlris_;
}

// -------------------------------------------------------------------

// MpUnreachNLRIAttribute

// .apipb.Family family = 1;
inline bool MpUnreachNLRIAttribute::has_family() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.family_ != nullptr);
  return value;
}
inline const ::apipb::Family& MpUnreachNLRIAttribute::_internal_family() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::Family* p = _impl_.family_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::Family>(&::apipb::Family_globals_);
}
inline const ::apipb::Family& MpUnreachNLRIAttribute::family() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MpUnreachNLRIAttribute.family)
  return _internal_family();
}
inline void MpUnreachNLRIAttribute::unsafe_arena_set_allocated_family(
    ::apipb::Family* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.family_);
  }
  _impl_.family_ = reinterpret_cast<::apipb::Family*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.MpUnreachNLRIAttribute.family)
}
inline ::apipb::Family* PROTOBUF_NULLABLE MpUnreachNLRIAttribute::release_family() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::Family* released = _impl_.family_;
  _impl_.family_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::Family* PROTOBUF_NULLABLE MpUnreachNLRIAttribute::unsafe_arena_release_family() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.MpUnreachNLRIAttribute.family)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::Family* temp = _impl_.family_;
  _impl_.family_ = nullptr;
  return temp;
}
inline ::apipb::Family* PROTOBUF_NONNULL MpUnreachNLRIAttribute::_internal_mutable_family() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.family_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::Family>(GetArena());
    _impl_.family_ = reinterpret_cast<::apipb::Family*>(p);
  }
  return _impl_.family_;
}
inline ::apipb::Family* PROTOBUF_NONNULL MpUnreachNLRIAttribute::mutable_family()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::Family* _msg = _internal_mutable_family();
  // @@protoc_insertion_point(field_mutable:apipb.MpUnreachNLRIAttribute.family)
  return _msg;
}
inline void MpUnreachNLRIAttribute::set_allocated_family(::apipb::Family* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.family_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.family_ = reinterpret_cast<::apipb::Family*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.MpUnreachNLRIAttribute.family)
}

// repeated .google.protobuf.Any nlris = 3;
inline int MpUnreachNLRIAttribute::_internal_nlris_size() const {
  return _internal_nlris().size();
}
inline int MpUnreachNLRIAttribute::nlris_size() const {
  return _internal_nlris_size();
}
inline const ::google::protobuf::Any& MpUnreachNLRIAttribute::nlris(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.MpUnreachNLRIAttribute.nlris)
  return _internal_nlris().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MpUnreachNLRIAttribute::mutable_nlris(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.MpUnreachNLRIAttribute.nlris)
  return _internal_mutable_nlris()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL MpUnreachNLRIAttribute::add_nlris()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_nlris()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.MpUnreachNLRIAttribute.nlris)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& MpUnreachNLRIAttribute::nlris() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.MpUnreachNLRIAttribute.nlris)
  return _internal_nlris();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
MpUnreachNLRIAttribute::mutable_nlris() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.MpUnreachNLRIAttribute.nlris)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_nlris();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
MpUnreachNLRIAttribute::_internal_nlris() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.nlris_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
MpUnreachNLRIAttribute::_internal_mutable_nlris() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.nlris_;
}

// -------------------------------------------------------------------

// TwoOctetAsSpecificExtended

// bool is_transitive = 1;
inline void TwoOctetAsSpecificExtended::clear_is_transitive() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool TwoOctetAsSpecificExtended::is_transitive() const {
  // @@protoc_insertion_point(field_get:apipb.TwoOctetAsSpecificExtended.is_transitive)
  return _internal_is_transitive();
}
inline void TwoOctetAsSpecificExtended::set_is_transitive(bool value) {
  _internal_set_is_transitive(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TwoOctetAsSpecificExtended.is_transitive)
}
inline bool TwoOctetAsSpecificExtended::_internal_is_transitive() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_transitive_;
}
inline void TwoOctetAsSpecificExtended::_internal_set_is_transitive(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = value;
}

// uint32 sub_type = 2;
inline void TwoOctetAsSpecificExtended::clear_sub_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t TwoOctetAsSpecificExtended::sub_type() const {
  // @@protoc_insertion_point(field_get:apipb.TwoOctetAsSpecificExtended.sub_type)
  return _internal_sub_type();
}
inline void TwoOctetAsSpecificExtended::set_sub_type(::uint32_t value) {
  _internal_set_sub_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.TwoOctetAsSpecificExtended.sub_type)
}
inline ::uint32_t TwoOctetAsSpecificExtended::_internal_sub_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sub_type_;
}
inline void TwoOctetAsSpecificExtended::_internal_set_sub_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = value;
}

// uint32 asn = 3;
inline void TwoOctetAsSpecificExtended::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t TwoOctetAsSpecificExtended::asn() const {
  // @@protoc_insertion_point(field_get:apipb.TwoOctetAsSpecificExtended.asn)
  return _internal_asn();
}
inline void TwoOctetAsSpecificExtended::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.TwoOctetAsSpecificExtended.asn)
}
inline ::uint32_t TwoOctetAsSpecificExtended::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void TwoOctetAsSpecificExtended::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// uint32 local_admin = 4;
inline void TwoOctetAsSpecificExtended::clear_local_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t TwoOctetAsSpecificExtended::local_admin() const {
  // @@protoc_insertion_point(field_get:apipb.TwoOctetAsSpecificExtended.local_admin)
  return _internal_local_admin();
}
inline void TwoOctetAsSpecificExtended::set_local_admin(::uint32_t value) {
  _internal_set_local_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.TwoOctetAsSpecificExtended.local_admin)
}
inline ::uint32_t TwoOctetAsSpecificExtended::_internal_local_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_admin_;
}
inline void TwoOctetAsSpecificExtended::_internal_set_local_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = value;
}

// -------------------------------------------------------------------

// IPv4AddressSpecificExtended

// bool is_transitive = 1;
inline void IPv4AddressSpecificExtended::clear_is_transitive() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool IPv4AddressSpecificExtended::is_transitive() const {
  // @@protoc_insertion_point(field_get:apipb.IPv4AddressSpecificExtended.is_transitive)
  return _internal_is_transitive();
}
inline void IPv4AddressSpecificExtended::set_is_transitive(bool value) {
  _internal_set_is_transitive(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.IPv4AddressSpecificExtended.is_transitive)
}
inline bool IPv4AddressSpecificExtended::_internal_is_transitive() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_transitive_;
}
inline void IPv4AddressSpecificExtended::_internal_set_is_transitive(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = value;
}

// uint32 sub_type = 2;
inline void IPv4AddressSpecificExtended::clear_sub_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t IPv4AddressSpecificExtended::sub_type() const {
  // @@protoc_insertion_point(field_get:apipb.IPv4AddressSpecificExtended.sub_type)
  return _internal_sub_type();
}
inline void IPv4AddressSpecificExtended::set_sub_type(::uint32_t value) {
  _internal_set_sub_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.IPv4AddressSpecificExtended.sub_type)
}
inline ::uint32_t IPv4AddressSpecificExtended::_internal_sub_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sub_type_;
}
inline void IPv4AddressSpecificExtended::_internal_set_sub_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = value;
}

// string address = 3;
inline void IPv4AddressSpecificExtended::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& IPv4AddressSpecificExtended::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.IPv4AddressSpecificExtended.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void IPv4AddressSpecificExtended::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.IPv4AddressSpecificExtended.address)
}
inline ::std::string* PROTOBUF_NONNULL IPv4AddressSpecificExtended::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.IPv4AddressSpecificExtended.address)
  return _s;
}
inline const ::std::string& IPv4AddressSpecificExtended::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void IPv4AddressSpecificExtended::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL IPv4AddressSpecificExtended::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE IPv4AddressSpecificExtended::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.IPv4AddressSpecificExtended.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void IPv4AddressSpecificExtended::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.IPv4AddressSpecificExtended.address)
}

// uint32 local_admin = 4;
inline void IPv4AddressSpecificExtended::clear_local_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t IPv4AddressSpecificExtended::local_admin() const {
  // @@protoc_insertion_point(field_get:apipb.IPv4AddressSpecificExtended.local_admin)
  return _internal_local_admin();
}
inline void IPv4AddressSpecificExtended::set_local_admin(::uint32_t value) {
  _internal_set_local_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.IPv4AddressSpecificExtended.local_admin)
}
inline ::uint32_t IPv4AddressSpecificExtended::_internal_local_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_admin_;
}
inline void IPv4AddressSpecificExtended::_internal_set_local_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = value;
}

// -------------------------------------------------------------------

// FourOctetAsSpecificExtended

// bool is_transitive = 1;
inline void FourOctetAsSpecificExtended::clear_is_transitive() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool FourOctetAsSpecificExtended::is_transitive() const {
  // @@protoc_insertion_point(field_get:apipb.FourOctetAsSpecificExtended.is_transitive)
  return _internal_is_transitive();
}
inline void FourOctetAsSpecificExtended::set_is_transitive(bool value) {
  _internal_set_is_transitive(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.FourOctetAsSpecificExtended.is_transitive)
}
inline bool FourOctetAsSpecificExtended::_internal_is_transitive() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_transitive_;
}
inline void FourOctetAsSpecificExtended::_internal_set_is_transitive(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = value;
}

// uint32 sub_type = 2;
inline void FourOctetAsSpecificExtended::clear_sub_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t FourOctetAsSpecificExtended::sub_type() const {
  // @@protoc_insertion_point(field_get:apipb.FourOctetAsSpecificExtended.sub_type)
  return _internal_sub_type();
}
inline void FourOctetAsSpecificExtended::set_sub_type(::uint32_t value) {
  _internal_set_sub_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.FourOctetAsSpecificExtended.sub_type)
}
inline ::uint32_t FourOctetAsSpecificExtended::_internal_sub_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sub_type_;
}
inline void FourOctetAsSpecificExtended::_internal_set_sub_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = value;
}

// uint32 asn = 3;
inline void FourOctetAsSpecificExtended::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t FourOctetAsSpecificExtended::asn() const {
  // @@protoc_insertion_point(field_get:apipb.FourOctetAsSpecificExtended.asn)
  return _internal_asn();
}
inline void FourOctetAsSpecificExtended::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.FourOctetAsSpecificExtended.asn)
}
inline ::uint32_t FourOctetAsSpecificExtended::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void FourOctetAsSpecificExtended::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// uint32 local_admin = 4;
inline void FourOctetAsSpecificExtended::clear_local_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t FourOctetAsSpecificExtended::local_admin() const {
  // @@protoc_insertion_point(field_get:apipb.FourOctetAsSpecificExtended.local_admin)
  return _internal_local_admin();
}
inline void FourOctetAsSpecificExtended::set_local_admin(::uint32_t value) {
  _internal_set_local_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.FourOctetAsSpecificExtended.local_admin)
}
inline ::uint32_t FourOctetAsSpecificExtended::_internal_local_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_admin_;
}
inline void FourOctetAsSpecificExtended::_internal_set_local_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = value;
}

// -------------------------------------------------------------------

// LinkBandwidthExtended

// uint32 asn = 1;
inline void LinkBandwidthExtended::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t LinkBandwidthExtended::asn() const {
  // @@protoc_insertion_point(field_get:apipb.LinkBandwidthExtended.asn)
  return _internal_asn();
}
inline void LinkBandwidthExtended::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.LinkBandwidthExtended.asn)
}
inline ::uint32_t LinkBandwidthExtended::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void LinkBandwidthExtended::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// float bandwidth = 2;
inline void LinkBandwidthExtended::clear_bandwidth() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bandwidth_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline float LinkBandwidthExtended::bandwidth() const {
  // @@protoc_insertion_point(field_get:apipb.LinkBandwidthExtended.bandwidth)
  return _internal_bandwidth();
}
inline void LinkBandwidthExtended::set_bandwidth(float value) {
  _internal_set_bandwidth(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LinkBandwidthExtended.bandwidth)
}
inline float LinkBandwidthExtended::_internal_bandwidth() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bandwidth_;
}
inline void LinkBandwidthExtended::_internal_set_bandwidth(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bandwidth_ = value;
}

// -------------------------------------------------------------------

// ValidationExtended

// uint32 state = 1;
inline void ValidationExtended::clear_state() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.state_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t ValidationExtended::state() const {
  // @@protoc_insertion_point(field_get:apipb.ValidationExtended.state)
  return _internal_state();
}
inline void ValidationExtended::set_state(::uint32_t value) {
  _internal_set_state(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.ValidationExtended.state)
}
inline ::uint32_t ValidationExtended::_internal_state() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.state_;
}
inline void ValidationExtended::_internal_set_state(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.state_ = value;
}

// -------------------------------------------------------------------

// ColorExtended

// uint32 color = 1;
inline void ColorExtended::clear_color() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t ColorExtended::color() const {
  // @@protoc_insertion_point(field_get:apipb.ColorExtended.color)
  return _internal_color();
}
inline void ColorExtended::set_color(::uint32_t value) {
  _internal_set_color(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.ColorExtended.color)
}
inline ::uint32_t ColorExtended::_internal_color() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.color_;
}
inline void ColorExtended::_internal_set_color(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = value;
}

// -------------------------------------------------------------------

// EncapExtended

// uint32 tunnel_type = 1;
inline void EncapExtended::clear_tunnel_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tunnel_type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t EncapExtended::tunnel_type() const {
  // @@protoc_insertion_point(field_get:apipb.EncapExtended.tunnel_type)
  return _internal_tunnel_type();
}
inline void EncapExtended::set_tunnel_type(::uint32_t value) {
  _internal_set_tunnel_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.EncapExtended.tunnel_type)
}
inline ::uint32_t EncapExtended::_internal_tunnel_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tunnel_type_;
}
inline void EncapExtended::_internal_set_tunnel_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tunnel_type_ = value;
}

// -------------------------------------------------------------------

// DefaultGatewayExtended

// -------------------------------------------------------------------

// OpaqueExtended

// bool is_transitive = 1;
inline void OpaqueExtended::clear_is_transitive() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool OpaqueExtended::is_transitive() const {
  // @@protoc_insertion_point(field_get:apipb.OpaqueExtended.is_transitive)
  return _internal_is_transitive();
}
inline void OpaqueExtended::set_is_transitive(bool value) {
  _internal_set_is_transitive(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.OpaqueExtended.is_transitive)
}
inline bool OpaqueExtended::_internal_is_transitive() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_transitive_;
}
inline void OpaqueExtended::_internal_set_is_transitive(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = value;
}

// bytes value = 3;
inline void OpaqueExtended::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& OpaqueExtended::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.OpaqueExtended.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void OpaqueExtended::set_value(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.value_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.OpaqueExtended.value)
}
inline ::std::string* PROTOBUF_NONNULL OpaqueExtended::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:apipb.OpaqueExtended.value)
  return _s;
}
inline const ::std::string& OpaqueExtended::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_.Get();
}
inline void OpaqueExtended::_internal_set_value(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL OpaqueExtended::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.value_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE OpaqueExtended::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.OpaqueExtended.value)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.value_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.value_.Set("", GetArena());
  }
  return released;
}
inline void OpaqueExtended::set_allocated_value(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.value_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.value_.IsDefault()) {
    _impl_.value_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.OpaqueExtended.value)
}

// -------------------------------------------------------------------

// ESILabelExtended

// bool is_single_active = 1;
inline void ESILabelExtended::clear_is_single_active() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_single_active_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool ESILabelExtended::is_single_active() const {
  // @@protoc_insertion_point(field_get:apipb.ESILabelExtended.is_single_active)
  return _internal_is_single_active();
}
inline void ESILabelExtended::set_is_single_active(bool value) {
  _internal_set_is_single_active(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.ESILabelExtended.is_single_active)
}
inline bool ESILabelExtended::_internal_is_single_active() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_single_active_;
}
inline void ESILabelExtended::_internal_set_is_single_active(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_single_active_ = value;
}

// uint32 label = 2;
inline void ESILabelExtended::clear_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t ESILabelExtended::label() const {
  // @@protoc_insertion_point(field_get:apipb.ESILabelExtended.label)
  return _internal_label();
}
inline void ESILabelExtended::set_label(::uint32_t value) {
  _internal_set_label(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.ESILabelExtended.label)
}
inline ::uint32_t ESILabelExtended::_internal_label() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.label_;
}
inline void ESILabelExtended::_internal_set_label(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = value;
}

// -------------------------------------------------------------------

// ESImportRouteTarget

// string es_import = 1;
inline void ESImportRouteTarget::clear_es_import() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.es_import_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& ESImportRouteTarget::es_import() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.ESImportRouteTarget.es_import)
  return _internal_es_import();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ESImportRouteTarget::set_es_import(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.es_import_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.ESImportRouteTarget.es_import)
}
inline ::std::string* PROTOBUF_NONNULL ESImportRouteTarget::mutable_es_import()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_es_import();
  // @@protoc_insertion_point(field_mutable:apipb.ESImportRouteTarget.es_import)
  return _s;
}
inline const ::std::string& ESImportRouteTarget::_internal_es_import() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.es_import_.Get();
}
inline void ESImportRouteTarget::_internal_set_es_import(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.es_import_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ESImportRouteTarget::_internal_mutable_es_import() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.es_import_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ESImportRouteTarget::release_es_import() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.ESImportRouteTarget.es_import)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.es_import_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.es_import_.Set("", GetArena());
  }
  return released;
}
inline void ESImportRouteTarget::set_allocated_es_import(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.es_import_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.es_import_.IsDefault()) {
    _impl_.es_import_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.ESImportRouteTarget.es_import)
}

// -------------------------------------------------------------------

// MacMobilityExtended

// bool is_sticky = 1;
inline void MacMobilityExtended::clear_is_sticky() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_sticky_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool MacMobilityExtended::is_sticky() const {
  // @@protoc_insertion_point(field_get:apipb.MacMobilityExtended.is_sticky)
  return _internal_is_sticky();
}
inline void MacMobilityExtended::set_is_sticky(bool value) {
  _internal_set_is_sticky(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.MacMobilityExtended.is_sticky)
}
inline bool MacMobilityExtended::_internal_is_sticky() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_sticky_;
}
inline void MacMobilityExtended::_internal_set_is_sticky(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_sticky_ = value;
}

// uint32 sequence_num = 2;
inline void MacMobilityExtended::clear_sequence_num() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sequence_num_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t MacMobilityExtended::sequence_num() const {
  // @@protoc_insertion_point(field_get:apipb.MacMobilityExtended.sequence_num)
  return _internal_sequence_num();
}
inline void MacMobilityExtended::set_sequence_num(::uint32_t value) {
  _internal_set_sequence_num(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.MacMobilityExtended.sequence_num)
}
inline ::uint32_t MacMobilityExtended::_internal_sequence_num() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sequence_num_;
}
inline void MacMobilityExtended::_internal_set_sequence_num(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sequence_num_ = value;
}

// -------------------------------------------------------------------

// RouterMacExtended

// string mac = 1;
inline void RouterMacExtended::clear_mac() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mac_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& RouterMacExtended::mac() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.RouterMacExtended.mac)
  return _internal_mac();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void RouterMacExtended::set_mac(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.mac_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.RouterMacExtended.mac)
}
inline ::std::string* PROTOBUF_NONNULL RouterMacExtended::mutable_mac()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_mac();
  // @@protoc_insertion_point(field_mutable:apipb.RouterMacExtended.mac)
  return _s;
}
inline const ::std::string& RouterMacExtended::_internal_mac() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mac_.Get();
}
inline void RouterMacExtended::_internal_set_mac(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mac_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL RouterMacExtended::_internal_mutable_mac() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.mac_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE RouterMacExtended::release_mac() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.RouterMacExtended.mac)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.mac_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.mac_.Set("", GetArena());
  }
  return released;
}
inline void RouterMacExtended::set_allocated_mac(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.mac_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.mac_.IsDefault()) {
    _impl_.mac_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.RouterMacExtended.mac)
}

// -------------------------------------------------------------------

// TrafficRateExtended

// uint32 asn = 1;
inline void TrafficRateExtended::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t TrafficRateExtended::asn() const {
  // @@protoc_insertion_point(field_get:apipb.TrafficRateExtended.asn)
  return _internal_asn();
}
inline void TrafficRateExtended::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TrafficRateExtended.asn)
}
inline ::uint32_t TrafficRateExtended::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void TrafficRateExtended::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// float rate = 2;
inline void TrafficRateExtended::clear_rate() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rate_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline float TrafficRateExtended::rate() const {
  // @@protoc_insertion_point(field_get:apipb.TrafficRateExtended.rate)
  return _internal_rate();
}
inline void TrafficRateExtended::set_rate(float value) {
  _internal_set_rate(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.TrafficRateExtended.rate)
}
inline float TrafficRateExtended::_internal_rate() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.rate_;
}
inline void TrafficRateExtended::_internal_set_rate(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.rate_ = value;
}

// -------------------------------------------------------------------

// TrafficActionExtended

// bool terminal = 1;
inline void TrafficActionExtended::clear_terminal() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.terminal_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool TrafficActionExtended::terminal() const {
  // @@protoc_insertion_point(field_get:apipb.TrafficActionExtended.terminal)
  return _internal_terminal();
}
inline void TrafficActionExtended::set_terminal(bool value) {
  _internal_set_terminal(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TrafficActionExtended.terminal)
}
inline bool TrafficActionExtended::_internal_terminal() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.terminal_;
}
inline void TrafficActionExtended::_internal_set_terminal(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.terminal_ = value;
}

// bool sample = 2;
inline void TrafficActionExtended::clear_sample() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sample_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool TrafficActionExtended::sample() const {
  // @@protoc_insertion_point(field_get:apipb.TrafficActionExtended.sample)
  return _internal_sample();
}
inline void TrafficActionExtended::set_sample(bool value) {
  _internal_set_sample(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.TrafficActionExtended.sample)
}
inline bool TrafficActionExtended::_internal_sample() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sample_;
}
inline void TrafficActionExtended::_internal_set_sample(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sample_ = value;
}

// -------------------------------------------------------------------

// RedirectTwoOctetAsSpecificExtended

// uint32 asn = 1;
inline void RedirectTwoOctetAsSpecificExtended::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t RedirectTwoOctetAsSpecificExtended::asn() const {
  // @@protoc_insertion_point(field_get:apipb.RedirectTwoOctetAsSpecificExtended.asn)
  return _internal_asn();
}
inline void RedirectTwoOctetAsSpecificExtended::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.RedirectTwoOctetAsSpecificExtended.asn)
}
inline ::uint32_t RedirectTwoOctetAsSpecificExtended::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void RedirectTwoOctetAsSpecificExtended::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// uint32 local_admin = 2;
inline void RedirectTwoOctetAsSpecificExtended::clear_local_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t RedirectTwoOctetAsSpecificExtended::local_admin() const {
  // @@protoc_insertion_point(field_get:apipb.RedirectTwoOctetAsSpecificExtended.local_admin)
  return _internal_local_admin();
}
inline void RedirectTwoOctetAsSpecificExtended::set_local_admin(::uint32_t value) {
  _internal_set_local_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.RedirectTwoOctetAsSpecificExtended.local_admin)
}
inline ::uint32_t RedirectTwoOctetAsSpecificExtended::_internal_local_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_admin_;
}
inline void RedirectTwoOctetAsSpecificExtended::_internal_set_local_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = value;
}

// -------------------------------------------------------------------

// RedirectIPv4AddressSpecificExtended

// string address = 1;
inline void RedirectIPv4AddressSpecificExtended::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& RedirectIPv4AddressSpecificExtended::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.RedirectIPv4AddressSpecificExtended.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void RedirectIPv4AddressSpecificExtended::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.RedirectIPv4AddressSpecificExtended.address)
}
inline ::std::string* PROTOBUF_NONNULL RedirectIPv4AddressSpecificExtended::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.RedirectIPv4AddressSpecificExtended.address)
  return _s;
}
inline const ::std::string& RedirectIPv4AddressSpecificExtended::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void RedirectIPv4AddressSpecificExtended::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL RedirectIPv4AddressSpecificExtended::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE RedirectIPv4AddressSpecificExtended::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.RedirectIPv4AddressSpecificExtended.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void RedirectIPv4AddressSpecificExtended::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.RedirectIPv4AddressSpecificExtended.address)
}

// uint32 local_admin = 2;
inline void RedirectIPv4AddressSpecificExtended::clear_local_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t RedirectIPv4AddressSpecificExtended::local_admin() const {
  // @@protoc_insertion_point(field_get:apipb.RedirectIPv4AddressSpecificExtended.local_admin)
  return _internal_local_admin();
}
inline void RedirectIPv4AddressSpecificExtended::set_local_admin(::uint32_t value) {
  _internal_set_local_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.RedirectIPv4AddressSpecificExtended.local_admin)
}
inline ::uint32_t RedirectIPv4AddressSpecificExtended::_internal_local_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_admin_;
}
inline void RedirectIPv4AddressSpecificExtended::_internal_set_local_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = value;
}

// -------------------------------------------------------------------

// RedirectFourOctetAsSpecificExtended

// uint32 asn = 1;
inline void RedirectFourOctetAsSpecificExtended::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t RedirectFourOctetAsSpecificExtended::asn() const {
  // @@protoc_insertion_point(field_get:apipb.RedirectFourOctetAsSpecificExtended.asn)
  return _internal_asn();
}
inline void RedirectFourOctetAsSpecificExtended::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.RedirectFourOctetAsSpecificExtended.asn)
}
inline ::uint32_t RedirectFourOctetAsSpecificExtended::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void RedirectFourOctetAsSpecificExtended::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// uint32 local_admin = 2;
inline void RedirectFourOctetAsSpecificExtended::clear_local_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t RedirectFourOctetAsSpecificExtended::local_admin() const {
  // @@protoc_insertion_point(field_get:apipb.RedirectFourOctetAsSpecificExtended.local_admin)
  return _internal_local_admin();
}
inline void RedirectFourOctetAsSpecificExtended::set_local_admin(::uint32_t value) {
  _internal_set_local_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.RedirectFourOctetAsSpecificExtended.local_admin)
}
inline ::uint32_t RedirectFourOctetAsSpecificExtended::_internal_local_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_admin_;
}
inline void RedirectFourOctetAsSpecificExtended::_internal_set_local_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = value;
}

// -------------------------------------------------------------------

// TrafficRemarkExtended

// uint32 dscp = 1;
inline void TrafficRemarkExtended::clear_dscp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dscp_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t TrafficRemarkExtended::dscp() const {
  // @@protoc_insertion_point(field_get:apipb.TrafficRemarkExtended.dscp)
  return _internal_dscp();
}
inline void TrafficRemarkExtended::set_dscp(::uint32_t value) {
  _internal_set_dscp(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TrafficRemarkExtended.dscp)
}
inline ::uint32_t TrafficRemarkExtended::_internal_dscp() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.dscp_;
}
inline void TrafficRemarkExtended::_internal_set_dscp(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.dscp_ = value;
}

// -------------------------------------------------------------------

// MUPExtended

// uint32 sub_type = 1;
inline void MUPExtended::clear_sub_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t MUPExtended::sub_type() const {
  // @@protoc_insertion_point(field_get:apipb.MUPExtended.sub_type)
  return _internal_sub_type();
}
inline void MUPExtended::set_sub_type(::uint32_t value) {
  _internal_set_sub_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.MUPExtended.sub_type)
}
inline ::uint32_t MUPExtended::_internal_sub_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sub_type_;
}
inline void MUPExtended::_internal_set_sub_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = value;
}

// uint32 segment_id2 = 2;
inline void MUPExtended::clear_segment_id2() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.segment_id2_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t MUPExtended::segment_id2() const {
  // @@protoc_insertion_point(field_get:apipb.MUPExtended.segment_id2)
  return _internal_segment_id2();
}
inline void MUPExtended::set_segment_id2(::uint32_t value) {
  _internal_set_segment_id2(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.MUPExtended.segment_id2)
}
inline ::uint32_t MUPExtended::_internal_segment_id2() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.segment_id2_;
}
inline void MUPExtended::_internal_set_segment_id2(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.segment_id2_ = value;
}

// uint32 segment_id4 = 3;
inline void MUPExtended::clear_segment_id4() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.segment_id4_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t MUPExtended::segment_id4() const {
  // @@protoc_insertion_point(field_get:apipb.MUPExtended.segment_id4)
  return _internal_segment_id4();
}
inline void MUPExtended::set_segment_id4(::uint32_t value) {
  _internal_set_segment_id4(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.MUPExtended.segment_id4)
}
inline ::uint32_t MUPExtended::_internal_segment_id4() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.segment_id4_;
}
inline void MUPExtended::_internal_set_segment_id4(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.segment_id4_ = value;
}

// -------------------------------------------------------------------

// UnknownExtended

// uint32 type = 1;
inline void UnknownExtended::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t UnknownExtended::type() const {
  // @@protoc_insertion_point(field_get:apipb.UnknownExtended.type)
  return _internal_type();
}
inline void UnknownExtended::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.UnknownExtended.type)
}
inline ::uint32_t UnknownExtended::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void UnknownExtended::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// bytes value = 2;
inline void UnknownExtended::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& UnknownExtended::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.UnknownExtended.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void UnknownExtended::set_value(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.value_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.UnknownExtended.value)
}
inline ::std::string* PROTOBUF_NONNULL UnknownExtended::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:apipb.UnknownExtended.value)
  return _s;
}
inline const ::std::string& UnknownExtended::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_.Get();
}
inline void UnknownExtended::_internal_set_value(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL UnknownExtended::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.value_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE UnknownExtended::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.UnknownExtended.value)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.value_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.value_.Set("", GetArena());
  }
  return released;
}
inline void UnknownExtended::set_allocated_value(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.value_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.value_.IsDefault()) {
    _impl_.value_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.UnknownExtended.value)
}

// -------------------------------------------------------------------

// ExtendedCommunitiesAttribute

// repeated .google.protobuf.Any communities = 1;
inline int ExtendedCommunitiesAttribute::_internal_communities_size() const {
  return _internal_communities().size();
}
inline int ExtendedCommunitiesAttribute::communities_size() const {
  return _internal_communities_size();
}
inline const ::google::protobuf::Any& ExtendedCommunitiesAttribute::communities(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.ExtendedCommunitiesAttribute.communities)
  return _internal_communities().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL ExtendedCommunitiesAttribute::mutable_communities(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.ExtendedCommunitiesAttribute.communities)
  return _internal_mutable_communities()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL ExtendedCommunitiesAttribute::add_communities()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_communities()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.ExtendedCommunitiesAttribute.communities)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& ExtendedCommunitiesAttribute::communities() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.ExtendedCommunitiesAttribute.communities)
  return _internal_communities();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
ExtendedCommunitiesAttribute::mutable_communities() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.ExtendedCommunitiesAttribute.communities)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_communities();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
ExtendedCommunitiesAttribute::_internal_communities() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.communities_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
ExtendedCommunitiesAttribute::_internal_mutable_communities() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.communities_;
}

// -------------------------------------------------------------------

// As4PathAttribute

// repeated .apipb.AsSegment segments = 1;
inline int As4PathAttribute::_internal_segments_size() const {
  return _internal_segments().size();
}
inline int As4PathAttribute::segments_size() const {
  return _internal_segments_size();
}
inline void As4PathAttribute::clear_segments() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.segments_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::AsSegment& As4PathAttribute::segments(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.As4PathAttribute.segments)
  return _internal_segments().Get(index);
}
inline ::apipb::AsSegment* PROTOBUF_NONNULL As4PathAttribute::mutable_segments(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.As4PathAttribute.segments)
  return _internal_mutable_segments()->Mutable(index);
}
inline ::apipb::AsSegment* PROTOBUF_NONNULL As4PathAttribute::add_segments()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::apipb::AsSegment* _add =
      _internal_mutable_segments()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.As4PathAttribute.segments)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>& As4PathAttribute::segments() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.As4PathAttribute.segments)
  return _internal_segments();
}
inline ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>* PROTOBUF_NONNULL
As4PathAttribute::mutable_segments() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.As4PathAttribute.segments)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_segments();
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>&
As4PathAttribute::_internal_segments() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.segments_;
}
inline ::google::protobuf::RepeatedPtrField<::apipb::AsSegment>* PROTOBUF_NONNULL
As4PathAttribute::_internal_mutable_segments() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.segments_;
}

// -------------------------------------------------------------------

// As4AggregatorAttribute

// uint32 asn = 2;
inline void As4AggregatorAttribute::clear_asn() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t As4AggregatorAttribute::asn() const {
  // @@protoc_insertion_point(field_get:apipb.As4AggregatorAttribute.asn)
  return _internal_asn();
}
inline void As4AggregatorAttribute::set_asn(::uint32_t value) {
  _internal_set_asn(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.As4AggregatorAttribute.asn)
}
inline ::uint32_t As4AggregatorAttribute::_internal_asn() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.asn_;
}
inline void As4AggregatorAttribute::_internal_set_asn(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.asn_ = value;
}

// string address = 3;
inline void As4AggregatorAttribute::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& As4AggregatorAttribute::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.As4AggregatorAttribute.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void As4AggregatorAttribute::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.As4AggregatorAttribute.address)
}
inline ::std::string* PROTOBUF_NONNULL As4AggregatorAttribute::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.As4AggregatorAttribute.address)
  return _s;
}
inline const ::std::string& As4AggregatorAttribute::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void As4AggregatorAttribute::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL As4AggregatorAttribute::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE As4AggregatorAttribute::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.As4AggregatorAttribute.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void As4AggregatorAttribute::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.As4AggregatorAttribute.address)
}

// -------------------------------------------------------------------

// PmsiTunnelAttribute

// uint32 flags = 1;
inline void PmsiTunnelAttribute::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t PmsiTunnelAttribute::flags() const {
  // @@protoc_insertion_point(field_get:apipb.PmsiTunnelAttribute.flags)
  return _internal_flags();
}
inline void PmsiTunnelAttribute::set_flags(::uint32_t value) {
  _internal_set_flags(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.PmsiTunnelAttribute.flags)
}
inline ::uint32_t PmsiTunnelAttribute::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.flags_;
}
inline void PmsiTunnelAttribute::_internal_set_flags(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = value;
}

// uint32 type = 2;
inline void PmsiTunnelAttribute::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t PmsiTunnelAttribute::type() const {
  // @@protoc_insertion_point(field_get:apipb.PmsiTunnelAttribute.type)
  return _internal_type();
}
inline void PmsiTunnelAttribute::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.PmsiTunnelAttribute.type)
}
inline ::uint32_t PmsiTunnelAttribute::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void PmsiTunnelAttribute::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// uint32 label = 3;
inline void PmsiTunnelAttribute::clear_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t PmsiTunnelAttribute::label() const {
  // @@protoc_insertion_point(field_get:apipb.PmsiTunnelAttribute.label)
  return _internal_label();
}
inline void PmsiTunnelAttribute::set_label(::uint32_t value) {
  _internal_set_label(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.PmsiTunnelAttribute.label)
}
inline ::uint32_t PmsiTunnelAttribute::_internal_label() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.label_;
}
inline void PmsiTunnelAttribute::_internal_set_label(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = value;
}

// bytes id = 4;
inline void PmsiTunnelAttribute::clear_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& PmsiTunnelAttribute::id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.PmsiTunnelAttribute.id)
  return _internal_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void PmsiTunnelAttribute::set_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.id_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.PmsiTunnelAttribute.id)
}
inline ::std::string* PROTOBUF_NONNULL PmsiTunnelAttribute::mutable_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_id();
  // @@protoc_insertion_point(field_mutable:apipb.PmsiTunnelAttribute.id)
  return _s;
}
inline const ::std::string& PmsiTunnelAttribute::_internal_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.id_.Get();
}
inline void PmsiTunnelAttribute::_internal_set_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL PmsiTunnelAttribute::_internal_mutable_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE PmsiTunnelAttribute::release_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.PmsiTunnelAttribute.id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.id_.Set("", GetArena());
  }
  return released;
}
inline void PmsiTunnelAttribute::set_allocated_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.id_.IsDefault()) {
    _impl_.id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.PmsiTunnelAttribute.id)
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVEncapsulation

// uint32 key = 1;
inline void TunnelEncapSubTLVEncapsulation::clear_key() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.key_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t TunnelEncapSubTLVEncapsulation::key() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVEncapsulation.key)
  return _internal_key();
}
inline void TunnelEncapSubTLVEncapsulation::set_key(::uint32_t value) {
  _internal_set_key(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVEncapsulation.key)
}
inline ::uint32_t TunnelEncapSubTLVEncapsulation::_internal_key() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.key_;
}
inline void TunnelEncapSubTLVEncapsulation::_internal_set_key(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.key_ = value;
}

// bytes cookie = 2;
inline void TunnelEncapSubTLVEncapsulation::clear_cookie() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.cookie_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& TunnelEncapSubTLVEncapsulation::cookie() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVEncapsulation.cookie)
  return _internal_cookie();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void TunnelEncapSubTLVEncapsulation::set_cookie(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.cookie_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVEncapsulation.cookie)
}
inline ::std::string* PROTOBUF_NONNULL TunnelEncapSubTLVEncapsulation::mutable_cookie()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_cookie();
  // @@protoc_insertion_point(field_mutable:apipb.TunnelEncapSubTLVEncapsulation.cookie)
  return _s;
}
inline const ::std::string& TunnelEncapSubTLVEncapsulation::_internal_cookie() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.cookie_.Get();
}
inline void TunnelEncapSubTLVEncapsulation::_internal_set_cookie(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.cookie_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL TunnelEncapSubTLVEncapsulation::_internal_mutable_cookie() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.cookie_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE TunnelEncapSubTLVEncapsulation::release_cookie() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.TunnelEncapSubTLVEncapsulation.cookie)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.cookie_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.cookie_.Set("", GetArena());
  }
  return released;
}
inline void TunnelEncapSubTLVEncapsulation::set_allocated_cookie(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.cookie_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.cookie_.IsDefault()) {
    _impl_.cookie_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.TunnelEncapSubTLVEncapsulation.cookie)
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVProtocol

// uint32 protocol = 1;
inline void TunnelEncapSubTLVProtocol::clear_protocol() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protocol_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t TunnelEncapSubTLVProtocol::protocol() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVProtocol.protocol)
  return _internal_protocol();
}
inline void TunnelEncapSubTLVProtocol::set_protocol(::uint32_t value) {
  _internal_set_protocol(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVProtocol.protocol)
}
inline ::uint32_t TunnelEncapSubTLVProtocol::_internal_protocol() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.protocol_;
}
inline void TunnelEncapSubTLVProtocol::_internal_set_protocol(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.protocol_ = value;
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVColor

// uint32 color = 1;
inline void TunnelEncapSubTLVColor::clear_color() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t TunnelEncapSubTLVColor::color() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVColor.color)
  return _internal_color();
}
inline void TunnelEncapSubTLVColor::set_color(::uint32_t value) {
  _internal_set_color(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVColor.color)
}
inline ::uint32_t TunnelEncapSubTLVColor::_internal_color() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.color_;
}
inline void TunnelEncapSubTLVColor::_internal_set_color(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.color_ = value;
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVSRPreference

// uint32 flags = 1;
inline void TunnelEncapSubTLVSRPreference::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t TunnelEncapSubTLVSRPreference::flags() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVSRPreference.flags)
  return _internal_flags();
}
inline void TunnelEncapSubTLVSRPreference::set_flags(::uint32_t value) {
  _internal_set_flags(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVSRPreference.flags)
}
inline ::uint32_t TunnelEncapSubTLVSRPreference::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.flags_;
}
inline void TunnelEncapSubTLVSRPreference::_internal_set_flags(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = value;
}

// uint32 preference = 2;
inline void TunnelEncapSubTLVSRPreference::clear_preference() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.preference_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t TunnelEncapSubTLVSRPreference::preference() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVSRPreference.preference)
  return _internal_preference();
}
inline void TunnelEncapSubTLVSRPreference::set_preference(::uint32_t value) {
  _internal_set_preference(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVSRPreference.preference)
}
inline ::uint32_t TunnelEncapSubTLVSRPreference::_internal_preference() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.preference_;
}
inline void TunnelEncapSubTLVSRPreference::_internal_set_preference(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.preference_ = value;
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVSRCandidatePathName

// string candidate_path_name = 1;
inline void TunnelEncapSubTLVSRCandidatePathName::clear_candidate_path_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.candidate_path_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& TunnelEncapSubTLVSRCandidatePathName::candidate_path_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVSRCandidatePathName.candidate_path_name)
  return _internal_candidate_path_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void TunnelEncapSubTLVSRCandidatePathName::set_candidate_path_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.candidate_path_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVSRCandidatePathName.candidate_path_name)
}
inline ::std::string* PROTOBUF_NONNULL TunnelEncapSubTLVSRCandidatePathName::mutable_candidate_path_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_candidate_path_name();
  // @@protoc_insertion_point(field_mutable:apipb.TunnelEncapSubTLVSRCandidatePathName.candidate_path_name)
  return _s;
}
inline const ::std::string& TunnelEncapSubTLVSRCandidatePathName::_internal_candidate_path_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.candidate_path_name_.Get();
}
inline void TunnelEncapSubTLVSRCandidatePathName::_internal_set_candidate_path_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.candidate_path_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL TunnelEncapSubTLVSRCandidatePathName::_internal_mutable_candidate_path_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.candidate_path_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE TunnelEncapSubTLVSRCandidatePathName::release_candidate_path_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.TunnelEncapSubTLVSRCandidatePathName.candidate_path_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.candidate_path_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.candidate_path_name_.Set("", GetArena());
  }
  return released;
}
inline void TunnelEncapSubTLVSRCandidatePathName::set_allocated_candidate_path_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.candidate_path_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.candidate_path_name_.IsDefault()) {
    _impl_.candidate_path_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.TunnelEncapSubTLVSRCandidatePathName.candidate_path_name)
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVSRPriority

// uint32 priority = 1;
inline void TunnelEncapSubTLVSRPriority::clear_priority() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.priority_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t TunnelEncapSubTLVSRPriority::priority() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVSRPriority.priority)
  return _internal_priority();
}
inline void TunnelEncapSubTLVSRPriority::set_priority(::uint32_t value) {
  _internal_set_priority(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVSRPriority.priority)
}
inline ::uint32_t TunnelEncapSubTLVSRPriority::_internal_priority() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.priority_;
}
inline void TunnelEncapSubTLVSRPriority::_internal_set_priority(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.priority_ = value;
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVSRBindingSID

// .google.protobuf.Any bsid = 1;
inline bool TunnelEncapSubTLVSRBindingSID::has_bsid() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.bsid_ != nullptr);
  return value;
}
inline const ::google::protobuf::Any& TunnelEncapSubTLVSRBindingSID::_internal_bsid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::google::protobuf::Any* p = _impl_.bsid_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::google::protobuf::Any>(&::google::protobuf::Any_globals_);
}
inline const ::google::protobuf::Any& TunnelEncapSubTLVSRBindingSID::bsid() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVSRBindingSID.bsid)
  return _internal_bsid();
}
inline void TunnelEncapSubTLVSRBindingSID::unsafe_arena_set_allocated_bsid(
    ::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bsid_);
  }
  _impl_.bsid_ = reinterpret_cast<::google::protobuf::Any*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.TunnelEncapSubTLVSRBindingSID.bsid)
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE TunnelEncapSubTLVSRBindingSID::release_bsid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* released = _impl_.bsid_;
  _impl_.bsid_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::google::protobuf::Any* PROTOBUF_NULLABLE TunnelEncapSubTLVSRBindingSID::unsafe_arena_release_bsid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.TunnelEncapSubTLVSRBindingSID.bsid)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* temp = _impl_.bsid_;
  _impl_.bsid_ = nullptr;
  return temp;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL TunnelEncapSubTLVSRBindingSID::_internal_mutable_bsid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bsid_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::google::protobuf::Any>(GetArena());
    _impl_.bsid_ = reinterpret_cast<::google::protobuf::Any*>(p);
  }
  return _impl_.bsid_;
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL TunnelEncapSubTLVSRBindingSID::mutable_bsid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::google::protobuf::Any* _msg = _internal_mutable_bsid();
  // @@protoc_insertion_point(field_mutable:apipb.TunnelEncapSubTLVSRBindingSID.bsid)
  return _msg;
}
inline void TunnelEncapSubTLVSRBindingSID::set_allocated_bsid(::google::protobuf::Any* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bsid_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = reinterpret_cast<::google::protobuf::Message*>(value)->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.bsid_ = reinterpret_cast<::google::protobuf::Any*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.TunnelEncapSubTLVSRBindingSID.bsid)
}

// -------------------------------------------------------------------

// SRBindingSID

// bool s_flag = 1;
inline void SRBindingSID::clear_s_flag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s_flag_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool SRBindingSID::s_flag() const {
  // @@protoc_insertion_point(field_get:apipb.SRBindingSID.s_flag)
  return _internal_s_flag();
}
inline void SRBindingSID::set_s_flag(bool value) {
  _internal_set_s_flag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.SRBindingSID.s_flag)
}
inline bool SRBindingSID::_internal_s_flag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s_flag_;
}
inline void SRBindingSID::_internal_set_s_flag(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s_flag_ = value;
}

// bool i_flag = 2;
inline void SRBindingSID::clear_i_flag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.i_flag_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline bool SRBindingSID::i_flag() const {
  // @@protoc_insertion_point(field_get:apipb.SRBindingSID.i_flag)
  return _internal_i_flag();
}
inline void SRBindingSID::set_i_flag(bool value) {
  _internal_set_i_flag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.SRBindingSID.i_flag)
}
inline bool SRBindingSID::_internal_i_flag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.i_flag_;
}
inline void SRBindingSID::_internal_set_i_flag(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.i_flag_ = value;
}

// bytes sid = 3;
inline void SRBindingSID::clear_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& SRBindingSID::sid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SRBindingSID.sid)
  return _internal_sid();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void SRBindingSID::set_sid(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.sid_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.SRBindingSID.sid)
}
inline ::std::string* PROTOBUF_NONNULL SRBindingSID::mutable_sid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_sid();
  // @@protoc_insertion_point(field_mutable:apipb.SRBindingSID.sid)
  return _s;
}
inline const ::std::string& SRBindingSID::_internal_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sid_.Get();
}
inline void SRBindingSID::_internal_set_sid(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL SRBindingSID::_internal_mutable_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sid_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE SRBindingSID::release_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SRBindingSID.sid)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.sid_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.sid_.Set("", GetArena());
  }
  return released;
}
inline void SRBindingSID::set_allocated_sid(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.sid_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.sid_.IsDefault()) {
    _impl_.sid_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.SRBindingSID.sid)
}

// -------------------------------------------------------------------

// SRv6EndPointBehavior

// .apipb.SRv6Behavior behavior = 1;
inline void SRv6EndPointBehavior::clear_behavior() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.behavior_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::apipb::SRv6Behavior SRv6EndPointBehavior::behavior() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6EndPointBehavior.behavior)
  return _internal_behavior();
}
inline void SRv6EndPointBehavior::set_behavior(::apipb::SRv6Behavior value) {
  _internal_set_behavior(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.SRv6EndPointBehavior.behavior)
}
inline ::apipb::SRv6Behavior SRv6EndPointBehavior::_internal_behavior() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::apipb::SRv6Behavior>(_impl_.behavior_);
}
inline void SRv6EndPointBehavior::_internal_set_behavior(::apipb::SRv6Behavior value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.behavior_ = value;
}

// uint32 block_len = 2;
inline void SRv6EndPointBehavior::clear_block_len() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.block_len_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t SRv6EndPointBehavior::block_len() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6EndPointBehavior.block_len)
  return _internal_block_len();
}
inline void SRv6EndPointBehavior::set_block_len(::uint32_t value) {
  _internal_set_block_len(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.SRv6EndPointBehavior.block_len)
}
inline ::uint32_t SRv6EndPointBehavior::_internal_block_len() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.block_len_;
}
inline void SRv6EndPointBehavior::_internal_set_block_len(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.block_len_ = value;
}

// uint32 node_len = 3;
inline void SRv6EndPointBehavior::clear_node_len() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.node_len_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t SRv6EndPointBehavior::node_len() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6EndPointBehavior.node_len)
  return _internal_node_len();
}
inline void SRv6EndPointBehavior::set_node_len(::uint32_t value) {
  _internal_set_node_len(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.SRv6EndPointBehavior.node_len)
}
inline ::uint32_t SRv6EndPointBehavior::_internal_node_len() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.node_len_;
}
inline void SRv6EndPointBehavior::_internal_set_node_len(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.node_len_ = value;
}

// uint32 func_len = 4;
inline void SRv6EndPointBehavior::clear_func_len() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.func_len_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t SRv6EndPointBehavior::func_len() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6EndPointBehavior.func_len)
  return _internal_func_len();
}
inline void SRv6EndPointBehavior::set_func_len(::uint32_t value) {
  _internal_set_func_len(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.SRv6EndPointBehavior.func_len)
}
inline ::uint32_t SRv6EndPointBehavior::_internal_func_len() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.func_len_;
}
inline void SRv6EndPointBehavior::_internal_set_func_len(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.func_len_ = value;
}

// uint32 arg_len = 5;
inline void SRv6EndPointBehavior::clear_arg_len() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.arg_len_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::uint32_t SRv6EndPointBehavior::arg_len() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6EndPointBehavior.arg_len)
  return _internal_arg_len();
}
inline void SRv6EndPointBehavior::set_arg_len(::uint32_t value) {
  _internal_set_arg_len(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:apipb.SRv6EndPointBehavior.arg_len)
}
inline ::uint32_t SRv6EndPointBehavior::_internal_arg_len() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.arg_len_;
}
inline void SRv6EndPointBehavior::_internal_set_arg_len(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.arg_len_ = value;
}

// -------------------------------------------------------------------

// SRv6BindingSID

// bool s_flag = 1;
inline void SRv6BindingSID::clear_s_flag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s_flag_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline bool SRv6BindingSID::s_flag() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6BindingSID.s_flag)
  return _internal_s_flag();
}
inline void SRv6BindingSID::set_s_flag(bool value) {
  _internal_set_s_flag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.SRv6BindingSID.s_flag)
}
inline bool SRv6BindingSID::_internal_s_flag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s_flag_;
}
inline void SRv6BindingSID::_internal_set_s_flag(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s_flag_ = value;
}

// bool i_flag = 2;
inline void SRv6BindingSID::clear_i_flag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.i_flag_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline bool SRv6BindingSID::i_flag() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6BindingSID.i_flag)
  return _internal_i_flag();
}
inline void SRv6BindingSID::set_i_flag(bool value) {
  _internal_set_i_flag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.SRv6BindingSID.i_flag)
}
inline bool SRv6BindingSID::_internal_i_flag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.i_flag_;
}
inline void SRv6BindingSID::_internal_set_i_flag(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.i_flag_ = value;
}

// bool b_flag = 3;
inline void SRv6BindingSID::clear_b_flag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.b_flag_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline bool SRv6BindingSID::b_flag() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6BindingSID.b_flag)
  return _internal_b_flag();
}
inline void SRv6BindingSID::set_b_flag(bool value) {
  _internal_set_b_flag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:apipb.SRv6BindingSID.b_flag)
}
inline bool SRv6BindingSID::_internal_b_flag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.b_flag_;
}
inline void SRv6BindingSID::_internal_set_b_flag(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.b_flag_ = value;
}

// bytes sid = 4;
inline void SRv6BindingSID::clear_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& SRv6BindingSID::sid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SRv6BindingSID.sid)
  return _internal_sid();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void SRv6BindingSID::set_sid(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.sid_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.SRv6BindingSID.sid)
}
inline ::std::string* PROTOBUF_NONNULL SRv6BindingSID::mutable_sid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_sid();
  // @@protoc_insertion_point(field_mutable:apipb.SRv6BindingSID.sid)
  return _s;
}
inline const ::std::string& SRv6BindingSID::_internal_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sid_.Get();
}
inline void SRv6BindingSID::_internal_set_sid(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL SRv6BindingSID::_internal_mutable_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sid_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE SRv6BindingSID::release_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SRv6BindingSID.sid)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.sid_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.sid_.Set("", GetArena());
  }
  return released;
}
inline void SRv6BindingSID::set_allocated_sid(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.sid_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.sid_.IsDefault()) {
    _impl_.sid_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.SRv6BindingSID.sid)
}

// .apipb.SRv6EndPointBehavior endpoint_behavior_structure = 5;
inline bool SRv6BindingSID::has_endpoint_behavior_structure() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.endpoint_behavior_structure_ != nullptr);
  return value;
}
inline void SRv6BindingSID::clear_endpoint_behavior_structure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.endpoint_behavior_structure_ != nullptr) _impl_.endpoint_behavior_structure_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::SRv6EndPointBehavior& SRv6BindingSID::_internal_endpoint_behavior_structure() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::SRv6EndPointBehavior* p = _impl_.endpoint_behavior_structure_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::SRv6EndPointBehavior>(&::apipb::SRv6EndPointBehavior_globals_);
}
inline const ::apipb::SRv6EndPointBehavior& SRv6BindingSID::endpoint_behavior_structure() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SRv6BindingSID.endpoint_behavior_structure)
  return _internal_endpoint_behavior_structure();
}
inline void SRv6BindingSID::unsafe_arena_set_allocated_endpoint_behavior_structure(
    ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.endpoint_behavior_structure_);
  }
  _impl_.endpoint_behavior_structure_ = reinterpret_cast<::apipb::SRv6EndPointBehavior*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.SRv6BindingSID.endpoint_behavior_structure)
}
inline ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE SRv6BindingSID::release_endpoint_behavior_structure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SRv6EndPointBehavior* released = _impl_.endpoint_behavior_structure_;
  _impl_.endpoint_behavior_structure_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE SRv6BindingSID::unsafe_arena_release_endpoint_behavior_structure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SRv6BindingSID.endpoint_behavior_structure)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SRv6EndPointBehavior* temp = _impl_.endpoint_behavior_structure_;
  _impl_.endpoint_behavior_structure_ = nullptr;
  return temp;
}
inline ::apipb::SRv6EndPointBehavior* PROTOBUF_NONNULL SRv6BindingSID::_internal_mutable_endpoint_behavior_structure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.endpoint_behavior_structure_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::SRv6EndPointBehavior>(GetArena());
    _impl_.endpoint_behavior_structure_ = reinterpret_cast<::apipb::SRv6EndPointBehavior*>(p);
  }
  return _impl_.endpoint_behavior_structure_;
}
inline ::apipb::SRv6EndPointBehavior* PROTOBUF_NONNULL SRv6BindingSID::mutable_endpoint_behavior_structure()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SRv6EndPointBehavior* _msg = _internal_mutable_endpoint_behavior_structure();
  // @@protoc_insertion_point(field_mutable:apipb.SRv6BindingSID.endpoint_behavior_structure)
  return _msg;
}
inline void SRv6BindingSID::set_allocated_endpoint_behavior_structure(::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.endpoint_behavior_structure_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.endpoint_behavior_structure_ = reinterpret_cast<::apipb::SRv6EndPointBehavior*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.SRv6BindingSID.endpoint_behavior_structure)
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVSRENLP

// uint32 flags = 1;
inline void TunnelEncapSubTLVSRENLP::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t TunnelEncapSubTLVSRENLP::flags() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVSRENLP.flags)
  return _internal_flags();
}
inline void TunnelEncapSubTLVSRENLP::set_flags(::uint32_t value) {
  _internal_set_flags(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVSRENLP.flags)
}
inline ::uint32_t TunnelEncapSubTLVSRENLP::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.flags_;
}
inline void TunnelEncapSubTLVSRENLP::_internal_set_flags(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = value;
}

// .apipb.ENLPType enlp = 2;
inline void TunnelEncapSubTLVSRENLP::clear_enlp() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.enlp_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::apipb::ENLPType TunnelEncapSubTLVSRENLP::enlp() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVSRENLP.enlp)
  return _internal_enlp();
}
inline void TunnelEncapSubTLVSRENLP::set_enlp(::apipb::ENLPType value) {
  _internal_set_enlp(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVSRENLP.enlp)
}
inline ::apipb::ENLPType TunnelEncapSubTLVSRENLP::_internal_enlp() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::apipb::ENLPType>(_impl_.enlp_);
}
inline void TunnelEncapSubTLVSRENLP::_internal_set_enlp(::apipb::ENLPType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.enlp_ = value;
}

// -------------------------------------------------------------------

// SRWeight

// uint32 flags = 1;
inline void SRWeight::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t SRWeight::flags() const {
  // @@protoc_insertion_point(field_get:apipb.SRWeight.flags)
  return _internal_flags();
}
inline void SRWeight::set_flags(::uint32_t value) {
  _internal_set_flags(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.SRWeight.flags)
}
inline ::uint32_t SRWeight::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.flags_;
}
inline void SRWeight::_internal_set_flags(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = value;
}

// uint32 weight = 2;
inline void SRWeight::clear_weight() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.weight_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t SRWeight::weight() const {
  // @@protoc_insertion_point(field_get:apipb.SRWeight.weight)
  return _internal_weight();
}
inline void SRWeight::set_weight(::uint32_t value) {
  _internal_set_weight(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.SRWeight.weight)
}
inline ::uint32_t SRWeight::_internal_weight() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.weight_;
}
inline void SRWeight::_internal_set_weight(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.weight_ = value;
}

// -------------------------------------------------------------------

// SegmentFlags

// bool v_flag = 1;
inline void SegmentFlags::clear_v_flag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.v_flag_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool SegmentFlags::v_flag() const {
  // @@protoc_insertion_point(field_get:apipb.SegmentFlags.v_flag)
  return _internal_v_flag();
}
inline void SegmentFlags::set_v_flag(bool value) {
  _internal_set_v_flag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.SegmentFlags.v_flag)
}
inline bool SegmentFlags::_internal_v_flag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.v_flag_;
}
inline void SegmentFlags::_internal_set_v_flag(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.v_flag_ = value;
}

// bool a_flag = 2;
inline void SegmentFlags::clear_a_flag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.a_flag_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool SegmentFlags::a_flag() const {
  // @@protoc_insertion_point(field_get:apipb.SegmentFlags.a_flag)
  return _internal_a_flag();
}
inline void SegmentFlags::set_a_flag(bool value) {
  _internal_set_a_flag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.SegmentFlags.a_flag)
}
inline bool SegmentFlags::_internal_a_flag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.a_flag_;
}
inline void SegmentFlags::_internal_set_a_flag(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.a_flag_ = value;
}

// bool s_flag = 3;
inline void SegmentFlags::clear_s_flag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s_flag_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline bool SegmentFlags::s_flag() const {
  // @@protoc_insertion_point(field_get:apipb.SegmentFlags.s_flag)
  return _internal_s_flag();
}
inline void SegmentFlags::set_s_flag(bool value) {
  _internal_set_s_flag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.SegmentFlags.s_flag)
}
inline bool SegmentFlags::_internal_s_flag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.s_flag_;
}
inline void SegmentFlags::_internal_set_s_flag(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.s_flag_ = value;
}

// bool b_flag = 4;
inline void SegmentFlags::clear_b_flag() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.b_flag_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline bool SegmentFlags::b_flag() const {
  // @@protoc_insertion_point(field_get:apipb.SegmentFlags.b_flag)
  return _internal_b_flag();
}
inline void SegmentFlags::set_b_flag(bool value) {
  _internal_set_b_flag(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.SegmentFlags.b_flag)
}
inline bool SegmentFlags::_internal_b_flag() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.b_flag_;
}
inline void SegmentFlags::_internal_set_b_flag(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.b_flag_ = value;
}

// -------------------------------------------------------------------

// SegmentTypeA

// .apipb.SegmentFlags flags = 1;
inline bool SegmentTypeA::has_flags() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.flags_ != nullptr);
  return value;
}
inline void SegmentTypeA::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ != nullptr) _impl_.flags_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::SegmentFlags& SegmentTypeA::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::SegmentFlags* p = _impl_.flags_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::SegmentFlags>(&::apipb::SegmentFlags_globals_);
}
inline const ::apipb::SegmentFlags& SegmentTypeA::flags() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SegmentTypeA.flags)
  return _internal_flags();
}
inline void SegmentTypeA::unsafe_arena_set_allocated_flags(
    ::apipb::SegmentFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }
  _impl_.flags_ = reinterpret_cast<::apipb::SegmentFlags*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.SegmentTypeA.flags)
}
inline ::apipb::SegmentFlags* PROTOBUF_NULLABLE SegmentTypeA::release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::SegmentFlags* released = _impl_.flags_;
  _impl_.flags_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::SegmentFlags* PROTOBUF_NULLABLE SegmentTypeA::unsafe_arena_release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SegmentTypeA.flags)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::SegmentFlags* temp = _impl_.flags_;
  _impl_.flags_ = nullptr;
  return temp;
}
inline ::apipb::SegmentFlags* PROTOBUF_NONNULL SegmentTypeA::_internal_mutable_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::SegmentFlags>(GetArena());
    _impl_.flags_ = reinterpret_cast<::apipb::SegmentFlags*>(p);
  }
  return _impl_.flags_;
}
inline ::apipb::SegmentFlags* PROTOBUF_NONNULL SegmentTypeA::mutable_flags()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::SegmentFlags* _msg = _internal_mutable_flags();
  // @@protoc_insertion_point(field_mutable:apipb.SegmentTypeA.flags)
  return _msg;
}
inline void SegmentTypeA::set_allocated_flags(::apipb::SegmentFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.flags_ = reinterpret_cast<::apipb::SegmentFlags*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.SegmentTypeA.flags)
}

// uint32 label = 2;
inline void SegmentTypeA::clear_label() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t SegmentTypeA::label() const {
  // @@protoc_insertion_point(field_get:apipb.SegmentTypeA.label)
  return _internal_label();
}
inline void SegmentTypeA::set_label(::uint32_t value) {
  _internal_set_label(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.SegmentTypeA.label)
}
inline ::uint32_t SegmentTypeA::_internal_label() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.label_;
}
inline void SegmentTypeA::_internal_set_label(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.label_ = value;
}

// -------------------------------------------------------------------

// SegmentTypeB

// .apipb.SegmentFlags flags = 1;
inline bool SegmentTypeB::has_flags() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.flags_ != nullptr);
  return value;
}
inline void SegmentTypeB::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ != nullptr) _impl_.flags_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::SegmentFlags& SegmentTypeB::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::SegmentFlags* p = _impl_.flags_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::SegmentFlags>(&::apipb::SegmentFlags_globals_);
}
inline const ::apipb::SegmentFlags& SegmentTypeB::flags() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SegmentTypeB.flags)
  return _internal_flags();
}
inline void SegmentTypeB::unsafe_arena_set_allocated_flags(
    ::apipb::SegmentFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }
  _impl_.flags_ = reinterpret_cast<::apipb::SegmentFlags*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.SegmentTypeB.flags)
}
inline ::apipb::SegmentFlags* PROTOBUF_NULLABLE SegmentTypeB::release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SegmentFlags* released = _impl_.flags_;
  _impl_.flags_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::SegmentFlags* PROTOBUF_NULLABLE SegmentTypeB::unsafe_arena_release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SegmentTypeB.flags)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SegmentFlags* temp = _impl_.flags_;
  _impl_.flags_ = nullptr;
  return temp;
}
inline ::apipb::SegmentFlags* PROTOBUF_NONNULL SegmentTypeB::_internal_mutable_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::SegmentFlags>(GetArena());
    _impl_.flags_ = reinterpret_cast<::apipb::SegmentFlags*>(p);
  }
  return _impl_.flags_;
}
inline ::apipb::SegmentFlags* PROTOBUF_NONNULL SegmentTypeB::mutable_flags()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SegmentFlags* _msg = _internal_mutable_flags();
  // @@protoc_insertion_point(field_mutable:apipb.SegmentTypeB.flags)
  return _msg;
}
inline void SegmentTypeB::set_allocated_flags(::apipb::SegmentFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.flags_ = reinterpret_cast<::apipb::SegmentFlags*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.SegmentTypeB.flags)
}

// bytes sid = 2;
inline void SegmentTypeB::clear_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& SegmentTypeB::sid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SegmentTypeB.sid)
  return _internal_sid();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void SegmentTypeB::set_sid(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.sid_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.SegmentTypeB.sid)
}
inline ::std::string* PROTOBUF_NONNULL SegmentTypeB::mutable_sid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_sid();
  // @@protoc_insertion_point(field_mutable:apipb.SegmentTypeB.sid)
  return _s;
}
inline const ::std::string& SegmentTypeB::_internal_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sid_.Get();
}
inline void SegmentTypeB::_internal_set_sid(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL SegmentTypeB::_internal_mutable_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sid_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE SegmentTypeB::release_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SegmentTypeB.sid)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.sid_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.sid_.Set("", GetArena());
  }
  return released;
}
inline void SegmentTypeB::set_allocated_sid(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.sid_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.sid_.IsDefault()) {
    _impl_.sid_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.SegmentTypeB.sid)
}

// .apipb.SRv6EndPointBehavior endpoint_behavior_structure = 3;
inline bool SegmentTypeB::has_endpoint_behavior_structure() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.endpoint_behavior_structure_ != nullptr);
  return value;
}
inline void SegmentTypeB::clear_endpoint_behavior_structure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.endpoint_behavior_structure_ != nullptr) _impl_.endpoint_behavior_structure_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::apipb::SRv6EndPointBehavior& SegmentTypeB::_internal_endpoint_behavior_structure() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::SRv6EndPointBehavior* p = _impl_.endpoint_behavior_structure_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::SRv6EndPointBehavior>(&::apipb::SRv6EndPointBehavior_globals_);
}
inline const ::apipb::SRv6EndPointBehavior& SegmentTypeB::endpoint_behavior_structure() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SegmentTypeB.endpoint_behavior_structure)
  return _internal_endpoint_behavior_structure();
}
inline void SegmentTypeB::unsafe_arena_set_allocated_endpoint_behavior_structure(
    ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.endpoint_behavior_structure_);
  }
  _impl_.endpoint_behavior_structure_ = reinterpret_cast<::apipb::SRv6EndPointBehavior*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.SegmentTypeB.endpoint_behavior_structure)
}
inline ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE SegmentTypeB::release_endpoint_behavior_structure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::SRv6EndPointBehavior* released = _impl_.endpoint_behavior_structure_;
  _impl_.endpoint_behavior_structure_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE SegmentTypeB::unsafe_arena_release_endpoint_behavior_structure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SegmentTypeB.endpoint_behavior_structure)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::SRv6EndPointBehavior* temp = _impl_.endpoint_behavior_structure_;
  _impl_.endpoint_behavior_structure_ = nullptr;
  return temp;
}
inline ::apipb::SRv6EndPointBehavior* PROTOBUF_NONNULL SegmentTypeB::_internal_mutable_endpoint_behavior_structure() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.endpoint_behavior_structure_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::SRv6EndPointBehavior>(GetArena());
    _impl_.endpoint_behavior_structure_ = reinterpret_cast<::apipb::SRv6EndPointBehavior*>(p);
  }
  return _impl_.endpoint_behavior_structure_;
}
inline ::apipb::SRv6EndPointBehavior* PROTOBUF_NONNULL SegmentTypeB::mutable_endpoint_behavior_structure()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::SRv6EndPointBehavior* _msg = _internal_mutable_endpoint_behavior_structure();
  // @@protoc_insertion_point(field_mutable:apipb.SegmentTypeB.endpoint_behavior_structure)
  return _msg;
}
inline void SegmentTypeB::set_allocated_endpoint_behavior_structure(::apipb::SRv6EndPointBehavior* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.endpoint_behavior_structure_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.endpoint_behavior_structure_ = reinterpret_cast<::apipb::SRv6EndPointBehavior*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.SegmentTypeB.endpoint_behavior_structure)
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVSRSegmentList

// .apipb.SRWeight weight = 1;
inline bool TunnelEncapSubTLVSRSegmentList::has_weight() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.weight_ != nullptr);
  return value;
}
inline void TunnelEncapSubTLVSRSegmentList::clear_weight() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.weight_ != nullptr) _impl_.weight_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::SRWeight& TunnelEncapSubTLVSRSegmentList::_internal_weight() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::SRWeight* p = _impl_.weight_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::SRWeight>(&::apipb::SRWeight_globals_);
}
inline const ::apipb::SRWeight& TunnelEncapSubTLVSRSegmentList::weight() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVSRSegmentList.weight)
  return _internal_weight();
}
inline void TunnelEncapSubTLVSRSegmentList::unsafe_arena_set_allocated_weight(
    ::apipb::SRWeight* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.weight_);
  }
  _impl_.weight_ = reinterpret_cast<::apipb::SRWeight*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.TunnelEncapSubTLVSRSegmentList.weight)
}
inline ::apipb::SRWeight* PROTOBUF_NULLABLE TunnelEncapSubTLVSRSegmentList::release_weight() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SRWeight* released = _impl_.weight_;
  _impl_.weight_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::SRWeight* PROTOBUF_NULLABLE TunnelEncapSubTLVSRSegmentList::unsafe_arena_release_weight() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.TunnelEncapSubTLVSRSegmentList.weight)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SRWeight* temp = _impl_.weight_;
  _impl_.weight_ = nullptr;
  return temp;
}
inline ::apipb::SRWeight* PROTOBUF_NONNULL TunnelEncapSubTLVSRSegmentList::_internal_mutable_weight() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.weight_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::SRWeight>(GetArena());
    _impl_.weight_ = reinterpret_cast<::apipb::SRWeight*>(p);
  }
  return _impl_.weight_;
}
inline ::apipb::SRWeight* PROTOBUF_NONNULL TunnelEncapSubTLVSRSegmentList::mutable_weight()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SRWeight* _msg = _internal_mutable_weight();
  // @@protoc_insertion_point(field_mutable:apipb.TunnelEncapSubTLVSRSegmentList.weight)
  return _msg;
}
inline void TunnelEncapSubTLVSRSegmentList::set_allocated_weight(::apipb::SRWeight* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.weight_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.weight_ = reinterpret_cast<::apipb::SRWeight*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.TunnelEncapSubTLVSRSegmentList.weight)
}

// repeated .google.protobuf.Any segments = 2;
inline int TunnelEncapSubTLVSRSegmentList::_internal_segments_size() const {
  return _internal_segments().size();
}
inline int TunnelEncapSubTLVSRSegmentList::segments_size() const {
  return _internal_segments_size();
}
inline const ::google::protobuf::Any& TunnelEncapSubTLVSRSegmentList::segments(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVSRSegmentList.segments)
  return _internal_segments().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL TunnelEncapSubTLVSRSegmentList::mutable_segments(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.TunnelEncapSubTLVSRSegmentList.segments)
  return _internal_mutable_segments()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL TunnelEncapSubTLVSRSegmentList::add_segments()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_segments()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.TunnelEncapSubTLVSRSegmentList.segments)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& TunnelEncapSubTLVSRSegmentList::segments() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.TunnelEncapSubTLVSRSegmentList.segments)
  return _internal_segments();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
TunnelEncapSubTLVSRSegmentList::mutable_segments() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.TunnelEncapSubTLVSRSegmentList.segments)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_segments();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
TunnelEncapSubTLVSRSegmentList::_internal_segments() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.segments_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
TunnelEncapSubTLVSRSegmentList::_internal_mutable_segments() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.segments_;
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVEgressEndpoint

// string address = 1;
inline void TunnelEncapSubTLVEgressEndpoint::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& TunnelEncapSubTLVEgressEndpoint::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVEgressEndpoint.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void TunnelEncapSubTLVEgressEndpoint::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVEgressEndpoint.address)
}
inline ::std::string* PROTOBUF_NONNULL TunnelEncapSubTLVEgressEndpoint::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.TunnelEncapSubTLVEgressEndpoint.address)
  return _s;
}
inline const ::std::string& TunnelEncapSubTLVEgressEndpoint::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void TunnelEncapSubTLVEgressEndpoint::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL TunnelEncapSubTLVEgressEndpoint::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE TunnelEncapSubTLVEgressEndpoint::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.TunnelEncapSubTLVEgressEndpoint.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void TunnelEncapSubTLVEgressEndpoint::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.TunnelEncapSubTLVEgressEndpoint.address)
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVUDPDestPort

// uint32 port = 1;
inline void TunnelEncapSubTLVUDPDestPort::clear_port() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.port_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t TunnelEncapSubTLVUDPDestPort::port() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVUDPDestPort.port)
  return _internal_port();
}
inline void TunnelEncapSubTLVUDPDestPort::set_port(::uint32_t value) {
  _internal_set_port(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVUDPDestPort.port)
}
inline ::uint32_t TunnelEncapSubTLVUDPDestPort::_internal_port() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.port_;
}
inline void TunnelEncapSubTLVUDPDestPort::_internal_set_port(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.port_ = value;
}

// -------------------------------------------------------------------

// TunnelEncapSubTLVUnknown

// uint32 type = 1;
inline void TunnelEncapSubTLVUnknown::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t TunnelEncapSubTLVUnknown::type() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVUnknown.type)
  return _internal_type();
}
inline void TunnelEncapSubTLVUnknown::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVUnknown.type)
}
inline ::uint32_t TunnelEncapSubTLVUnknown::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void TunnelEncapSubTLVUnknown::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// bytes value = 2;
inline void TunnelEncapSubTLVUnknown::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& TunnelEncapSubTLVUnknown::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapSubTLVUnknown.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void TunnelEncapSubTLVUnknown::set_value(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.value_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapSubTLVUnknown.value)
}
inline ::std::string* PROTOBUF_NONNULL TunnelEncapSubTLVUnknown::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:apipb.TunnelEncapSubTLVUnknown.value)
  return _s;
}
inline const ::std::string& TunnelEncapSubTLVUnknown::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_.Get();
}
inline void TunnelEncapSubTLVUnknown::_internal_set_value(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL TunnelEncapSubTLVUnknown::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.value_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE TunnelEncapSubTLVUnknown::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.TunnelEncapSubTLVUnknown.value)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.value_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.value_.Set("", GetArena());
  }
  return released;
}
inline void TunnelEncapSubTLVUnknown::set_allocated_value(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.value_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.value_.IsDefault()) {
    _impl_.value_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.TunnelEncapSubTLVUnknown.value)
}

// -------------------------------------------------------------------

// TunnelEncapTLV

// uint32 type = 1;
inline void TunnelEncapTLV::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t TunnelEncapTLV::type() const {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapTLV.type)
  return _internal_type();
}
inline void TunnelEncapTLV::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.TunnelEncapTLV.type)
}
inline ::uint32_t TunnelEncapTLV::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void TunnelEncapTLV::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// repeated .google.protobuf.Any tlvs = 2;
inline int TunnelEncapTLV::_internal_tlvs_size() const {
  return _internal_tlvs().size();
}
inline int TunnelEncapTLV::tlvs_size() const {
  return _internal_tlvs_size();
}
inline const ::google::protobuf::Any& TunnelEncapTLV::tlvs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapTLV.tlvs)
  return _internal_tlvs().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL TunnelEncapTLV::mutable_tlvs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.TunnelEncapTLV.tlvs)
  return _internal_mutable_tlvs()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL TunnelEncapTLV::add_tlvs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_tlvs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.TunnelEncapTLV.tlvs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& TunnelEncapTLV::tlvs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.TunnelEncapTLV.tlvs)
  return _internal_tlvs();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
TunnelEncapTLV::mutable_tlvs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.TunnelEncapTLV.tlvs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tlvs();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
TunnelEncapTLV::_internal_tlvs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tlvs_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
TunnelEncapTLV::_internal_mutable_tlvs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tlvs_;
}

// -------------------------------------------------------------------

// TunnelEncapAttribute

// repeated .apipb.TunnelEncapTLV tlvs = 1;
inline int TunnelEncapAttribute::_internal_tlvs_size() const {
  return _internal_tlvs().size();
}
inline int TunnelEncapAttribute::tlvs_size() const {
  return _internal_tlvs_size();
}
inline void TunnelEncapAttribute::clear_tlvs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.tlvs_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::TunnelEncapTLV& TunnelEncapAttribute::tlvs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.TunnelEncapAttribute.tlvs)
  return _internal_tlvs().Get(index);
}
inline ::apipb::TunnelEncapTLV* PROTOBUF_NONNULL TunnelEncapAttribute::mutable_tlvs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.TunnelEncapAttribute.tlvs)
  return _internal_mutable_tlvs()->Mutable(index);
}
inline ::apipb::TunnelEncapTLV* PROTOBUF_NONNULL TunnelEncapAttribute::add_tlvs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::apipb::TunnelEncapTLV* _add =
      _internal_mutable_tlvs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.TunnelEncapAttribute.tlvs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::TunnelEncapTLV>& TunnelEncapAttribute::tlvs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.TunnelEncapAttribute.tlvs)
  return _internal_tlvs();
}
inline ::google::protobuf::RepeatedPtrField<::apipb::TunnelEncapTLV>* PROTOBUF_NONNULL
TunnelEncapAttribute::mutable_tlvs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.TunnelEncapAttribute.tlvs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tlvs();
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::TunnelEncapTLV>&
TunnelEncapAttribute::_internal_tlvs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tlvs_;
}
inline ::google::protobuf::RepeatedPtrField<::apipb::TunnelEncapTLV>* PROTOBUF_NONNULL
TunnelEncapAttribute::_internal_mutable_tlvs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tlvs_;
}

// -------------------------------------------------------------------

// IPv6AddressSpecificExtended

// bool is_transitive = 1;
inline void IPv6AddressSpecificExtended::clear_is_transitive() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool IPv6AddressSpecificExtended::is_transitive() const {
  // @@protoc_insertion_point(field_get:apipb.IPv6AddressSpecificExtended.is_transitive)
  return _internal_is_transitive();
}
inline void IPv6AddressSpecificExtended::set_is_transitive(bool value) {
  _internal_set_is_transitive(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.IPv6AddressSpecificExtended.is_transitive)
}
inline bool IPv6AddressSpecificExtended::_internal_is_transitive() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_transitive_;
}
inline void IPv6AddressSpecificExtended::_internal_set_is_transitive(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_transitive_ = value;
}

// uint32 sub_type = 2;
inline void IPv6AddressSpecificExtended::clear_sub_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t IPv6AddressSpecificExtended::sub_type() const {
  // @@protoc_insertion_point(field_get:apipb.IPv6AddressSpecificExtended.sub_type)
  return _internal_sub_type();
}
inline void IPv6AddressSpecificExtended::set_sub_type(::uint32_t value) {
  _internal_set_sub_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.IPv6AddressSpecificExtended.sub_type)
}
inline ::uint32_t IPv6AddressSpecificExtended::_internal_sub_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sub_type_;
}
inline void IPv6AddressSpecificExtended::_internal_set_sub_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_type_ = value;
}

// string address = 3;
inline void IPv6AddressSpecificExtended::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& IPv6AddressSpecificExtended::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.IPv6AddressSpecificExtended.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void IPv6AddressSpecificExtended::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.IPv6AddressSpecificExtended.address)
}
inline ::std::string* PROTOBUF_NONNULL IPv6AddressSpecificExtended::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.IPv6AddressSpecificExtended.address)
  return _s;
}
inline const ::std::string& IPv6AddressSpecificExtended::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void IPv6AddressSpecificExtended::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL IPv6AddressSpecificExtended::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE IPv6AddressSpecificExtended::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.IPv6AddressSpecificExtended.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void IPv6AddressSpecificExtended::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.IPv6AddressSpecificExtended.address)
}

// uint32 local_admin = 4;
inline void IPv6AddressSpecificExtended::clear_local_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t IPv6AddressSpecificExtended::local_admin() const {
  // @@protoc_insertion_point(field_get:apipb.IPv6AddressSpecificExtended.local_admin)
  return _internal_local_admin();
}
inline void IPv6AddressSpecificExtended::set_local_admin(::uint32_t value) {
  _internal_set_local_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.IPv6AddressSpecificExtended.local_admin)
}
inline ::uint32_t IPv6AddressSpecificExtended::_internal_local_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_admin_;
}
inline void IPv6AddressSpecificExtended::_internal_set_local_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = value;
}

// -------------------------------------------------------------------

// RedirectIPv6AddressSpecificExtended

// string address = 1;
inline void RedirectIPv6AddressSpecificExtended::clear_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& RedirectIPv6AddressSpecificExtended::address() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.RedirectIPv6AddressSpecificExtended.address)
  return _internal_address();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void RedirectIPv6AddressSpecificExtended::set_address(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.address_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.RedirectIPv6AddressSpecificExtended.address)
}
inline ::std::string* PROTOBUF_NONNULL RedirectIPv6AddressSpecificExtended::mutable_address()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_address();
  // @@protoc_insertion_point(field_mutable:apipb.RedirectIPv6AddressSpecificExtended.address)
  return _s;
}
inline const ::std::string& RedirectIPv6AddressSpecificExtended::_internal_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.address_.Get();
}
inline void RedirectIPv6AddressSpecificExtended::_internal_set_address(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.address_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL RedirectIPv6AddressSpecificExtended::_internal_mutable_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.address_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE RedirectIPv6AddressSpecificExtended::release_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.RedirectIPv6AddressSpecificExtended.address)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.address_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.address_.Set("", GetArena());
  }
  return released;
}
inline void RedirectIPv6AddressSpecificExtended::set_allocated_address(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.address_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.address_.IsDefault()) {
    _impl_.address_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.RedirectIPv6AddressSpecificExtended.address)
}

// uint32 local_admin = 2;
inline void RedirectIPv6AddressSpecificExtended::clear_local_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t RedirectIPv6AddressSpecificExtended::local_admin() const {
  // @@protoc_insertion_point(field_get:apipb.RedirectIPv6AddressSpecificExtended.local_admin)
  return _internal_local_admin();
}
inline void RedirectIPv6AddressSpecificExtended::set_local_admin(::uint32_t value) {
  _internal_set_local_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.RedirectIPv6AddressSpecificExtended.local_admin)
}
inline ::uint32_t RedirectIPv6AddressSpecificExtended::_internal_local_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_admin_;
}
inline void RedirectIPv6AddressSpecificExtended::_internal_set_local_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_admin_ = value;
}

// -------------------------------------------------------------------

// IP6ExtendedCommunitiesAttribute

// repeated .google.protobuf.Any communities = 1;
inline int IP6ExtendedCommunitiesAttribute::_internal_communities_size() const {
  return _internal_communities().size();
}
inline int IP6ExtendedCommunitiesAttribute::communities_size() const {
  return _internal_communities_size();
}
inline const ::google::protobuf::Any& IP6ExtendedCommunitiesAttribute::communities(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.IP6ExtendedCommunitiesAttribute.communities)
  return _internal_communities().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL IP6ExtendedCommunitiesAttribute::mutable_communities(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.IP6ExtendedCommunitiesAttribute.communities)
  return _internal_mutable_communities()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL IP6ExtendedCommunitiesAttribute::add_communities()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_communities()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.IP6ExtendedCommunitiesAttribute.communities)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& IP6ExtendedCommunitiesAttribute::communities() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.IP6ExtendedCommunitiesAttribute.communities)
  return _internal_communities();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
IP6ExtendedCommunitiesAttribute::mutable_communities() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.IP6ExtendedCommunitiesAttribute.communities)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_communities();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
IP6ExtendedCommunitiesAttribute::_internal_communities() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.communities_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
IP6ExtendedCommunitiesAttribute::_internal_mutable_communities() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.communities_;
}

// -------------------------------------------------------------------

// AigpTLVIGPMetric

// uint64 metric = 1;
inline void AigpTLVIGPMetric::clear_metric() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.metric_ = ::uint64_t{0u};
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint64_t AigpTLVIGPMetric::metric() const {
  // @@protoc_insertion_point(field_get:apipb.AigpTLVIGPMetric.metric)
  return _internal_metric();
}
inline void AigpTLVIGPMetric::set_metric(::uint64_t value) {
  _internal_set_metric(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.AigpTLVIGPMetric.metric)
}
inline ::uint64_t AigpTLVIGPMetric::_internal_metric() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.metric_;
}
inline void AigpTLVIGPMetric::_internal_set_metric(::uint64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.metric_ = value;
}

// -------------------------------------------------------------------

// AigpTLVUnknown

// uint32 type = 1;
inline void AigpTLVUnknown::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t AigpTLVUnknown::type() const {
  // @@protoc_insertion_point(field_get:apipb.AigpTLVUnknown.type)
  return _internal_type();
}
inline void AigpTLVUnknown::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.AigpTLVUnknown.type)
}
inline ::uint32_t AigpTLVUnknown::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void AigpTLVUnknown::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// bytes value = 2;
inline void AigpTLVUnknown::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& AigpTLVUnknown::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.AigpTLVUnknown.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void AigpTLVUnknown::set_value(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.value_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.AigpTLVUnknown.value)
}
inline ::std::string* PROTOBUF_NONNULL AigpTLVUnknown::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:apipb.AigpTLVUnknown.value)
  return _s;
}
inline const ::std::string& AigpTLVUnknown::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_.Get();
}
inline void AigpTLVUnknown::_internal_set_value(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL AigpTLVUnknown::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.value_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE AigpTLVUnknown::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.AigpTLVUnknown.value)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.value_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.value_.Set("", GetArena());
  }
  return released;
}
inline void AigpTLVUnknown::set_allocated_value(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.value_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.value_.IsDefault()) {
    _impl_.value_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.AigpTLVUnknown.value)
}

// -------------------------------------------------------------------

// AigpAttribute

// repeated .google.protobuf.Any tlvs = 1;
inline int AigpAttribute::_internal_tlvs_size() const {
  return _internal_tlvs().size();
}
inline int AigpAttribute::tlvs_size() const {
  return _internal_tlvs_size();
}
inline const ::google::protobuf::Any& AigpAttribute::tlvs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.AigpAttribute.tlvs)
  return _internal_tlvs().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL AigpAttribute::mutable_tlvs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.AigpAttribute.tlvs)
  return _internal_mutable_tlvs()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL AigpAttribute::add_tlvs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_tlvs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.AigpAttribute.tlvs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& AigpAttribute::tlvs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.AigpAttribute.tlvs)
  return _internal_tlvs();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
AigpAttribute::mutable_tlvs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.AigpAttribute.tlvs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tlvs();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
AigpAttribute::_internal_tlvs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tlvs_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
AigpAttribute::_internal_mutable_tlvs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tlvs_;
}

// -------------------------------------------------------------------

// LargeCommunity

// uint32 global_admin = 1;
inline void LargeCommunity::clear_global_admin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.global_admin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t LargeCommunity::global_admin() const {
  // @@protoc_insertion_point(field_get:apipb.LargeCommunity.global_admin)
  return _internal_global_admin();
}
inline void LargeCommunity::set_global_admin(::uint32_t value) {
  _internal_set_global_admin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.LargeCommunity.global_admin)
}
inline ::uint32_t LargeCommunity::_internal_global_admin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.global_admin_;
}
inline void LargeCommunity::_internal_set_global_admin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.global_admin_ = value;
}

// uint32 local_data1 = 2;
inline void LargeCommunity::clear_local_data1() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_data1_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t LargeCommunity::local_data1() const {
  // @@protoc_insertion_point(field_get:apipb.LargeCommunity.local_data1)
  return _internal_local_data1();
}
inline void LargeCommunity::set_local_data1(::uint32_t value) {
  _internal_set_local_data1(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LargeCommunity.local_data1)
}
inline ::uint32_t LargeCommunity::_internal_local_data1() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_data1_;
}
inline void LargeCommunity::_internal_set_local_data1(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_data1_ = value;
}

// uint32 local_data2 = 3;
inline void LargeCommunity::clear_local_data2() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_data2_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t LargeCommunity::local_data2() const {
  // @@protoc_insertion_point(field_get:apipb.LargeCommunity.local_data2)
  return _internal_local_data2();
}
inline void LargeCommunity::set_local_data2(::uint32_t value) {
  _internal_set_local_data2(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LargeCommunity.local_data2)
}
inline ::uint32_t LargeCommunity::_internal_local_data2() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_data2_;
}
inline void LargeCommunity::_internal_set_local_data2(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_data2_ = value;
}

// -------------------------------------------------------------------

// LargeCommunitiesAttribute

// repeated .apipb.LargeCommunity communities = 1;
inline int LargeCommunitiesAttribute::_internal_communities_size() const {
  return _internal_communities().size();
}
inline int LargeCommunitiesAttribute::communities_size() const {
  return _internal_communities_size();
}
inline void LargeCommunitiesAttribute::clear_communities() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.communities_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LargeCommunity& LargeCommunitiesAttribute::communities(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LargeCommunitiesAttribute.communities)
  return _internal_communities().Get(index);
}
inline ::apipb::LargeCommunity* PROTOBUF_NONNULL LargeCommunitiesAttribute::mutable_communities(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.LargeCommunitiesAttribute.communities)
  return _internal_mutable_communities()->Mutable(index);
}
inline ::apipb::LargeCommunity* PROTOBUF_NONNULL LargeCommunitiesAttribute::add_communities()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::apipb::LargeCommunity* _add =
      _internal_mutable_communities()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.LargeCommunitiesAttribute.communities)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::LargeCommunity>& LargeCommunitiesAttribute::communities() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.LargeCommunitiesAttribute.communities)
  return _internal_communities();
}
inline ::google::protobuf::RepeatedPtrField<::apipb::LargeCommunity>* PROTOBUF_NONNULL
LargeCommunitiesAttribute::mutable_communities() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.LargeCommunitiesAttribute.communities)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_communities();
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::LargeCommunity>&
LargeCommunitiesAttribute::_internal_communities() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.communities_;
}
inline ::google::protobuf::RepeatedPtrField<::apipb::LargeCommunity>* PROTOBUF_NONNULL
LargeCommunitiesAttribute::_internal_mutable_communities() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.communities_;
}

// -------------------------------------------------------------------

// LsNodeFlags

// bool overload = 1;
inline void LsNodeFlags::clear_overload() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.overload_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool LsNodeFlags::overload() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeFlags.overload)
  return _internal_overload();
}
inline void LsNodeFlags::set_overload(bool value) {
  _internal_set_overload(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeFlags.overload)
}
inline bool LsNodeFlags::_internal_overload() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.overload_;
}
inline void LsNodeFlags::_internal_set_overload(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.overload_ = value;
}

// bool attached = 2;
inline void LsNodeFlags::clear_attached() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attached_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool LsNodeFlags::attached() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeFlags.attached)
  return _internal_attached();
}
inline void LsNodeFlags::set_attached(bool value) {
  _internal_set_attached(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeFlags.attached)
}
inline bool LsNodeFlags::_internal_attached() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.attached_;
}
inline void LsNodeFlags::_internal_set_attached(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attached_ = value;
}

// bool external = 3;
inline void LsNodeFlags::clear_external() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.external_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline bool LsNodeFlags::external() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeFlags.external)
  return _internal_external();
}
inline void LsNodeFlags::set_external(bool value) {
  _internal_set_external(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeFlags.external)
}
inline bool LsNodeFlags::_internal_external() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.external_;
}
inline void LsNodeFlags::_internal_set_external(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.external_ = value;
}

// bool abr = 4;
inline void LsNodeFlags::clear_abr() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.abr_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline bool LsNodeFlags::abr() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeFlags.abr)
  return _internal_abr();
}
inline void LsNodeFlags::set_abr(bool value) {
  _internal_set_abr(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeFlags.abr)
}
inline bool LsNodeFlags::_internal_abr() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.abr_;
}
inline void LsNodeFlags::_internal_set_abr(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.abr_ = value;
}

// bool router = 5;
inline void LsNodeFlags::clear_router() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.router_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline bool LsNodeFlags::router() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeFlags.router)
  return _internal_router();
}
inline void LsNodeFlags::set_router(bool value) {
  _internal_set_router(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeFlags.router)
}
inline bool LsNodeFlags::_internal_router() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.router_;
}
inline void LsNodeFlags::_internal_set_router(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.router_ = value;
}

// bool v6 = 6;
inline void LsNodeFlags::clear_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.v6_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline bool LsNodeFlags::v6() const {
  // @@protoc_insertion_point(field_get:apipb.LsNodeFlags.v6)
  return _internal_v6();
}
inline void LsNodeFlags::set_v6(bool value) {
  _internal_set_v6(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:apipb.LsNodeFlags.v6)
}
inline bool LsNodeFlags::_internal_v6() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.v6_;
}
inline void LsNodeFlags::_internal_set_v6(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.v6_ = value;
}

// -------------------------------------------------------------------

// LsIGPFlags

// bool down = 1;
inline void LsIGPFlags::clear_down() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.down_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool LsIGPFlags::down() const {
  // @@protoc_insertion_point(field_get:apipb.LsIGPFlags.down)
  return _internal_down();
}
inline void LsIGPFlags::set_down(bool value) {
  _internal_set_down(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.LsIGPFlags.down)
}
inline bool LsIGPFlags::_internal_down() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.down_;
}
inline void LsIGPFlags::_internal_set_down(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.down_ = value;
}

// bool no_unicast = 2;
inline void LsIGPFlags::clear_no_unicast() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.no_unicast_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool LsIGPFlags::no_unicast() const {
  // @@protoc_insertion_point(field_get:apipb.LsIGPFlags.no_unicast)
  return _internal_no_unicast();
}
inline void LsIGPFlags::set_no_unicast(bool value) {
  _internal_set_no_unicast(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LsIGPFlags.no_unicast)
}
inline bool LsIGPFlags::_internal_no_unicast() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.no_unicast_;
}
inline void LsIGPFlags::_internal_set_no_unicast(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.no_unicast_ = value;
}

// bool local_address = 3;
inline void LsIGPFlags::clear_local_address() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_address_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline bool LsIGPFlags::local_address() const {
  // @@protoc_insertion_point(field_get:apipb.LsIGPFlags.local_address)
  return _internal_local_address();
}
inline void LsIGPFlags::set_local_address(bool value) {
  _internal_set_local_address(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LsIGPFlags.local_address)
}
inline bool LsIGPFlags::_internal_local_address() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_address_;
}
inline void LsIGPFlags::_internal_set_local_address(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_address_ = value;
}

// bool propagate_nssa = 4;
inline void LsIGPFlags::clear_propagate_nssa() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.propagate_nssa_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline bool LsIGPFlags::propagate_nssa() const {
  // @@protoc_insertion_point(field_get:apipb.LsIGPFlags.propagate_nssa)
  return _internal_propagate_nssa();
}
inline void LsIGPFlags::set_propagate_nssa(bool value) {
  _internal_set_propagate_nssa(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.LsIGPFlags.propagate_nssa)
}
inline bool LsIGPFlags::_internal_propagate_nssa() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.propagate_nssa_;
}
inline void LsIGPFlags::_internal_set_propagate_nssa(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.propagate_nssa_ = value;
}

// -------------------------------------------------------------------

// LsSrRange

// uint32 begin = 1;
inline void LsSrRange::clear_begin() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.begin_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t LsSrRange::begin() const {
  // @@protoc_insertion_point(field_get:apipb.LsSrRange.begin)
  return _internal_begin();
}
inline void LsSrRange::set_begin(::uint32_t value) {
  _internal_set_begin(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.LsSrRange.begin)
}
inline ::uint32_t LsSrRange::_internal_begin() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.begin_;
}
inline void LsSrRange::_internal_set_begin(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.begin_ = value;
}

// uint32 end = 2;
inline void LsSrRange::clear_end() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t LsSrRange::end() const {
  // @@protoc_insertion_point(field_get:apipb.LsSrRange.end)
  return _internal_end();
}
inline void LsSrRange::set_end(::uint32_t value) {
  _internal_set_end(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LsSrRange.end)
}
inline ::uint32_t LsSrRange::_internal_end() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.end_;
}
inline void LsSrRange::_internal_set_end(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.end_ = value;
}

// -------------------------------------------------------------------

// LsSrCapabilities

// bool ipv4_supported = 1;
inline void LsSrCapabilities::clear_ipv4_supported() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ipv4_supported_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool LsSrCapabilities::ipv4_supported() const {
  // @@protoc_insertion_point(field_get:apipb.LsSrCapabilities.ipv4_supported)
  return _internal_ipv4_supported();
}
inline void LsSrCapabilities::set_ipv4_supported(bool value) {
  _internal_set_ipv4_supported(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LsSrCapabilities.ipv4_supported)
}
inline bool LsSrCapabilities::_internal_ipv4_supported() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ipv4_supported_;
}
inline void LsSrCapabilities::_internal_set_ipv4_supported(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ipv4_supported_ = value;
}

// bool ipv6_supported = 2;
inline void LsSrCapabilities::clear_ipv6_supported() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ipv6_supported_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline bool LsSrCapabilities::ipv6_supported() const {
  // @@protoc_insertion_point(field_get:apipb.LsSrCapabilities.ipv6_supported)
  return _internal_ipv6_supported();
}
inline void LsSrCapabilities::set_ipv6_supported(bool value) {
  _internal_set_ipv6_supported(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LsSrCapabilities.ipv6_supported)
}
inline bool LsSrCapabilities::_internal_ipv6_supported() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ipv6_supported_;
}
inline void LsSrCapabilities::_internal_set_ipv6_supported(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ipv6_supported_ = value;
}

// repeated .apipb.LsSrRange ranges = 3;
inline int LsSrCapabilities::_internal_ranges_size() const {
  return _internal_ranges().size();
}
inline int LsSrCapabilities::ranges_size() const {
  return _internal_ranges_size();
}
inline void LsSrCapabilities::clear_ranges() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ranges_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LsSrRange& LsSrCapabilities::ranges(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsSrCapabilities.ranges)
  return _internal_ranges().Get(index);
}
inline ::apipb::LsSrRange* PROTOBUF_NONNULL LsSrCapabilities::mutable_ranges(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.LsSrCapabilities.ranges)
  return _internal_mutable_ranges()->Mutable(index);
}
inline ::apipb::LsSrRange* PROTOBUF_NONNULL LsSrCapabilities::add_ranges()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::apipb::LsSrRange* _add =
      _internal_mutable_ranges()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.LsSrCapabilities.ranges)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>& LsSrCapabilities::ranges() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.LsSrCapabilities.ranges)
  return _internal_ranges();
}
inline ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>* PROTOBUF_NONNULL
LsSrCapabilities::mutable_ranges() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.LsSrCapabilities.ranges)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_ranges();
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>&
LsSrCapabilities::_internal_ranges() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ranges_;
}
inline ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>* PROTOBUF_NONNULL
LsSrCapabilities::_internal_mutable_ranges() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.ranges_;
}

// -------------------------------------------------------------------

// LsSrLocalBlock

// repeated .apipb.LsSrRange ranges = 1;
inline int LsSrLocalBlock::_internal_ranges_size() const {
  return _internal_ranges().size();
}
inline int LsSrLocalBlock::ranges_size() const {
  return _internal_ranges_size();
}
inline void LsSrLocalBlock::clear_ranges() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.ranges_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LsSrRange& LsSrLocalBlock::ranges(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsSrLocalBlock.ranges)
  return _internal_ranges().Get(index);
}
inline ::apipb::LsSrRange* PROTOBUF_NONNULL LsSrLocalBlock::mutable_ranges(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.LsSrLocalBlock.ranges)
  return _internal_mutable_ranges()->Mutable(index);
}
inline ::apipb::LsSrRange* PROTOBUF_NONNULL LsSrLocalBlock::add_ranges()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::apipb::LsSrRange* _add =
      _internal_mutable_ranges()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.LsSrLocalBlock.ranges)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>& LsSrLocalBlock::ranges() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.LsSrLocalBlock.ranges)
  return _internal_ranges();
}
inline ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>* PROTOBUF_NONNULL
LsSrLocalBlock::mutable_ranges() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.LsSrLocalBlock.ranges)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_ranges();
}
inline const ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>&
LsSrLocalBlock::_internal_ranges() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.ranges_;
}
inline ::google::protobuf::RepeatedPtrField<::apipb::LsSrRange>* PROTOBUF_NONNULL
LsSrLocalBlock::_internal_mutable_ranges() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.ranges_;
}

// -------------------------------------------------------------------

// LsAttributeNode

// string name = 1;
inline void LsAttributeNode::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& LsAttributeNode::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeNode.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeNode::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeNode.name)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::mutable_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeNode.name)
  return _s;
}
inline const ::std::string& LsAttributeNode::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void LsAttributeNode::_internal_set_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeNode::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeNode.name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeNode::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeNode.name)
}

// .apipb.LsNodeFlags flags = 2;
inline bool LsAttributeNode::has_flags() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  PROTOBUF_ASSUME(!value || _impl_.flags_ != nullptr);
  return value;
}
inline void LsAttributeNode::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ != nullptr) _impl_.flags_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline const ::apipb::LsNodeFlags& LsAttributeNode::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsNodeFlags* p = _impl_.flags_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsNodeFlags>(&::apipb::LsNodeFlags_globals_);
}
inline const ::apipb::LsNodeFlags& LsAttributeNode::flags() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeNode.flags)
  return _internal_flags();
}
inline void LsAttributeNode::unsafe_arena_set_allocated_flags(
    ::apipb::LsNodeFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }
  _impl_.flags_ = reinterpret_cast<::apipb::LsNodeFlags*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttributeNode.flags)
}
inline ::apipb::LsNodeFlags* PROTOBUF_NULLABLE LsAttributeNode::release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::apipb::LsNodeFlags* released = _impl_.flags_;
  _impl_.flags_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsNodeFlags* PROTOBUF_NULLABLE LsAttributeNode::unsafe_arena_release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeNode.flags)

  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::apipb::LsNodeFlags* temp = _impl_.flags_;
  _impl_.flags_ = nullptr;
  return temp;
}
inline ::apipb::LsNodeFlags* PROTOBUF_NONNULL LsAttributeNode::_internal_mutable_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsNodeFlags>(GetArena());
    _impl_.flags_ = reinterpret_cast<::apipb::LsNodeFlags*>(p);
  }
  return _impl_.flags_;
}
inline ::apipb::LsNodeFlags* PROTOBUF_NONNULL LsAttributeNode::mutable_flags()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::apipb::LsNodeFlags* _msg = _internal_mutable_flags();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeNode.flags)
  return _msg;
}
inline void LsAttributeNode::set_allocated_flags(::apipb::LsNodeFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  }

  _impl_.flags_ = reinterpret_cast<::apipb::LsNodeFlags*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeNode.flags)
}

// string local_router_id = 3;
inline void LsAttributeNode::clear_local_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_router_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& LsAttributeNode::local_router_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeNode.local_router_id)
  return _internal_local_router_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeNode::set_local_router_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.local_router_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeNode.local_router_id)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::mutable_local_router_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_local_router_id();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeNode.local_router_id)
  return _s;
}
inline const ::std::string& LsAttributeNode::_internal_local_router_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_router_id_.Get();
}
inline void LsAttributeNode::_internal_set_local_router_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_router_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::_internal_mutable_local_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.local_router_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeNode::release_local_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeNode.local_router_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.local_router_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.local_router_id_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeNode::set_allocated_local_router_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.local_router_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.local_router_id_.IsDefault()) {
    _impl_.local_router_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeNode.local_router_id)
}

// string local_router_id_v6 = 4;
inline void LsAttributeNode::clear_local_router_id_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_router_id_v6_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& LsAttributeNode::local_router_id_v6() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeNode.local_router_id_v6)
  return _internal_local_router_id_v6();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeNode::set_local_router_id_v6(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.local_router_id_v6_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeNode.local_router_id_v6)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::mutable_local_router_id_v6()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_local_router_id_v6();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeNode.local_router_id_v6)
  return _s;
}
inline const ::std::string& LsAttributeNode::_internal_local_router_id_v6() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_router_id_v6_.Get();
}
inline void LsAttributeNode::_internal_set_local_router_id_v6(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_router_id_v6_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::_internal_mutable_local_router_id_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.local_router_id_v6_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeNode::release_local_router_id_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeNode.local_router_id_v6)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.local_router_id_v6_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.local_router_id_v6_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeNode::set_allocated_local_router_id_v6(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.local_router_id_v6_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.local_router_id_v6_.IsDefault()) {
    _impl_.local_router_id_v6_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeNode.local_router_id_v6)
}

// bytes isis_area = 5;
inline void LsAttributeNode::clear_isis_area() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.isis_area_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& LsAttributeNode::isis_area() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeNode.isis_area)
  return _internal_isis_area();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeNode::set_isis_area(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.isis_area_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeNode.isis_area)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::mutable_isis_area()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_isis_area();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeNode.isis_area)
  return _s;
}
inline const ::std::string& LsAttributeNode::_internal_isis_area() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.isis_area_.Get();
}
inline void LsAttributeNode::_internal_set_isis_area(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.isis_area_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::_internal_mutable_isis_area() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.isis_area_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeNode::release_isis_area() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeNode.isis_area)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.isis_area_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.isis_area_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeNode::set_allocated_isis_area(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.isis_area_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.isis_area_.IsDefault()) {
    _impl_.isis_area_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeNode.isis_area)
}

// bytes opaque = 6;
inline void LsAttributeNode::clear_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opaque_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline const ::std::string& LsAttributeNode::opaque() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeNode.opaque)
  return _internal_opaque();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeNode::set_opaque(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  _impl_.opaque_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeNode.opaque)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::mutable_opaque()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::std::string* _s = _internal_mutable_opaque();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeNode.opaque)
  return _s;
}
inline const ::std::string& LsAttributeNode::_internal_opaque() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.opaque_.Get();
}
inline void LsAttributeNode::_internal_set_opaque(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opaque_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::_internal_mutable_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.opaque_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeNode::release_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeNode.opaque)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000010U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  auto* released = _impl_.opaque_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.opaque_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeNode::set_allocated_opaque(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  _impl_.opaque_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.opaque_.IsDefault()) {
    _impl_.opaque_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeNode.opaque)
}

// .apipb.LsSrCapabilities sr_capabilities = 7;
inline bool LsAttributeNode::has_sr_capabilities() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000080U);
  PROTOBUF_ASSUME(!value || _impl_.sr_capabilities_ != nullptr);
  return value;
}
inline void LsAttributeNode::clear_sr_capabilities() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.sr_capabilities_ != nullptr) _impl_.sr_capabilities_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
}
inline const ::apipb::LsSrCapabilities& LsAttributeNode::_internal_sr_capabilities() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsSrCapabilities* p = _impl_.sr_capabilities_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsSrCapabilities>(&::apipb::LsSrCapabilities_globals_);
}
inline const ::apipb::LsSrCapabilities& LsAttributeNode::sr_capabilities() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeNode.sr_capabilities)
  return _internal_sr_capabilities();
}
inline void LsAttributeNode::unsafe_arena_set_allocated_sr_capabilities(
    ::apipb::LsSrCapabilities* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sr_capabilities_);
  }
  _impl_.sr_capabilities_ = reinterpret_cast<::apipb::LsSrCapabilities*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttributeNode.sr_capabilities)
}
inline ::apipb::LsSrCapabilities* PROTOBUF_NULLABLE LsAttributeNode::release_sr_capabilities() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  ::apipb::LsSrCapabilities* released = _impl_.sr_capabilities_;
  _impl_.sr_capabilities_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsSrCapabilities* PROTOBUF_NULLABLE LsAttributeNode::unsafe_arena_release_sr_capabilities() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeNode.sr_capabilities)

  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  ::apipb::LsSrCapabilities* temp = _impl_.sr_capabilities_;
  _impl_.sr_capabilities_ = nullptr;
  return temp;
}
inline ::apipb::LsSrCapabilities* PROTOBUF_NONNULL LsAttributeNode::_internal_mutable_sr_capabilities() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.sr_capabilities_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsSrCapabilities>(GetArena());
    _impl_.sr_capabilities_ = reinterpret_cast<::apipb::LsSrCapabilities*>(p);
  }
  return _impl_.sr_capabilities_;
}
inline ::apipb::LsSrCapabilities* PROTOBUF_NONNULL LsAttributeNode::mutable_sr_capabilities()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  ::apipb::LsSrCapabilities* _msg = _internal_mutable_sr_capabilities();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeNode.sr_capabilities)
  return _msg;
}
inline void LsAttributeNode::set_allocated_sr_capabilities(::apipb::LsSrCapabilities* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sr_capabilities_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  }

  _impl_.sr_capabilities_ = reinterpret_cast<::apipb::LsSrCapabilities*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeNode.sr_capabilities)
}

// bytes sr_algorithms = 8;
inline void LsAttributeNode::clear_sr_algorithms() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sr_algorithms_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline const ::std::string& LsAttributeNode::sr_algorithms() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeNode.sr_algorithms)
  return _internal_sr_algorithms();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeNode::set_sr_algorithms(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  _impl_.sr_algorithms_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeNode.sr_algorithms)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::mutable_sr_algorithms()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::std::string* _s = _internal_mutable_sr_algorithms();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeNode.sr_algorithms)
  return _s;
}
inline const ::std::string& LsAttributeNode::_internal_sr_algorithms() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sr_algorithms_.Get();
}
inline void LsAttributeNode::_internal_set_sr_algorithms(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sr_algorithms_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeNode::_internal_mutable_sr_algorithms() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sr_algorithms_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeNode::release_sr_algorithms() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeNode.sr_algorithms)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000020U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  auto* released = _impl_.sr_algorithms_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.sr_algorithms_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeNode::set_allocated_sr_algorithms(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  }
  _impl_.sr_algorithms_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.sr_algorithms_.IsDefault()) {
    _impl_.sr_algorithms_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeNode.sr_algorithms)
}

// .apipb.LsSrLocalBlock sr_local_block = 9;
inline bool LsAttributeNode::has_sr_local_block() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000100U);
  PROTOBUF_ASSUME(!value || _impl_.sr_local_block_ != nullptr);
  return value;
}
inline void LsAttributeNode::clear_sr_local_block() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.sr_local_block_ != nullptr) _impl_.sr_local_block_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
}
inline const ::apipb::LsSrLocalBlock& LsAttributeNode::_internal_sr_local_block() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsSrLocalBlock* p = _impl_.sr_local_block_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsSrLocalBlock>(&::apipb::LsSrLocalBlock_globals_);
}
inline const ::apipb::LsSrLocalBlock& LsAttributeNode::sr_local_block() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeNode.sr_local_block)
  return _internal_sr_local_block();
}
inline void LsAttributeNode::unsafe_arena_set_allocated_sr_local_block(
    ::apipb::LsSrLocalBlock* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sr_local_block_);
  }
  _impl_.sr_local_block_ = reinterpret_cast<::apipb::LsSrLocalBlock*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttributeNode.sr_local_block)
}
inline ::apipb::LsSrLocalBlock* PROTOBUF_NULLABLE LsAttributeNode::release_sr_local_block() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::apipb::LsSrLocalBlock* released = _impl_.sr_local_block_;
  _impl_.sr_local_block_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsSrLocalBlock* PROTOBUF_NULLABLE LsAttributeNode::unsafe_arena_release_sr_local_block() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeNode.sr_local_block)

  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::apipb::LsSrLocalBlock* temp = _impl_.sr_local_block_;
  _impl_.sr_local_block_ = nullptr;
  return temp;
}
inline ::apipb::LsSrLocalBlock* PROTOBUF_NONNULL LsAttributeNode::_internal_mutable_sr_local_block() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.sr_local_block_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsSrLocalBlock>(GetArena());
    _impl_.sr_local_block_ = reinterpret_cast<::apipb::LsSrLocalBlock*>(p);
  }
  return _impl_.sr_local_block_;
}
inline ::apipb::LsSrLocalBlock* PROTOBUF_NONNULL LsAttributeNode::mutable_sr_local_block()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  ::apipb::LsSrLocalBlock* _msg = _internal_mutable_sr_local_block();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeNode.sr_local_block)
  return _msg;
}
inline void LsAttributeNode::set_allocated_sr_local_block(::apipb::LsSrLocalBlock* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.sr_local_block_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
  }

  _impl_.sr_local_block_ = reinterpret_cast<::apipb::LsSrLocalBlock*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeNode.sr_local_block)
}

// -------------------------------------------------------------------

// LsAttributeLink

// string name = 1;
inline void LsAttributeLink::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& LsAttributeLink::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeLink::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.name)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::mutable_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeLink.name)
  return _s;
}
inline const ::std::string& LsAttributeLink::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void LsAttributeLink::_internal_set_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeLink::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeLink.name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeLink::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeLink.name)
}

// string local_router_id = 2;
inline void LsAttributeLink::clear_local_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_router_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& LsAttributeLink::local_router_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.local_router_id)
  return _internal_local_router_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeLink::set_local_router_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.local_router_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.local_router_id)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::mutable_local_router_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_local_router_id();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeLink.local_router_id)
  return _s;
}
inline const ::std::string& LsAttributeLink::_internal_local_router_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_router_id_.Get();
}
inline void LsAttributeLink::_internal_set_local_router_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_router_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::_internal_mutable_local_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.local_router_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeLink::release_local_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeLink.local_router_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.local_router_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.local_router_id_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeLink::set_allocated_local_router_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.local_router_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.local_router_id_.IsDefault()) {
    _impl_.local_router_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeLink.local_router_id)
}

// string local_router_id_v6 = 3;
inline void LsAttributeLink::clear_local_router_id_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_router_id_v6_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline const ::std::string& LsAttributeLink::local_router_id_v6() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.local_router_id_v6)
  return _internal_local_router_id_v6();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeLink::set_local_router_id_v6(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  _impl_.local_router_id_v6_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.local_router_id_v6)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::mutable_local_router_id_v6()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  ::std::string* _s = _internal_mutable_local_router_id_v6();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeLink.local_router_id_v6)
  return _s;
}
inline const ::std::string& LsAttributeLink::_internal_local_router_id_v6() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_router_id_v6_.Get();
}
inline void LsAttributeLink::_internal_set_local_router_id_v6(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_router_id_v6_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::_internal_mutable_local_router_id_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.local_router_id_v6_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeLink::release_local_router_id_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeLink.local_router_id_v6)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000010U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  auto* released = _impl_.local_router_id_v6_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.local_router_id_v6_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeLink::set_allocated_local_router_id_v6(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
  }
  _impl_.local_router_id_v6_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.local_router_id_v6_.IsDefault()) {
    _impl_.local_router_id_v6_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeLink.local_router_id_v6)
}

// string remote_router_id = 4;
inline void LsAttributeLink::clear_remote_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.remote_router_id_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline const ::std::string& LsAttributeLink::remote_router_id() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.remote_router_id)
  return _internal_remote_router_id();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeLink::set_remote_router_id(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  _impl_.remote_router_id_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.remote_router_id)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::mutable_remote_router_id()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::std::string* _s = _internal_mutable_remote_router_id();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeLink.remote_router_id)
  return _s;
}
inline const ::std::string& LsAttributeLink::_internal_remote_router_id() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.remote_router_id_.Get();
}
inline void LsAttributeLink::_internal_set_remote_router_id(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.remote_router_id_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::_internal_mutable_remote_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.remote_router_id_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeLink::release_remote_router_id() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeLink.remote_router_id)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000020U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  auto* released = _impl_.remote_router_id_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.remote_router_id_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeLink::set_allocated_remote_router_id(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  }
  _impl_.remote_router_id_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.remote_router_id_.IsDefault()) {
    _impl_.remote_router_id_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeLink.remote_router_id)
}

// string remote_router_id_v6 = 5;
inline void LsAttributeLink::clear_remote_router_id_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.remote_router_id_v6_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline const ::std::string& LsAttributeLink::remote_router_id_v6() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.remote_router_id_v6)
  return _internal_remote_router_id_v6();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeLink::set_remote_router_id_v6(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  _impl_.remote_router_id_v6_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.remote_router_id_v6)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::mutable_remote_router_id_v6()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  ::std::string* _s = _internal_mutable_remote_router_id_v6();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeLink.remote_router_id_v6)
  return _s;
}
inline const ::std::string& LsAttributeLink::_internal_remote_router_id_v6() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.remote_router_id_v6_.Get();
}
inline void LsAttributeLink::_internal_set_remote_router_id_v6(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.remote_router_id_v6_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::_internal_mutable_remote_router_id_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.remote_router_id_v6_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeLink::release_remote_router_id_v6() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeLink.remote_router_id_v6)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000040U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  auto* released = _impl_.remote_router_id_v6_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.remote_router_id_v6_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeLink::set_allocated_remote_router_id_v6(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
  }
  _impl_.remote_router_id_v6_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.remote_router_id_v6_.IsDefault()) {
    _impl_.remote_router_id_v6_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeLink.remote_router_id_v6)
}

// uint32 admin_group = 6;
inline void LsAttributeLink::clear_admin_group() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.admin_group_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000100U);
}
inline ::uint32_t LsAttributeLink::admin_group() const {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.admin_group)
  return _internal_admin_group();
}
inline void LsAttributeLink::set_admin_group(::uint32_t value) {
  _internal_set_admin_group(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000100U);
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.admin_group)
}
inline ::uint32_t LsAttributeLink::_internal_admin_group() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.admin_group_;
}
inline void LsAttributeLink::_internal_set_admin_group(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.admin_group_ = value;
}

// uint32 default_te_metric = 7;
inline void LsAttributeLink::clear_default_te_metric() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.default_te_metric_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000200U);
}
inline ::uint32_t LsAttributeLink::default_te_metric() const {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.default_te_metric)
  return _internal_default_te_metric();
}
inline void LsAttributeLink::set_default_te_metric(::uint32_t value) {
  _internal_set_default_te_metric(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000200U);
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.default_te_metric)
}
inline ::uint32_t LsAttributeLink::_internal_default_te_metric() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.default_te_metric_;
}
inline void LsAttributeLink::_internal_set_default_te_metric(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.default_te_metric_ = value;
}

// uint32 igp_metric = 8;
inline void LsAttributeLink::clear_igp_metric() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.igp_metric_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000400U);
}
inline ::uint32_t LsAttributeLink::igp_metric() const {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.igp_metric)
  return _internal_igp_metric();
}
inline void LsAttributeLink::set_igp_metric(::uint32_t value) {
  _internal_set_igp_metric(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000400U);
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.igp_metric)
}
inline ::uint32_t LsAttributeLink::_internal_igp_metric() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.igp_metric_;
}
inline void LsAttributeLink::_internal_set_igp_metric(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.igp_metric_ = value;
}

// bytes opaque = 9;
inline void LsAttributeLink::clear_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opaque_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
}
inline const ::std::string& LsAttributeLink::opaque() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.opaque)
  return _internal_opaque();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributeLink::set_opaque(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  _impl_.opaque_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.opaque)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::mutable_opaque()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  ::std::string* _s = _internal_mutable_opaque();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeLink.opaque)
  return _s;
}
inline const ::std::string& LsAttributeLink::_internal_opaque() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.opaque_.Get();
}
inline void LsAttributeLink::_internal_set_opaque(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opaque_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributeLink::_internal_mutable_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.opaque_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributeLink::release_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeLink.opaque)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000080U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  auto* released = _impl_.opaque_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.opaque_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributeLink::set_allocated_opaque(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
  }
  _impl_.opaque_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.opaque_.IsDefault()) {
    _impl_.opaque_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeLink.opaque)
}

// float bandwidth = 10;
inline void LsAttributeLink::clear_bandwidth() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bandwidth_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000800U);
}
inline float LsAttributeLink::bandwidth() const {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.bandwidth)
  return _internal_bandwidth();
}
inline void LsAttributeLink::set_bandwidth(float value) {
  _internal_set_bandwidth(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000800U);
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.bandwidth)
}
inline float LsAttributeLink::_internal_bandwidth() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.bandwidth_;
}
inline void LsAttributeLink::_internal_set_bandwidth(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.bandwidth_ = value;
}

// float reservable_bandwidth = 11;
inline void LsAttributeLink::clear_reservable_bandwidth() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.reservable_bandwidth_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00001000U);
}
inline float LsAttributeLink::reservable_bandwidth() const {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.reservable_bandwidth)
  return _internal_reservable_bandwidth();
}
inline void LsAttributeLink::set_reservable_bandwidth(float value) {
  _internal_set_reservable_bandwidth(value);
  SetHasBit(_impl_._has_bits_[0], 0x00001000U);
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.reservable_bandwidth)
}
inline float LsAttributeLink::_internal_reservable_bandwidth() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.reservable_bandwidth_;
}
inline void LsAttributeLink::_internal_set_reservable_bandwidth(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.reservable_bandwidth_ = value;
}

// repeated float unreserved_bandwidth = 12;
inline int LsAttributeLink::_internal_unreserved_bandwidth_size() const {
  return _internal_unreserved_bandwidth().size();
}
inline int LsAttributeLink::unreserved_bandwidth_size() const {
  return _internal_unreserved_bandwidth_size();
}
inline void LsAttributeLink::clear_unreserved_bandwidth() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.unreserved_bandwidth_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline float LsAttributeLink::unreserved_bandwidth(int index) const {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.unreserved_bandwidth)
  return _internal_unreserved_bandwidth().Get(index);
}
inline void LsAttributeLink::set_unreserved_bandwidth(int index, float value) {
  _internal_mutable_unreserved_bandwidth()->Set(index, value);
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.unreserved_bandwidth)
}
inline void LsAttributeLink::add_unreserved_bandwidth(float value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_unreserved_bandwidth()
      ->InternalAddWithArena<const ::google::protobuf::MessageLite*>(
          internal_visibility(), this, value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.LsAttributeLink.unreserved_bandwidth)
}
inline const ::google::protobuf::RepeatedField<float>& LsAttributeLink::unreserved_bandwidth() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.LsAttributeLink.unreserved_bandwidth)
  return _internal_unreserved_bandwidth();
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL LsAttributeLink::mutable_unreserved_bandwidth()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.LsAttributeLink.unreserved_bandwidth)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_unreserved_bandwidth();
}
inline const ::google::protobuf::RepeatedField<float>&
LsAttributeLink::_internal_unreserved_bandwidth() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.unreserved_bandwidth_;
}
inline ::google::protobuf::RepeatedField<float>* PROTOBUF_NONNULL
LsAttributeLink::_internal_mutable_unreserved_bandwidth() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.unreserved_bandwidth_;
}

// uint32 sr_adjacency_sid = 13;
inline void LsAttributeLink::clear_sr_adjacency_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sr_adjacency_sid_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00002000U);
}
inline ::uint32_t LsAttributeLink::sr_adjacency_sid() const {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.sr_adjacency_sid)
  return _internal_sr_adjacency_sid();
}
inline void LsAttributeLink::set_sr_adjacency_sid(::uint32_t value) {
  _internal_set_sr_adjacency_sid(value);
  SetHasBit(_impl_._has_bits_[0], 0x00002000U);
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.sr_adjacency_sid)
}
inline ::uint32_t LsAttributeLink::_internal_sr_adjacency_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sr_adjacency_sid_;
}
inline void LsAttributeLink::_internal_set_sr_adjacency_sid(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sr_adjacency_sid_ = value;
}

// repeated uint32 srlgs = 14;
inline int LsAttributeLink::_internal_srlgs_size() const {
  return _internal_srlgs().size();
}
inline int LsAttributeLink::srlgs_size() const {
  return _internal_srlgs_size();
}
inline void LsAttributeLink::clear_srlgs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.srlgs_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t LsAttributeLink::srlgs(int index) const {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeLink.srlgs)
  return _internal_srlgs().Get(index);
}
inline void LsAttributeLink::set_srlgs(int index, ::uint32_t value) {
  _internal_mutable_srlgs()->Set(index, value);
  // @@protoc_insertion_point(field_set:apipb.LsAttributeLink.srlgs)
}
inline void LsAttributeLink::add_srlgs(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_srlgs()
      ->InternalAddWithArena<const ::google::protobuf::MessageLite*>(
          internal_visibility(), this, value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:apipb.LsAttributeLink.srlgs)
}
inline const ::google::protobuf::RepeatedField<::uint32_t>& LsAttributeLink::srlgs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.LsAttributeLink.srlgs)
  return _internal_srlgs();
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL LsAttributeLink::mutable_srlgs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:apipb.LsAttributeLink.srlgs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_srlgs();
}
inline const ::google::protobuf::RepeatedField<::uint32_t>&
LsAttributeLink::_internal_srlgs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.srlgs_;
}
inline ::google::protobuf::RepeatedField<::uint32_t>* PROTOBUF_NONNULL
LsAttributeLink::_internal_mutable_srlgs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.srlgs_;
}

// -------------------------------------------------------------------

// LsAttributePrefix

// .apipb.LsIGPFlags igp_flags = 1;
inline bool LsAttributePrefix::has_igp_flags() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.igp_flags_ != nullptr);
  return value;
}
inline void LsAttributePrefix::clear_igp_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.igp_flags_ != nullptr) _impl_.igp_flags_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::LsIGPFlags& LsAttributePrefix::_internal_igp_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsIGPFlags* p = _impl_.igp_flags_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsIGPFlags>(&::apipb::LsIGPFlags_globals_);
}
inline const ::apipb::LsIGPFlags& LsAttributePrefix::igp_flags() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributePrefix.igp_flags)
  return _internal_igp_flags();
}
inline void LsAttributePrefix::unsafe_arena_set_allocated_igp_flags(
    ::apipb::LsIGPFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.igp_flags_);
  }
  _impl_.igp_flags_ = reinterpret_cast<::apipb::LsIGPFlags*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttributePrefix.igp_flags)
}
inline ::apipb::LsIGPFlags* PROTOBUF_NULLABLE LsAttributePrefix::release_igp_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsIGPFlags* released = _impl_.igp_flags_;
  _impl_.igp_flags_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsIGPFlags* PROTOBUF_NULLABLE LsAttributePrefix::unsafe_arena_release_igp_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributePrefix.igp_flags)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsIGPFlags* temp = _impl_.igp_flags_;
  _impl_.igp_flags_ = nullptr;
  return temp;
}
inline ::apipb::LsIGPFlags* PROTOBUF_NONNULL LsAttributePrefix::_internal_mutable_igp_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.igp_flags_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsIGPFlags>(GetArena());
    _impl_.igp_flags_ = reinterpret_cast<::apipb::LsIGPFlags*>(p);
  }
  return _impl_.igp_flags_;
}
inline ::apipb::LsIGPFlags* PROTOBUF_NONNULL LsAttributePrefix::mutable_igp_flags()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsIGPFlags* _msg = _internal_mutable_igp_flags();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributePrefix.igp_flags)
  return _msg;
}
inline void LsAttributePrefix::set_allocated_igp_flags(::apipb::LsIGPFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.igp_flags_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.igp_flags_ = reinterpret_cast<::apipb::LsIGPFlags*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributePrefix.igp_flags)
}

// bytes opaque = 2;
inline void LsAttributePrefix::clear_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opaque_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& LsAttributePrefix::opaque() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributePrefix.opaque)
  return _internal_opaque();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void LsAttributePrefix::set_opaque(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.opaque_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.LsAttributePrefix.opaque)
}
inline ::std::string* PROTOBUF_NONNULL LsAttributePrefix::mutable_opaque()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_opaque();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributePrefix.opaque)
  return _s;
}
inline const ::std::string& LsAttributePrefix::_internal_opaque() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.opaque_.Get();
}
inline void LsAttributePrefix::_internal_set_opaque(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.opaque_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL LsAttributePrefix::_internal_mutable_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.opaque_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE LsAttributePrefix::release_opaque() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributePrefix.opaque)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.opaque_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.opaque_.Set("", GetArena());
  }
  return released;
}
inline void LsAttributePrefix::set_allocated_opaque(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.opaque_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.opaque_.IsDefault()) {
    _impl_.opaque_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributePrefix.opaque)
}

// uint32 sr_prefix_sid = 3;
inline void LsAttributePrefix::clear_sr_prefix_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sr_prefix_sid_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t LsAttributePrefix::sr_prefix_sid() const {
  // @@protoc_insertion_point(field_get:apipb.LsAttributePrefix.sr_prefix_sid)
  return _internal_sr_prefix_sid();
}
inline void LsAttributePrefix::set_sr_prefix_sid(::uint32_t value) {
  _internal_set_sr_prefix_sid(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LsAttributePrefix.sr_prefix_sid)
}
inline ::uint32_t LsAttributePrefix::_internal_sr_prefix_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sr_prefix_sid_;
}
inline void LsAttributePrefix::_internal_set_sr_prefix_sid(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sr_prefix_sid_ = value;
}

// -------------------------------------------------------------------

// LsBgpPeerSegmentSIDFlags

// bool value = 1;
inline void LsBgpPeerSegmentSIDFlags::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool LsBgpPeerSegmentSIDFlags::value() const {
  // @@protoc_insertion_point(field_get:apipb.LsBgpPeerSegmentSIDFlags.value)
  return _internal_value();
}
inline void LsBgpPeerSegmentSIDFlags::set_value(bool value) {
  _internal_set_value(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.LsBgpPeerSegmentSIDFlags.value)
}
inline bool LsBgpPeerSegmentSIDFlags::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_;
}
inline void LsBgpPeerSegmentSIDFlags::_internal_set_value(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_ = value;
}

// bool local = 2;
inline void LsBgpPeerSegmentSIDFlags::clear_local() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool LsBgpPeerSegmentSIDFlags::local() const {
  // @@protoc_insertion_point(field_get:apipb.LsBgpPeerSegmentSIDFlags.local)
  return _internal_local();
}
inline void LsBgpPeerSegmentSIDFlags::set_local(bool value) {
  _internal_set_local(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LsBgpPeerSegmentSIDFlags.local)
}
inline bool LsBgpPeerSegmentSIDFlags::_internal_local() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.local_;
}
inline void LsBgpPeerSegmentSIDFlags::_internal_set_local(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.local_ = value;
}

// bool backup = 3;
inline void LsBgpPeerSegmentSIDFlags::clear_backup() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.backup_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline bool LsBgpPeerSegmentSIDFlags::backup() const {
  // @@protoc_insertion_point(field_get:apipb.LsBgpPeerSegmentSIDFlags.backup)
  return _internal_backup();
}
inline void LsBgpPeerSegmentSIDFlags::set_backup(bool value) {
  _internal_set_backup(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LsBgpPeerSegmentSIDFlags.backup)
}
inline bool LsBgpPeerSegmentSIDFlags::_internal_backup() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.backup_;
}
inline void LsBgpPeerSegmentSIDFlags::_internal_set_backup(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.backup_ = value;
}

// bool persistent = 4;
inline void LsBgpPeerSegmentSIDFlags::clear_persistent() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.persistent_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline bool LsBgpPeerSegmentSIDFlags::persistent() const {
  // @@protoc_insertion_point(field_get:apipb.LsBgpPeerSegmentSIDFlags.persistent)
  return _internal_persistent();
}
inline void LsBgpPeerSegmentSIDFlags::set_persistent(bool value) {
  _internal_set_persistent(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.LsBgpPeerSegmentSIDFlags.persistent)
}
inline bool LsBgpPeerSegmentSIDFlags::_internal_persistent() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.persistent_;
}
inline void LsBgpPeerSegmentSIDFlags::_internal_set_persistent(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.persistent_ = value;
}

// -------------------------------------------------------------------

// LsBgpPeerSegmentSID

// .apipb.LsBgpPeerSegmentSIDFlags flags = 1;
inline bool LsBgpPeerSegmentSID::has_flags() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.flags_ != nullptr);
  return value;
}
inline void LsBgpPeerSegmentSID::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ != nullptr) _impl_.flags_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LsBgpPeerSegmentSIDFlags& LsBgpPeerSegmentSID::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsBgpPeerSegmentSIDFlags* p = _impl_.flags_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsBgpPeerSegmentSIDFlags>(&::apipb::LsBgpPeerSegmentSIDFlags_globals_);
}
inline const ::apipb::LsBgpPeerSegmentSIDFlags& LsBgpPeerSegmentSID::flags() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsBgpPeerSegmentSID.flags)
  return _internal_flags();
}
inline void LsBgpPeerSegmentSID::unsafe_arena_set_allocated_flags(
    ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }
  _impl_.flags_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSIDFlags*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsBgpPeerSegmentSID.flags)
}
inline ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NULLABLE LsBgpPeerSegmentSID::release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsBgpPeerSegmentSIDFlags* released = _impl_.flags_;
  _impl_.flags_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NULLABLE LsBgpPeerSegmentSID::unsafe_arena_release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsBgpPeerSegmentSID.flags)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsBgpPeerSegmentSIDFlags* temp = _impl_.flags_;
  _impl_.flags_ = nullptr;
  return temp;
}
inline ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NONNULL LsBgpPeerSegmentSID::_internal_mutable_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsBgpPeerSegmentSIDFlags>(GetArena());
    _impl_.flags_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSIDFlags*>(p);
  }
  return _impl_.flags_;
}
inline ::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NONNULL LsBgpPeerSegmentSID::mutable_flags()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsBgpPeerSegmentSIDFlags* _msg = _internal_mutable_flags();
  // @@protoc_insertion_point(field_mutable:apipb.LsBgpPeerSegmentSID.flags)
  return _msg;
}
inline void LsBgpPeerSegmentSID::set_allocated_flags(::apipb::LsBgpPeerSegmentSIDFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.flags_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSIDFlags*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsBgpPeerSegmentSID.flags)
}

// uint32 weight = 2;
inline void LsBgpPeerSegmentSID::clear_weight() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.weight_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t LsBgpPeerSegmentSID::weight() const {
  // @@protoc_insertion_point(field_get:apipb.LsBgpPeerSegmentSID.weight)
  return _internal_weight();
}
inline void LsBgpPeerSegmentSID::set_weight(::uint32_t value) {
  _internal_set_weight(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.LsBgpPeerSegmentSID.weight)
}
inline ::uint32_t LsBgpPeerSegmentSID::_internal_weight() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.weight_;
}
inline void LsBgpPeerSegmentSID::_internal_set_weight(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.weight_ = value;
}

// uint32 sid = 3;
inline void LsBgpPeerSegmentSID::clear_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t LsBgpPeerSegmentSID::sid() const {
  // @@protoc_insertion_point(field_get:apipb.LsBgpPeerSegmentSID.sid)
  return _internal_sid();
}
inline void LsBgpPeerSegmentSID::set_sid(::uint32_t value) {
  _internal_set_sid(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.LsBgpPeerSegmentSID.sid)
}
inline ::uint32_t LsBgpPeerSegmentSID::_internal_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sid_;
}
inline void LsBgpPeerSegmentSID::_internal_set_sid(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_ = value;
}

// -------------------------------------------------------------------

// LsAttributeBgpPeerSegment

// .apipb.LsBgpPeerSegmentSID bgp_peer_node_sid = 1;
inline bool LsAttributeBgpPeerSegment::has_bgp_peer_node_sid() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.bgp_peer_node_sid_ != nullptr);
  return value;
}
inline void LsAttributeBgpPeerSegment::clear_bgp_peer_node_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bgp_peer_node_sid_ != nullptr) _impl_.bgp_peer_node_sid_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LsBgpPeerSegmentSID& LsAttributeBgpPeerSegment::_internal_bgp_peer_node_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsBgpPeerSegmentSID* p = _impl_.bgp_peer_node_sid_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsBgpPeerSegmentSID>(&::apipb::LsBgpPeerSegmentSID_globals_);
}
inline const ::apipb::LsBgpPeerSegmentSID& LsAttributeBgpPeerSegment::bgp_peer_node_sid() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeBgpPeerSegment.bgp_peer_node_sid)
  return _internal_bgp_peer_node_sid();
}
inline void LsAttributeBgpPeerSegment::unsafe_arena_set_allocated_bgp_peer_node_sid(
    ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bgp_peer_node_sid_);
  }
  _impl_.bgp_peer_node_sid_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSID*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttributeBgpPeerSegment.bgp_peer_node_sid)
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE LsAttributeBgpPeerSegment::release_bgp_peer_node_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsBgpPeerSegmentSID* released = _impl_.bgp_peer_node_sid_;
  _impl_.bgp_peer_node_sid_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE LsAttributeBgpPeerSegment::unsafe_arena_release_bgp_peer_node_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeBgpPeerSegment.bgp_peer_node_sid)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsBgpPeerSegmentSID* temp = _impl_.bgp_peer_node_sid_;
  _impl_.bgp_peer_node_sid_ = nullptr;
  return temp;
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL LsAttributeBgpPeerSegment::_internal_mutable_bgp_peer_node_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bgp_peer_node_sid_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsBgpPeerSegmentSID>(GetArena());
    _impl_.bgp_peer_node_sid_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSID*>(p);
  }
  return _impl_.bgp_peer_node_sid_;
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL LsAttributeBgpPeerSegment::mutable_bgp_peer_node_sid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsBgpPeerSegmentSID* _msg = _internal_mutable_bgp_peer_node_sid();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeBgpPeerSegment.bgp_peer_node_sid)
  return _msg;
}
inline void LsAttributeBgpPeerSegment::set_allocated_bgp_peer_node_sid(::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bgp_peer_node_sid_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.bgp_peer_node_sid_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSID*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeBgpPeerSegment.bgp_peer_node_sid)
}

// .apipb.LsBgpPeerSegmentSID bgp_peer_adjacency_sid = 2;
inline bool LsAttributeBgpPeerSegment::has_bgp_peer_adjacency_sid() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.bgp_peer_adjacency_sid_ != nullptr);
  return value;
}
inline void LsAttributeBgpPeerSegment::clear_bgp_peer_adjacency_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bgp_peer_adjacency_sid_ != nullptr) _impl_.bgp_peer_adjacency_sid_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::LsBgpPeerSegmentSID& LsAttributeBgpPeerSegment::_internal_bgp_peer_adjacency_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsBgpPeerSegmentSID* p = _impl_.bgp_peer_adjacency_sid_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsBgpPeerSegmentSID>(&::apipb::LsBgpPeerSegmentSID_globals_);
}
inline const ::apipb::LsBgpPeerSegmentSID& LsAttributeBgpPeerSegment::bgp_peer_adjacency_sid() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeBgpPeerSegment.bgp_peer_adjacency_sid)
  return _internal_bgp_peer_adjacency_sid();
}
inline void LsAttributeBgpPeerSegment::unsafe_arena_set_allocated_bgp_peer_adjacency_sid(
    ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bgp_peer_adjacency_sid_);
  }
  _impl_.bgp_peer_adjacency_sid_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSID*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttributeBgpPeerSegment.bgp_peer_adjacency_sid)
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE LsAttributeBgpPeerSegment::release_bgp_peer_adjacency_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsBgpPeerSegmentSID* released = _impl_.bgp_peer_adjacency_sid_;
  _impl_.bgp_peer_adjacency_sid_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE LsAttributeBgpPeerSegment::unsafe_arena_release_bgp_peer_adjacency_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeBgpPeerSegment.bgp_peer_adjacency_sid)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsBgpPeerSegmentSID* temp = _impl_.bgp_peer_adjacency_sid_;
  _impl_.bgp_peer_adjacency_sid_ = nullptr;
  return temp;
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL LsAttributeBgpPeerSegment::_internal_mutable_bgp_peer_adjacency_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bgp_peer_adjacency_sid_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsBgpPeerSegmentSID>(GetArena());
    _impl_.bgp_peer_adjacency_sid_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSID*>(p);
  }
  return _impl_.bgp_peer_adjacency_sid_;
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL LsAttributeBgpPeerSegment::mutable_bgp_peer_adjacency_sid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsBgpPeerSegmentSID* _msg = _internal_mutable_bgp_peer_adjacency_sid();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeBgpPeerSegment.bgp_peer_adjacency_sid)
  return _msg;
}
inline void LsAttributeBgpPeerSegment::set_allocated_bgp_peer_adjacency_sid(::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bgp_peer_adjacency_sid_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.bgp_peer_adjacency_sid_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSID*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeBgpPeerSegment.bgp_peer_adjacency_sid)
}

// .apipb.LsBgpPeerSegmentSID bgp_peer_set_sid = 3;
inline bool LsAttributeBgpPeerSegment::has_bgp_peer_set_sid() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.bgp_peer_set_sid_ != nullptr);
  return value;
}
inline void LsAttributeBgpPeerSegment::clear_bgp_peer_set_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bgp_peer_set_sid_ != nullptr) _impl_.bgp_peer_set_sid_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::apipb::LsBgpPeerSegmentSID& LsAttributeBgpPeerSegment::_internal_bgp_peer_set_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsBgpPeerSegmentSID* p = _impl_.bgp_peer_set_sid_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsBgpPeerSegmentSID>(&::apipb::LsBgpPeerSegmentSID_globals_);
}
inline const ::apipb::LsBgpPeerSegmentSID& LsAttributeBgpPeerSegment::bgp_peer_set_sid() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttributeBgpPeerSegment.bgp_peer_set_sid)
  return _internal_bgp_peer_set_sid();
}
inline void LsAttributeBgpPeerSegment::unsafe_arena_set_allocated_bgp_peer_set_sid(
    ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bgp_peer_set_sid_);
  }
  _impl_.bgp_peer_set_sid_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSID*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttributeBgpPeerSegment.bgp_peer_set_sid)
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE LsAttributeBgpPeerSegment::release_bgp_peer_set_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::LsBgpPeerSegmentSID* released = _impl_.bgp_peer_set_sid_;
  _impl_.bgp_peer_set_sid_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE LsAttributeBgpPeerSegment::unsafe_arena_release_bgp_peer_set_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttributeBgpPeerSegment.bgp_peer_set_sid)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::LsBgpPeerSegmentSID* temp = _impl_.bgp_peer_set_sid_;
  _impl_.bgp_peer_set_sid_ = nullptr;
  return temp;
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL LsAttributeBgpPeerSegment::_internal_mutable_bgp_peer_set_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bgp_peer_set_sid_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsBgpPeerSegmentSID>(GetArena());
    _impl_.bgp_peer_set_sid_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSID*>(p);
  }
  return _impl_.bgp_peer_set_sid_;
}
inline ::apipb::LsBgpPeerSegmentSID* PROTOBUF_NONNULL LsAttributeBgpPeerSegment::mutable_bgp_peer_set_sid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::LsBgpPeerSegmentSID* _msg = _internal_mutable_bgp_peer_set_sid();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttributeBgpPeerSegment.bgp_peer_set_sid)
  return _msg;
}
inline void LsAttributeBgpPeerSegment::set_allocated_bgp_peer_set_sid(::apipb::LsBgpPeerSegmentSID* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bgp_peer_set_sid_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.bgp_peer_set_sid_ = reinterpret_cast<::apipb::LsBgpPeerSegmentSID*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttributeBgpPeerSegment.bgp_peer_set_sid)
}

// -------------------------------------------------------------------

// LsAttribute

// .apipb.LsAttributeNode node = 1;
inline bool LsAttribute::has_node() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.node_ != nullptr);
  return value;
}
inline void LsAttribute::clear_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.node_ != nullptr) _impl_.node_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::apipb::LsAttributeNode& LsAttribute::_internal_node() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsAttributeNode* p = _impl_.node_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsAttributeNode>(&::apipb::LsAttributeNode_globals_);
}
inline const ::apipb::LsAttributeNode& LsAttribute::node() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttribute.node)
  return _internal_node();
}
inline void LsAttribute::unsafe_arena_set_allocated_node(
    ::apipb::LsAttributeNode* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.node_);
  }
  _impl_.node_ = reinterpret_cast<::apipb::LsAttributeNode*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttribute.node)
}
inline ::apipb::LsAttributeNode* PROTOBUF_NULLABLE LsAttribute::release_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsAttributeNode* released = _impl_.node_;
  _impl_.node_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsAttributeNode* PROTOBUF_NULLABLE LsAttribute::unsafe_arena_release_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttribute.node)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsAttributeNode* temp = _impl_.node_;
  _impl_.node_ = nullptr;
  return temp;
}
inline ::apipb::LsAttributeNode* PROTOBUF_NONNULL LsAttribute::_internal_mutable_node() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.node_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsAttributeNode>(GetArena());
    _impl_.node_ = reinterpret_cast<::apipb::LsAttributeNode*>(p);
  }
  return _impl_.node_;
}
inline ::apipb::LsAttributeNode* PROTOBUF_NONNULL LsAttribute::mutable_node()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::apipb::LsAttributeNode* _msg = _internal_mutable_node();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttribute.node)
  return _msg;
}
inline void LsAttribute::set_allocated_node(::apipb::LsAttributeNode* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.node_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.node_ = reinterpret_cast<::apipb::LsAttributeNode*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttribute.node)
}

// .apipb.LsAttributeLink link = 2;
inline bool LsAttribute::has_link() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.link_ != nullptr);
  return value;
}
inline void LsAttribute::clear_link() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.link_ != nullptr) _impl_.link_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::LsAttributeLink& LsAttribute::_internal_link() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsAttributeLink* p = _impl_.link_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsAttributeLink>(&::apipb::LsAttributeLink_globals_);
}
inline const ::apipb::LsAttributeLink& LsAttribute::link() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttribute.link)
  return _internal_link();
}
inline void LsAttribute::unsafe_arena_set_allocated_link(
    ::apipb::LsAttributeLink* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.link_);
  }
  _impl_.link_ = reinterpret_cast<::apipb::LsAttributeLink*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttribute.link)
}
inline ::apipb::LsAttributeLink* PROTOBUF_NULLABLE LsAttribute::release_link() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsAttributeLink* released = _impl_.link_;
  _impl_.link_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsAttributeLink* PROTOBUF_NULLABLE LsAttribute::unsafe_arena_release_link() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttribute.link)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsAttributeLink* temp = _impl_.link_;
  _impl_.link_ = nullptr;
  return temp;
}
inline ::apipb::LsAttributeLink* PROTOBUF_NONNULL LsAttribute::_internal_mutable_link() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.link_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsAttributeLink>(GetArena());
    _impl_.link_ = reinterpret_cast<::apipb::LsAttributeLink*>(p);
  }
  return _impl_.link_;
}
inline ::apipb::LsAttributeLink* PROTOBUF_NONNULL LsAttribute::mutable_link()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::LsAttributeLink* _msg = _internal_mutable_link();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttribute.link)
  return _msg;
}
inline void LsAttribute::set_allocated_link(::apipb::LsAttributeLink* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.link_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.link_ = reinterpret_cast<::apipb::LsAttributeLink*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttribute.link)
}

// .apipb.LsAttributePrefix prefix = 3;
inline bool LsAttribute::has_prefix() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.prefix_ != nullptr);
  return value;
}
inline void LsAttribute::clear_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.prefix_ != nullptr) _impl_.prefix_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::apipb::LsAttributePrefix& LsAttribute::_internal_prefix() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsAttributePrefix* p = _impl_.prefix_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsAttributePrefix>(&::apipb::LsAttributePrefix_globals_);
}
inline const ::apipb::LsAttributePrefix& LsAttribute::prefix() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttribute.prefix)
  return _internal_prefix();
}
inline void LsAttribute::unsafe_arena_set_allocated_prefix(
    ::apipb::LsAttributePrefix* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.prefix_);
  }
  _impl_.prefix_ = reinterpret_cast<::apipb::LsAttributePrefix*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttribute.prefix)
}
inline ::apipb::LsAttributePrefix* PROTOBUF_NULLABLE LsAttribute::release_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::LsAttributePrefix* released = _impl_.prefix_;
  _impl_.prefix_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsAttributePrefix* PROTOBUF_NULLABLE LsAttribute::unsafe_arena_release_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttribute.prefix)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::LsAttributePrefix* temp = _impl_.prefix_;
  _impl_.prefix_ = nullptr;
  return temp;
}
inline ::apipb::LsAttributePrefix* PROTOBUF_NONNULL LsAttribute::_internal_mutable_prefix() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.prefix_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsAttributePrefix>(GetArena());
    _impl_.prefix_ = reinterpret_cast<::apipb::LsAttributePrefix*>(p);
  }
  return _impl_.prefix_;
}
inline ::apipb::LsAttributePrefix* PROTOBUF_NONNULL LsAttribute::mutable_prefix()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::apipb::LsAttributePrefix* _msg = _internal_mutable_prefix();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttribute.prefix)
  return _msg;
}
inline void LsAttribute::set_allocated_prefix(::apipb::LsAttributePrefix* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.prefix_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.prefix_ = reinterpret_cast<::apipb::LsAttributePrefix*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttribute.prefix)
}

// .apipb.LsAttributeBgpPeerSegment bgp_peer_segment = 4;
inline bool LsAttribute::has_bgp_peer_segment() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  PROTOBUF_ASSUME(!value || _impl_.bgp_peer_segment_ != nullptr);
  return value;
}
inline void LsAttribute::clear_bgp_peer_segment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bgp_peer_segment_ != nullptr) _impl_.bgp_peer_segment_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::apipb::LsAttributeBgpPeerSegment& LsAttribute::_internal_bgp_peer_segment() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::LsAttributeBgpPeerSegment* p = _impl_.bgp_peer_segment_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::LsAttributeBgpPeerSegment>(&::apipb::LsAttributeBgpPeerSegment_globals_);
}
inline const ::apipb::LsAttributeBgpPeerSegment& LsAttribute::bgp_peer_segment() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.LsAttribute.bgp_peer_segment)
  return _internal_bgp_peer_segment();
}
inline void LsAttribute::unsafe_arena_set_allocated_bgp_peer_segment(
    ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bgp_peer_segment_);
  }
  _impl_.bgp_peer_segment_ = reinterpret_cast<::apipb::LsAttributeBgpPeerSegment*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.LsAttribute.bgp_peer_segment)
}
inline ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NULLABLE LsAttribute::release_bgp_peer_segment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::apipb::LsAttributeBgpPeerSegment* released = _impl_.bgp_peer_segment_;
  _impl_.bgp_peer_segment_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NULLABLE LsAttribute::unsafe_arena_release_bgp_peer_segment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.LsAttribute.bgp_peer_segment)

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::apipb::LsAttributeBgpPeerSegment* temp = _impl_.bgp_peer_segment_;
  _impl_.bgp_peer_segment_ = nullptr;
  return temp;
}
inline ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NONNULL LsAttribute::_internal_mutable_bgp_peer_segment() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.bgp_peer_segment_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::LsAttributeBgpPeerSegment>(GetArena());
    _impl_.bgp_peer_segment_ = reinterpret_cast<::apipb::LsAttributeBgpPeerSegment*>(p);
  }
  return _impl_.bgp_peer_segment_;
}
inline ::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NONNULL LsAttribute::mutable_bgp_peer_segment()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::apipb::LsAttributeBgpPeerSegment* _msg = _internal_mutable_bgp_peer_segment();
  // @@protoc_insertion_point(field_mutable:apipb.LsAttribute.bgp_peer_segment)
  return _msg;
}
inline void LsAttribute::set_allocated_bgp_peer_segment(::apipb::LsAttributeBgpPeerSegment* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.bgp_peer_segment_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }

  _impl_.bgp_peer_segment_ = reinterpret_cast<::apipb::LsAttributeBgpPeerSegment*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.LsAttribute.bgp_peer_segment)
}

// -------------------------------------------------------------------

// UnknownAttribute

// uint32 flags = 1;
inline void UnknownAttribute::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t UnknownAttribute::flags() const {
  // @@protoc_insertion_point(field_get:apipb.UnknownAttribute.flags)
  return _internal_flags();
}
inline void UnknownAttribute::set_flags(::uint32_t value) {
  _internal_set_flags(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.UnknownAttribute.flags)
}
inline ::uint32_t UnknownAttribute::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.flags_;
}
inline void UnknownAttribute::_internal_set_flags(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flags_ = value;
}

// uint32 type = 2;
inline void UnknownAttribute::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t UnknownAttribute::type() const {
  // @@protoc_insertion_point(field_get:apipb.UnknownAttribute.type)
  return _internal_type();
}
inline void UnknownAttribute::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.UnknownAttribute.type)
}
inline ::uint32_t UnknownAttribute::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void UnknownAttribute::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// bytes value = 3;
inline void UnknownAttribute::clear_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& UnknownAttribute::value() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.UnknownAttribute.value)
  return _internal_value();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void UnknownAttribute::set_value(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.value_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.UnknownAttribute.value)
}
inline ::std::string* PROTOBUF_NONNULL UnknownAttribute::mutable_value()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_value();
  // @@protoc_insertion_point(field_mutable:apipb.UnknownAttribute.value)
  return _s;
}
inline const ::std::string& UnknownAttribute::_internal_value() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.value_.Get();
}
inline void UnknownAttribute::_internal_set_value(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.value_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL UnknownAttribute::_internal_mutable_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.value_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE UnknownAttribute::release_value() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.UnknownAttribute.value)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.value_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.value_.Set("", GetArena());
  }
  return released;
}
inline void UnknownAttribute::set_allocated_value(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.value_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.value_.IsDefault()) {
    _impl_.value_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.UnknownAttribute.value)
}

// -------------------------------------------------------------------

// SRv6StructureSubSubTLV

// uint32 locator_block_length = 1;
inline void SRv6StructureSubSubTLV::clear_locator_block_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.locator_block_length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline ::uint32_t SRv6StructureSubSubTLV::locator_block_length() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6StructureSubSubTLV.locator_block_length)
  return _internal_locator_block_length();
}
inline void SRv6StructureSubSubTLV::set_locator_block_length(::uint32_t value) {
  _internal_set_locator_block_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.SRv6StructureSubSubTLV.locator_block_length)
}
inline ::uint32_t SRv6StructureSubSubTLV::_internal_locator_block_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.locator_block_length_;
}
inline void SRv6StructureSubSubTLV::_internal_set_locator_block_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.locator_block_length_ = value;
}

// uint32 locator_node_length = 2;
inline void SRv6StructureSubSubTLV::clear_locator_node_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.locator_node_length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::uint32_t SRv6StructureSubSubTLV::locator_node_length() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6StructureSubSubTLV.locator_node_length)
  return _internal_locator_node_length();
}
inline void SRv6StructureSubSubTLV::set_locator_node_length(::uint32_t value) {
  _internal_set_locator_node_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:apipb.SRv6StructureSubSubTLV.locator_node_length)
}
inline ::uint32_t SRv6StructureSubSubTLV::_internal_locator_node_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.locator_node_length_;
}
inline void SRv6StructureSubSubTLV::_internal_set_locator_node_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.locator_node_length_ = value;
}

// uint32 function_length = 3;
inline void SRv6StructureSubSubTLV::clear_function_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.function_length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t SRv6StructureSubSubTLV::function_length() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6StructureSubSubTLV.function_length)
  return _internal_function_length();
}
inline void SRv6StructureSubSubTLV::set_function_length(::uint32_t value) {
  _internal_set_function_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.SRv6StructureSubSubTLV.function_length)
}
inline ::uint32_t SRv6StructureSubSubTLV::_internal_function_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.function_length_;
}
inline void SRv6StructureSubSubTLV::_internal_set_function_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.function_length_ = value;
}

// uint32 argument_length = 4;
inline void SRv6StructureSubSubTLV::clear_argument_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.argument_length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline ::uint32_t SRv6StructureSubSubTLV::argument_length() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6StructureSubSubTLV.argument_length)
  return _internal_argument_length();
}
inline void SRv6StructureSubSubTLV::set_argument_length(::uint32_t value) {
  _internal_set_argument_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_set:apipb.SRv6StructureSubSubTLV.argument_length)
}
inline ::uint32_t SRv6StructureSubSubTLV::_internal_argument_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.argument_length_;
}
inline void SRv6StructureSubSubTLV::_internal_set_argument_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.argument_length_ = value;
}

// uint32 transposition_length = 5;
inline void SRv6StructureSubSubTLV::clear_transposition_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transposition_length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::uint32_t SRv6StructureSubSubTLV::transposition_length() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6StructureSubSubTLV.transposition_length)
  return _internal_transposition_length();
}
inline void SRv6StructureSubSubTLV::set_transposition_length(::uint32_t value) {
  _internal_set_transposition_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:apipb.SRv6StructureSubSubTLV.transposition_length)
}
inline ::uint32_t SRv6StructureSubSubTLV::_internal_transposition_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.transposition_length_;
}
inline void SRv6StructureSubSubTLV::_internal_set_transposition_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transposition_length_ = value;
}

// uint32 transposition_offset = 6;
inline void SRv6StructureSubSubTLV::clear_transposition_offset() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transposition_offset_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::uint32_t SRv6StructureSubSubTLV::transposition_offset() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6StructureSubSubTLV.transposition_offset)
  return _internal_transposition_offset();
}
inline void SRv6StructureSubSubTLV::set_transposition_offset(::uint32_t value) {
  _internal_set_transposition_offset(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:apipb.SRv6StructureSubSubTLV.transposition_offset)
}
inline ::uint32_t SRv6StructureSubSubTLV::_internal_transposition_offset() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.transposition_offset_;
}
inline void SRv6StructureSubSubTLV::_internal_set_transposition_offset(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.transposition_offset_ = value;
}

// -------------------------------------------------------------------

// SRv6SIDFlags

// bool flag_1 = 1;
inline void SRv6SIDFlags::clear_flag_1() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flag_1_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline bool SRv6SIDFlags::flag_1() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6SIDFlags.flag_1)
  return _internal_flag_1();
}
inline void SRv6SIDFlags::set_flag_1(bool value) {
  _internal_set_flag_1(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_set:apipb.SRv6SIDFlags.flag_1)
}
inline bool SRv6SIDFlags::_internal_flag_1() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.flag_1_;
}
inline void SRv6SIDFlags::_internal_set_flag_1(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.flag_1_ = value;
}

// -------------------------------------------------------------------

// SRv6TLV

// repeated .google.protobuf.Any tlv = 1;
inline int SRv6TLV::_internal_tlv_size() const {
  return _internal_tlv().size();
}
inline int SRv6TLV::tlv_size() const {
  return _internal_tlv_size();
}
inline const ::google::protobuf::Any& SRv6TLV::tlv(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SRv6TLV.tlv)
  return _internal_tlv().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL SRv6TLV::mutable_tlv(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.SRv6TLV.tlv)
  return _internal_mutable_tlv()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL SRv6TLV::add_tlv()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_tlv()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.SRv6TLV.tlv)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& SRv6TLV::tlv() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.SRv6TLV.tlv)
  return _internal_tlv();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
SRv6TLV::mutable_tlv() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.SRv6TLV.tlv)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tlv();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
SRv6TLV::_internal_tlv() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tlv_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
SRv6TLV::_internal_mutable_tlv() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tlv_;
}

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// SRv6InformationSubTLV

// bytes sid = 1;
inline void SRv6InformationSubTLV::clear_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& SRv6InformationSubTLV::sid() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SRv6InformationSubTLV.sid)
  return _internal_sid();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void SRv6InformationSubTLV::set_sid(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.sid_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:apipb.SRv6InformationSubTLV.sid)
}
inline ::std::string* PROTOBUF_NONNULL SRv6InformationSubTLV::mutable_sid()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_sid();
  // @@protoc_insertion_point(field_mutable:apipb.SRv6InformationSubTLV.sid)
  return _s;
}
inline const ::std::string& SRv6InformationSubTLV::_internal_sid() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sid_.Get();
}
inline void SRv6InformationSubTLV::_internal_set_sid(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sid_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL SRv6InformationSubTLV::_internal_mutable_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sid_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE SRv6InformationSubTLV::release_sid() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SRv6InformationSubTLV.sid)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.sid_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.sid_.Set("", GetArena());
  }
  return released;
}
inline void SRv6InformationSubTLV::set_allocated_sid(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.sid_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.sid_.IsDefault()) {
    _impl_.sid_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:apipb.SRv6InformationSubTLV.sid)
}

// .apipb.SRv6SIDFlags flags = 2;
inline bool SRv6InformationSubTLV::has_flags() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  PROTOBUF_ASSUME(!value || _impl_.flags_ != nullptr);
  return value;
}
inline void SRv6InformationSubTLV::clear_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ != nullptr) _impl_.flags_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::apipb::SRv6SIDFlags& SRv6InformationSubTLV::_internal_flags() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::apipb::SRv6SIDFlags* p = _impl_.flags_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::apipb::SRv6SIDFlags>(&::apipb::SRv6SIDFlags_globals_);
}
inline const ::apipb::SRv6SIDFlags& SRv6InformationSubTLV::flags() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.SRv6InformationSubTLV.flags)
  return _internal_flags();
}
inline void SRv6InformationSubTLV::unsafe_arena_set_allocated_flags(
    ::apipb::SRv6SIDFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }
  _impl_.flags_ = reinterpret_cast<::apipb::SRv6SIDFlags*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:apipb.SRv6InformationSubTLV.flags)
}
inline ::apipb::SRv6SIDFlags* PROTOBUF_NULLABLE SRv6InformationSubTLV::release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SRv6SIDFlags* released = _impl_.flags_;
  _impl_.flags_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::apipb::SRv6SIDFlags* PROTOBUF_NULLABLE SRv6InformationSubTLV::unsafe_arena_release_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:apipb.SRv6InformationSubTLV.flags)

  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SRv6SIDFlags* temp = _impl_.flags_;
  _impl_.flags_ = nullptr;
  return temp;
}
inline ::apipb::SRv6SIDFlags* PROTOBUF_NONNULL SRv6InformationSubTLV::_internal_mutable_flags() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.flags_ == nullptr) {
    auto* p = ::google::protobuf::Message::DefaultConstruct<::apipb::SRv6SIDFlags>(GetArena());
    _impl_.flags_ = reinterpret_cast<::apipb::SRv6SIDFlags*>(p);
  }
  return _impl_.flags_;
}
inline ::apipb::SRv6SIDFlags* PROTOBUF_NONNULL SRv6InformationSubTLV::mutable_flags()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::apipb::SRv6SIDFlags* _msg = _internal_mutable_flags();
  // @@protoc_insertion_point(field_mutable:apipb.SRv6InformationSubTLV.flags)
  return _msg;
}
inline void SRv6InformationSubTLV::set_allocated_flags(::apipb::SRv6SIDFlags* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.flags_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }

  _impl_.flags_ = reinterpret_cast<::apipb::SRv6SIDFlags*>(value);
  // @@protoc_insertion_point(field_set_allocated:apipb.SRv6InformationSubTLV.flags)
}

// uint32 endpoint_behavior = 3;
inline void SRv6InformationSubTLV::clear_endpoint_behavior() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_behavior_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline ::uint32_t SRv6InformationSubTLV::endpoint_behavior() const {
  // @@protoc_insertion_point(field_get:apipb.SRv6InformationSubTLV.endpoint_behavior)
  return _internal_endpoint_behavior();
}
inline void SRv6InformationSubTLV::set_endpoint_behavior(::uint32_t value) {
  _internal_set_endpoint_behavior(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:apipb.SRv6InformationSubTLV.endpoint_behavior)
}
inline ::uint32_t SRv6InformationSubTLV::_internal_endpoint_behavior() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.endpoint_behavior_;
}
inline void SRv6InformationSubTLV::_internal_set_endpoint_behavior(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.endpoint_behavior_ = value;
}

// map<uint32, .apipb.SRv6TLV> sub_sub_tlvs = 4;
inline int SRv6InformationSubTLV::_internal_sub_sub_tlvs_size() const {
  return _internal_sub_sub_tlvs().size();
}
inline int SRv6InformationSubTLV::sub_sub_tlvs_size() const {
  return _internal_sub_sub_tlvs_size();
}
inline void SRv6InformationSubTLV::clear_sub_sub_tlvs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_sub_tlvs_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& SRv6InformationSubTLV::_internal_sub_sub_tlvs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sub_sub_tlvs_.GetMap();
}
inline const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& SRv6InformationSubTLV::sub_sub_tlvs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:apipb.SRv6InformationSubTLV.sub_sub_tlvs)
  return _internal_sub_sub_tlvs();
}
inline ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL SRv6InformationSubTLV::_internal_mutable_sub_sub_tlvs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sub_sub_tlvs_.MutableMap();
}
inline ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL SRv6InformationSubTLV::mutable_sub_sub_tlvs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_mutable_map:apipb.SRv6InformationSubTLV.sub_sub_tlvs)
  return _internal_mutable_sub_sub_tlvs();
}

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// SRv6L3ServiceTLV

// map<uint32, .apipb.SRv6TLV> sub_tlvs = 1;
inline int SRv6L3ServiceTLV::_internal_sub_tlvs_size() const {
  return _internal_sub_tlvs().size();
}
inline int SRv6L3ServiceTLV::sub_tlvs_size() const {
  return _internal_sub_tlvs_size();
}
inline void SRv6L3ServiceTLV::clear_sub_tlvs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_tlvs_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& SRv6L3ServiceTLV::_internal_sub_tlvs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sub_tlvs_.GetMap();
}
inline const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& SRv6L3ServiceTLV::sub_tlvs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:apipb.SRv6L3ServiceTLV.sub_tlvs)
  return _internal_sub_tlvs();
}
inline ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL SRv6L3ServiceTLV::_internal_mutable_sub_tlvs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sub_tlvs_.MutableMap();
}
inline ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL SRv6L3ServiceTLV::mutable_sub_tlvs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_map:apipb.SRv6L3ServiceTLV.sub_tlvs)
  return _internal_mutable_sub_tlvs();
}

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// SRv6L2ServiceTLV

// map<uint32, .apipb.SRv6TLV> sub_tlvs = 1;
inline int SRv6L2ServiceTLV::_internal_sub_tlvs_size() const {
  return _internal_sub_tlvs().size();
}
inline int SRv6L2ServiceTLV::sub_tlvs_size() const {
  return _internal_sub_tlvs_size();
}
inline void SRv6L2ServiceTLV::clear_sub_tlvs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sub_tlvs_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& SRv6L2ServiceTLV::_internal_sub_tlvs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sub_tlvs_.GetMap();
}
inline const ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>& SRv6L2ServiceTLV::sub_tlvs() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_map:apipb.SRv6L2ServiceTLV.sub_tlvs)
  return _internal_sub_tlvs();
}
inline ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL SRv6L2ServiceTLV::_internal_mutable_sub_tlvs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sub_tlvs_.MutableMap();
}
inline ::google::protobuf::Map<::uint32_t, ::apipb::SRv6TLV>* PROTOBUF_NONNULL SRv6L2ServiceTLV::mutable_sub_tlvs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_map:apipb.SRv6L2ServiceTLV.sub_tlvs)
  return _internal_mutable_sub_tlvs();
}

// -------------------------------------------------------------------

// PrefixSID

// repeated .google.protobuf.Any tlvs = 1;
inline int PrefixSID::_internal_tlvs_size() const {
  return _internal_tlvs().size();
}
inline int PrefixSID::tlvs_size() const {
  return _internal_tlvs_size();
}
inline const ::google::protobuf::Any& PrefixSID::tlvs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:apipb.PrefixSID.tlvs)
  return _internal_tlvs().Get(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL PrefixSID::mutable_tlvs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:apipb.PrefixSID.tlvs)
  return _internal_mutable_tlvs()->Mutable(index);
}
inline ::google::protobuf::Any* PROTOBUF_NONNULL PrefixSID::add_tlvs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::google::protobuf::Any* _add =
      _internal_mutable_tlvs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:apipb.PrefixSID.tlvs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>& PrefixSID::tlvs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:apipb.PrefixSID.tlvs)
  return _internal_tlvs();
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
PrefixSID::mutable_tlvs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:apipb.PrefixSID.tlvs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_tlvs();
}
inline const ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>&
PrefixSID::_internal_tlvs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.tlvs_;
}
inline ::google::protobuf::RepeatedPtrField<::google::protobuf::Any>* PROTOBUF_NONNULL
PrefixSID::_internal_mutable_tlvs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.tlvs_;
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace apipb


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::apipb::AsSegment_Type> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::apipb::AsSegment_Type>() {
  return ::apipb::AsSegment_Type_descriptor();
}
template <>
struct is_proto_enum<::apipb::LsOspfRouteType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::apipb::LsOspfRouteType>() {
  return ::apipb::LsOspfRouteType_descriptor();
}
template <>
struct is_proto_enum<::apipb::LsNLRIType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::apipb::LsNLRIType>() {
  return ::apipb::LsNLRIType_descriptor();
}
template <>
struct is_proto_enum<::apipb::LsProtocolID> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::apipb::LsProtocolID>() {
  return ::apipb::LsProtocolID_descriptor();
}
template <>
struct is_proto_enum<::apipb::SRv6Behavior> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::apipb::SRv6Behavior>() {
  return ::apipb::SRv6Behavior_descriptor();
}
template <>
struct is_proto_enum<::apipb::ENLPType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::apipb::ENLPType>() {
  return ::apipb::ENLPType_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"
// clang-format on

#endif  // attribute_2eproto_2epb_2eh
