From fee499a02261f7380070e34d9edf4ab5c4ac59e5 Mon Sep 17 00:00:00 2001 From: Jonathan DiLorenzo Date: Wed, 24 Apr 2024 17:44:23 -0400 Subject: [PATCH] Support multicast resource information. (#472) --- docs/v1/P4Runtime-Spec.mdk | 42 +- go/p4/config/v1/p4info.pb.go | 1228 +++++++++++++++++-------------- proto/p4/config/v1/p4info.proto | 18 + py/p4/config/v1/p4info_pb2.py | 184 +++-- 4 files changed, 855 insertions(+), 617 deletions(-) diff --git a/docs/v1/P4Runtime-Spec.mdk b/docs/v1/P4Runtime-Spec.mdk index 0dc5fef4..24222b8a 100755 --- a/docs/v1/P4Runtime-Spec.mdk +++ b/docs/v1/P4Runtime-Spec.mdk @@ -1279,6 +1279,9 @@ message PkgInfo { Documentation doc = 3; // Miscellaneous metadata, free-form; a way to extend PkgInfo repeated string annotations = 4; + // Optional. If present, the location of `annotations[i]` is given by + // `annotation_locations[i]`. + repeated SourceLocation annotation_locations = 10; // the target architecture, e.g. "psa" string arch = 5; // organization which produced the configuration, e.g. "p4.org" @@ -1289,12 +1292,33 @@ message PkgInfo { string url = 8; // Miscellaneous metadata, structured; a way to extend PkgInfo repeated StructuredAnnotation structured_annotations = 9; + // If set, specifies the properties that the underlying platform should have. + // If the platform does not conform to these properties, the server should + // reject the P4Info when used with a SetForwardingPipelineConfigRequest. + PlatformProperties platform_properties = 11; +} +~ End Proto + +where the `PlatformProperties` message looks as follows: +~ Begin Proto +// Used to describe the required properties of the underlying platform. +message PlatformProperties { + // The minimum number of multicast entries (i.e. multicast groups) that the + // platform is required to support. If 0, there are no requirements. + int32 multicast_group_table_size = 1; + // The minimum number of replicas that the platform is required to support + // across all groups. If 0, there are no requirements. + int32 multicast_group_table_total_replicas = 2; + // The number of replicas that the platform is required to support per + // group/entry. If 0, `multicast_group_table_total_replicas` should be used. + // Must be no larger than `multicast_group_table_total_replicas`. + int32 multicast_group_table_max_replicas_per_entry = 3; } ~ End Proto ### Annotating P4 code with PkgInfo { #sec-annotating-p4-code-with-pkginfo} -A P4 progam's `PkgInfo` may be declared using one or more of the following +A P4 program's `PkgInfo` may be declared using one or more of the following annotations, attached to the `main` block only: ~ Begin p4example @@ -1305,6 +1329,8 @@ annotations, attached to the `main` block only: description") @custom_annotation(...) @another_custom_annotation(...) +@platform_property(key=value) +@platform_property(key=value[,key=value,...]) ~ End p4example Above we see several different types of annotations: @@ -1327,6 +1353,17 @@ Above we see several different types of annotations: * `@description` - This will populate the `PkgInfo.doc.description` message field +* `@platform_property` - This is used to populate a specific field within the + `PlatformProperty` message in `PkgInfo.platform_property`. Multiple + `@platform_property` annotations are allowed. For compactness, + multiple key-value pairs can appear in a single `@platform_property` + annotation, separated by commas. Each key must only appear once and the + compiler must reject the program if one appears multiple times. The `key`s + must be from among the message fields inside `PlatformProperty`, for example, + `multicast_group_table_size` or `multicast_group_table_total_replicas`. Each + key-value pair assigns a value to the corresponding field inside the single + `PlatformProperty` message inside the program's P4Info. + * `@` - This will create a `PkgInfo.annotation` entry Declaring one or more of these annotations on `main` will @@ -6443,6 +6480,8 @@ properties, but we may include on in future versions of the API. ### Changes in v1.4.0 +* Add a `PlatformProperties` message specifying desired underlying platform + properties to the `PkgInfo` message. * Add a `metadata` field to the `MulticastGroupEntry` message. * Clarify that the limitation on supported types for `FieldMatch`, action `Param`, and Packet IO metadata fields (no support for signed integers, with @@ -6548,6 +6587,7 @@ the purpose of adding features for the P4Runtime API. | `@selector_size_semantics` | See section [#sec-p4info-action-profile] | | `@max_member_weight` | See section [#sec-p4info-action-profile] | | `@pkginfo` | See section [#sec-annotating-p4-code-with-pkginfo] | +| `@platform_property` | See section [#sec-annotating-p4-code-with-pkginfo] | | `@p4runtime_translation` | See sections [#sec-user-defined-types], [#sec-translation-of-port-numbers] | +----------------------------+---------------------------------------+ ~ diff --git a/go/p4/config/v1/p4info.pb.go b/go/p4/config/v1/p4info.pb.go index 18e648fa..c5b75680 100644 --- a/go/p4/config/v1/p4info.pb.go +++ b/go/p4/config/v1/p4info.pb.go @@ -130,7 +130,7 @@ func (x P4Ids_Prefix) Number() protoreflect.EnumNumber { // Deprecated: Use P4Ids_Prefix.Descriptor instead. func (P4Ids_Prefix) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{3, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{4, 0} } type MatchField_MatchType int32 @@ -188,7 +188,7 @@ func (x MatchField_MatchType) Number() protoreflect.EnumNumber { // Deprecated: Use MatchField_MatchType.Descriptor instead. func (MatchField_MatchType) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{7, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{8, 0} } // this enum can be extended in the future with other behaviors, such as @@ -236,7 +236,7 @@ func (x Table_IdleTimeoutBehavior) Number() protoreflect.EnumNumber { // Deprecated: Use Table_IdleTimeoutBehavior.Descriptor instead. func (Table_IdleTimeoutBehavior) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{8, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{9, 0} } type ActionRef_Scope int32 @@ -285,7 +285,7 @@ func (x ActionRef_Scope) Number() protoreflect.EnumNumber { // Deprecated: Use ActionRef_Scope.Descriptor instead. func (ActionRef_Scope) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{9, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{10, 0} } // Corresponds to 'type' constructor parameter for Counter / DirectCounter in @@ -339,7 +339,7 @@ func (x CounterSpec_Unit) Number() protoreflect.EnumNumber { // Deprecated: Use CounterSpec_Unit.Descriptor instead. func (CounterSpec_Unit) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{13, 0} } // Corresponds to 'type' constructor parameter for Meter / DirectMeter in PSA @@ -389,7 +389,7 @@ func (x MeterSpec_Unit) Number() protoreflect.EnumNumber { // Deprecated: Use MeterSpec_Unit.Descriptor instead. func (MeterSpec_Unit) EnumDescriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{15, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{16, 0} } type P4Info struct { @@ -601,6 +601,77 @@ func (x *Documentation) GetDescription() string { return "" } +// Used to describe the required properties of the underlying platform. +type PlatformProperties struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The minimum number of multicast entries (i.e. multicast groups) that the + // platform is required to support. If 0, there are no requirements. + MulticastGroupTableSize int32 `protobuf:"varint,1,opt,name=multicast_group_table_size,json=multicastGroupTableSize,proto3" json:"multicast_group_table_size,omitempty"` + // The minimum number of replicas that the platform is required to support + // across all groups. If 0, there are no requirements. + MulticastGroupTableTotalReplicas int32 `protobuf:"varint,2,opt,name=multicast_group_table_total_replicas,json=multicastGroupTableTotalReplicas,proto3" json:"multicast_group_table_total_replicas,omitempty"` + // The number of replicas that the platform is required to support per + // group/entry. If 0, `multicast_group_table_total_replicas` should be used. + // Must be no larger than `multicast_group_table_total_replicas`. + MulticastGroupTableMaxReplicasPerEntry int32 `protobuf:"varint,3,opt,name=multicast_group_table_max_replicas_per_entry,json=multicastGroupTableMaxReplicasPerEntry,proto3" json:"multicast_group_table_max_replicas_per_entry,omitempty"` +} + +func (x *PlatformProperties) Reset() { + *x = PlatformProperties{} + if protoimpl.UnsafeEnabled { + mi := &file_p4_config_v1_p4info_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PlatformProperties) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlatformProperties) ProtoMessage() {} + +func (x *PlatformProperties) ProtoReflect() protoreflect.Message { + mi := &file_p4_config_v1_p4info_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlatformProperties.ProtoReflect.Descriptor instead. +func (*PlatformProperties) Descriptor() ([]byte, []int) { + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{2} +} + +func (x *PlatformProperties) GetMulticastGroupTableSize() int32 { + if x != nil { + return x.MulticastGroupTableSize + } + return 0 +} + +func (x *PlatformProperties) GetMulticastGroupTableTotalReplicas() int32 { + if x != nil { + return x.MulticastGroupTableTotalReplicas + } + return 0 +} + +func (x *PlatformProperties) GetMulticastGroupTableMaxReplicasPerEntry() int32 { + if x != nil { + return x.MulticastGroupTableMaxReplicasPerEntry + } + return 0 +} + // Top-level package documentation describing the forwarding pipeline config // Can be used to manage multiple P4 packages. type PkgInfo struct { @@ -630,12 +701,16 @@ type PkgInfo struct { Url string `protobuf:"bytes,8,opt,name=url,proto3" json:"url,omitempty"` // Miscellaneous metadata, structured; a way to extend PkgInfo StructuredAnnotations []*StructuredAnnotation `protobuf:"bytes,9,rep,name=structured_annotations,json=structuredAnnotations,proto3" json:"structured_annotations,omitempty"` + // If set, specifies the properties that the underlying platform should have. + // If the platform does not conform to these properties, the server should + // reject the P4Info when used with a SetForwardingPipelineConfigRequest. + PlatformProperties *PlatformProperties `protobuf:"bytes,11,opt,name=platform_properties,json=platformProperties,proto3" json:"platform_properties,omitempty"` } func (x *PkgInfo) Reset() { *x = PkgInfo{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[2] + mi := &file_p4_config_v1_p4info_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -648,7 +723,7 @@ func (x *PkgInfo) String() string { func (*PkgInfo) ProtoMessage() {} func (x *PkgInfo) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[2] + mi := &file_p4_config_v1_p4info_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -661,7 +736,7 @@ func (x *PkgInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use PkgInfo.ProtoReflect.Descriptor instead. func (*PkgInfo) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{2} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{3} } func (x *PkgInfo) GetName() string { @@ -734,6 +809,13 @@ func (x *PkgInfo) GetStructuredAnnotations() []*StructuredAnnotation { return nil } +func (x *PkgInfo) GetPlatformProperties() *PlatformProperties { + if x != nil { + return x.PlatformProperties + } + return nil +} + // wrapping the enum in a message to avoid name collisions in C++, where "enum // values are siblings of their type, not children of it" type P4Ids struct { @@ -745,7 +827,7 @@ type P4Ids struct { func (x *P4Ids) Reset() { *x = P4Ids{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[3] + mi := &file_p4_config_v1_p4info_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -758,7 +840,7 @@ func (x *P4Ids) String() string { func (*P4Ids) ProtoMessage() {} func (x *P4Ids) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[3] + mi := &file_p4_config_v1_p4info_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -771,7 +853,7 @@ func (x *P4Ids) ProtoReflect() protoreflect.Message { // Deprecated: Use P4Ids.ProtoReflect.Descriptor instead. func (*P4Ids) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{3} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{4} } type Preamble struct { @@ -811,7 +893,7 @@ type Preamble struct { func (x *Preamble) Reset() { *x = Preamble{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[4] + mi := &file_p4_config_v1_p4info_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -824,7 +906,7 @@ func (x *Preamble) String() string { func (*Preamble) ProtoMessage() {} func (x *Preamble) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[4] + mi := &file_p4_config_v1_p4info_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -837,7 +919,7 @@ func (x *Preamble) ProtoReflect() protoreflect.Message { // Deprecated: Use Preamble.ProtoReflect.Descriptor instead. func (*Preamble) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{4} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{5} } func (x *Preamble) GetId() uint32 { @@ -905,7 +987,7 @@ type Extern struct { func (x *Extern) Reset() { *x = Extern{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[5] + mi := &file_p4_config_v1_p4info_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -918,7 +1000,7 @@ func (x *Extern) String() string { func (*Extern) ProtoMessage() {} func (x *Extern) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[5] + mi := &file_p4_config_v1_p4info_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -931,7 +1013,7 @@ func (x *Extern) ProtoReflect() protoreflect.Message { // Deprecated: Use Extern.ProtoReflect.Descriptor instead. func (*Extern) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{5} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{6} } func (x *Extern) GetExternTypeId() uint32 { @@ -969,7 +1051,7 @@ type ExternInstance struct { func (x *ExternInstance) Reset() { *x = ExternInstance{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[6] + mi := &file_p4_config_v1_p4info_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -982,7 +1064,7 @@ func (x *ExternInstance) String() string { func (*ExternInstance) ProtoMessage() {} func (x *ExternInstance) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[6] + mi := &file_p4_config_v1_p4info_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -995,7 +1077,7 @@ func (x *ExternInstance) ProtoReflect() protoreflect.Message { // Deprecated: Use ExternInstance.ProtoReflect.Descriptor instead. func (*ExternInstance) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{6} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{7} } func (x *ExternInstance) GetPreamble() *Preamble { @@ -1039,7 +1121,7 @@ type MatchField struct { func (x *MatchField) Reset() { *x = MatchField{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[7] + mi := &file_p4_config_v1_p4info_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1052,7 +1134,7 @@ func (x *MatchField) String() string { func (*MatchField) ProtoMessage() {} func (x *MatchField) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[7] + mi := &file_p4_config_v1_p4info_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1065,7 +1147,7 @@ func (x *MatchField) ProtoReflect() protoreflect.Message { // Deprecated: Use MatchField.ProtoReflect.Descriptor instead. func (*MatchField) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{7} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{8} } func (x *MatchField) GetId() uint32 { @@ -1209,7 +1291,7 @@ type Table struct { func (x *Table) Reset() { *x = Table{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[8] + mi := &file_p4_config_v1_p4info_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1222,7 +1304,7 @@ func (x *Table) String() string { func (*Table) ProtoMessage() {} func (x *Table) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[8] + mi := &file_p4_config_v1_p4info_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1235,7 +1317,7 @@ func (x *Table) ProtoReflect() protoreflect.Message { // Deprecated: Use Table.ProtoReflect.Descriptor instead. func (*Table) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{8} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{9} } func (x *Table) GetPreamble() *Preamble { @@ -1333,7 +1415,7 @@ type ActionRef struct { func (x *ActionRef) Reset() { *x = ActionRef{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[9] + mi := &file_p4_config_v1_p4info_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1346,7 +1428,7 @@ func (x *ActionRef) String() string { func (*ActionRef) ProtoMessage() {} func (x *ActionRef) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[9] + mi := &file_p4_config_v1_p4info_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1359,7 +1441,7 @@ func (x *ActionRef) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionRef.ProtoReflect.Descriptor instead. func (*ActionRef) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{9} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{10} } func (x *ActionRef) GetId() uint32 { @@ -1409,7 +1491,7 @@ type Action struct { func (x *Action) Reset() { *x = Action{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[10] + mi := &file_p4_config_v1_p4info_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1422,7 +1504,7 @@ func (x *Action) String() string { func (*Action) ProtoMessage() {} func (x *Action) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[10] + mi := &file_p4_config_v1_p4info_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1435,7 +1517,7 @@ func (x *Action) ProtoReflect() protoreflect.Message { // Deprecated: Use Action.ProtoReflect.Descriptor instead. func (*Action) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{10} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11} } func (x *Action) GetPreamble() *Preamble { @@ -1481,7 +1563,7 @@ type ActionProfile struct { func (x *ActionProfile) Reset() { *x = ActionProfile{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[11] + mi := &file_p4_config_v1_p4info_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1494,7 +1576,7 @@ func (x *ActionProfile) String() string { func (*ActionProfile) ProtoMessage() {} func (x *ActionProfile) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[11] + mi := &file_p4_config_v1_p4info_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1507,7 +1589,7 @@ func (x *ActionProfile) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionProfile.ProtoReflect.Descriptor instead. func (*ActionProfile) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12} } func (x *ActionProfile) GetPreamble() *Preamble { @@ -1595,7 +1677,7 @@ type CounterSpec struct { func (x *CounterSpec) Reset() { *x = CounterSpec{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[12] + mi := &file_p4_config_v1_p4info_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1608,7 +1690,7 @@ func (x *CounterSpec) String() string { func (*CounterSpec) ProtoMessage() {} func (x *CounterSpec) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[12] + mi := &file_p4_config_v1_p4info_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1621,7 +1703,7 @@ func (x *CounterSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use CounterSpec.ProtoReflect.Descriptor instead. func (*CounterSpec) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{13} } func (x *CounterSpec) GetUnit() CounterSpec_Unit { @@ -1647,7 +1729,7 @@ type Counter struct { func (x *Counter) Reset() { *x = Counter{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[13] + mi := &file_p4_config_v1_p4info_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1660,7 +1742,7 @@ func (x *Counter) String() string { func (*Counter) ProtoMessage() {} func (x *Counter) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[13] + mi := &file_p4_config_v1_p4info_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1673,7 +1755,7 @@ func (x *Counter) ProtoReflect() protoreflect.Message { // Deprecated: Use Counter.ProtoReflect.Descriptor instead. func (*Counter) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{13} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{14} } func (x *Counter) GetPreamble() *Preamble { @@ -1718,7 +1800,7 @@ type DirectCounter struct { func (x *DirectCounter) Reset() { *x = DirectCounter{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[14] + mi := &file_p4_config_v1_p4info_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1731,7 +1813,7 @@ func (x *DirectCounter) String() string { func (*DirectCounter) ProtoMessage() {} func (x *DirectCounter) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[14] + mi := &file_p4_config_v1_p4info_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1744,7 +1826,7 @@ func (x *DirectCounter) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectCounter.ProtoReflect.Descriptor instead. func (*DirectCounter) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{14} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{15} } func (x *DirectCounter) GetPreamble() *Preamble { @@ -1779,7 +1861,7 @@ type MeterSpec struct { func (x *MeterSpec) Reset() { *x = MeterSpec{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[15] + mi := &file_p4_config_v1_p4info_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1792,7 +1874,7 @@ func (x *MeterSpec) String() string { func (*MeterSpec) ProtoMessage() {} func (x *MeterSpec) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[15] + mi := &file_p4_config_v1_p4info_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1805,7 +1887,7 @@ func (x *MeterSpec) ProtoReflect() protoreflect.Message { // Deprecated: Use MeterSpec.ProtoReflect.Descriptor instead. func (*MeterSpec) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{15} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{16} } func (x *MeterSpec) GetUnit() MeterSpec_Unit { @@ -1831,7 +1913,7 @@ type Meter struct { func (x *Meter) Reset() { *x = Meter{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[16] + mi := &file_p4_config_v1_p4info_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1844,7 +1926,7 @@ func (x *Meter) String() string { func (*Meter) ProtoMessage() {} func (x *Meter) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[16] + mi := &file_p4_config_v1_p4info_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1857,7 +1939,7 @@ func (x *Meter) ProtoReflect() protoreflect.Message { // Deprecated: Use Meter.ProtoReflect.Descriptor instead. func (*Meter) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{16} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{17} } func (x *Meter) GetPreamble() *Preamble { @@ -1902,7 +1984,7 @@ type DirectMeter struct { func (x *DirectMeter) Reset() { *x = DirectMeter{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[17] + mi := &file_p4_config_v1_p4info_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1915,7 +1997,7 @@ func (x *DirectMeter) String() string { func (*DirectMeter) ProtoMessage() {} func (x *DirectMeter) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[17] + mi := &file_p4_config_v1_p4info_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1928,7 +2010,7 @@ func (x *DirectMeter) ProtoReflect() protoreflect.Message { // Deprecated: Use DirectMeter.ProtoReflect.Descriptor instead. func (*DirectMeter) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{17} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{18} } func (x *DirectMeter) GetPreamble() *Preamble { @@ -1974,7 +2056,7 @@ type ControllerPacketMetadata struct { func (x *ControllerPacketMetadata) Reset() { *x = ControllerPacketMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[18] + mi := &file_p4_config_v1_p4info_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1987,7 +2069,7 @@ func (x *ControllerPacketMetadata) String() string { func (*ControllerPacketMetadata) ProtoMessage() {} func (x *ControllerPacketMetadata) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[18] + mi := &file_p4_config_v1_p4info_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2000,7 +2082,7 @@ func (x *ControllerPacketMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use ControllerPacketMetadata.ProtoReflect.Descriptor instead. func (*ControllerPacketMetadata) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{18} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{19} } func (x *ControllerPacketMetadata) GetPreamble() *Preamble { @@ -2031,7 +2113,7 @@ type ValueSet struct { func (x *ValueSet) Reset() { *x = ValueSet{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[19] + mi := &file_p4_config_v1_p4info_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2044,7 +2126,7 @@ func (x *ValueSet) String() string { func (*ValueSet) ProtoMessage() {} func (x *ValueSet) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[19] + mi := &file_p4_config_v1_p4info_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2057,7 +2139,7 @@ func (x *ValueSet) ProtoReflect() protoreflect.Message { // Deprecated: Use ValueSet.ProtoReflect.Descriptor instead. func (*ValueSet) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{19} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{20} } func (x *ValueSet) GetPreamble() *Preamble { @@ -2096,7 +2178,7 @@ type Register struct { func (x *Register) Reset() { *x = Register{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[20] + mi := &file_p4_config_v1_p4info_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2109,7 +2191,7 @@ func (x *Register) String() string { func (*Register) ProtoMessage() {} func (x *Register) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[20] + mi := &file_p4_config_v1_p4info_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2122,7 +2204,7 @@ func (x *Register) ProtoReflect() protoreflect.Message { // Deprecated: Use Register.ProtoReflect.Descriptor instead. func (*Register) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{20} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{21} } func (x *Register) GetPreamble() *Preamble { @@ -2165,7 +2247,7 @@ type Digest struct { func (x *Digest) Reset() { *x = Digest{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[21] + mi := &file_p4_config_v1_p4info_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2178,7 +2260,7 @@ func (x *Digest) String() string { func (*Digest) ProtoMessage() {} func (x *Digest) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[21] + mi := &file_p4_config_v1_p4info_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2191,7 +2273,7 @@ func (x *Digest) ProtoReflect() protoreflect.Message { // Deprecated: Use Digest.ProtoReflect.Descriptor instead. func (*Digest) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{21} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{22} } func (x *Digest) GetPreamble() *Preamble { @@ -2230,7 +2312,7 @@ type Action_Param struct { func (x *Action_Param) Reset() { *x = Action_Param{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[22] + mi := &file_p4_config_v1_p4info_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2243,7 +2325,7 @@ func (x *Action_Param) String() string { func (*Action_Param) ProtoMessage() {} func (x *Action_Param) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[22] + mi := &file_p4_config_v1_p4info_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2256,7 +2338,7 @@ func (x *Action_Param) ProtoReflect() protoreflect.Message { // Deprecated: Use Action_Param.ProtoReflect.Descriptor instead. func (*Action_Param) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{10, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11, 0} } func (x *Action_Param) GetId() uint32 { @@ -2327,7 +2409,7 @@ type ActionProfile_SumOfWeights struct { func (x *ActionProfile_SumOfWeights) Reset() { *x = ActionProfile_SumOfWeights{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[23] + mi := &file_p4_config_v1_p4info_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2340,7 +2422,7 @@ func (x *ActionProfile_SumOfWeights) String() string { func (*ActionProfile_SumOfWeights) ProtoMessage() {} func (x *ActionProfile_SumOfWeights) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[23] + mi := &file_p4_config_v1_p4info_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2353,7 +2435,7 @@ func (x *ActionProfile_SumOfWeights) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionProfile_SumOfWeights.ProtoReflect.Descriptor instead. func (*ActionProfile_SumOfWeights) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12, 0} } // indicates that `size` and `max_group_size` represent the maximum number @@ -2371,7 +2453,7 @@ type ActionProfile_SumOfMembers struct { func (x *ActionProfile_SumOfMembers) Reset() { *x = ActionProfile_SumOfMembers{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[24] + mi := &file_p4_config_v1_p4info_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2384,7 +2466,7 @@ func (x *ActionProfile_SumOfMembers) String() string { func (*ActionProfile_SumOfMembers) ProtoMessage() {} func (x *ActionProfile_SumOfMembers) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[24] + mi := &file_p4_config_v1_p4info_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2397,7 +2479,7 @@ func (x *ActionProfile_SumOfMembers) ProtoReflect() protoreflect.Message { // Deprecated: Use ActionProfile_SumOfMembers.ProtoReflect.Descriptor instead. func (*ActionProfile_SumOfMembers) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{11, 1} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{12, 1} } func (x *ActionProfile_SumOfMembers) GetMaxMemberWeight() int32 { @@ -2429,7 +2511,7 @@ type ControllerPacketMetadata_Metadata struct { func (x *ControllerPacketMetadata_Metadata) Reset() { *x = ControllerPacketMetadata_Metadata{} if protoimpl.UnsafeEnabled { - mi := &file_p4_config_v1_p4info_proto_msgTypes[25] + mi := &file_p4_config_v1_p4info_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2442,7 +2524,7 @@ func (x *ControllerPacketMetadata_Metadata) String() string { func (*ControllerPacketMetadata_Metadata) ProtoMessage() {} func (x *ControllerPacketMetadata_Metadata) ProtoReflect() protoreflect.Message { - mi := &file_p4_config_v1_p4info_proto_msgTypes[25] + mi := &file_p4_config_v1_p4info_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2455,7 +2537,7 @@ func (x *ControllerPacketMetadata_Metadata) ProtoReflect() protoreflect.Message // Deprecated: Use ControllerPacketMetadata_Metadata.ProtoReflect.Descriptor instead. func (*ControllerPacketMetadata_Metadata) Descriptor() ([]byte, []int) { - return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{18, 0} + return file_p4_config_v1_p4info_proto_rawDescGZIP(), []int{19, 0} } func (x *ControllerPacketMetadata_Metadata) GetId() uint32 { @@ -2571,370 +2653,392 @@ var file_p4_config_v1_p4info_proto_rawDesc = []byte{ 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x72, 0x69, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x72, 0x69, 0x65, 0x66, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x98, 0x03, 0x0a, 0x07, 0x50, - 0x6b, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, - 0x64, 0x6f, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, - 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x05, 0x50, 0x34, 0x49, 0x64, 0x73, 0x22, - 0xfd, 0x01, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x41, 0x42, 0x4c, 0x45, - 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x5f, 0x53, 0x45, 0x54, 0x10, - 0x03, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x4c, 0x45, 0x52, 0x5f, - 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x53, 0x41, 0x5f, - 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x10, 0x12, - 0x12, 0x0a, 0x0e, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x46, 0x49, 0x4c, - 0x45, 0x10, 0x11, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x12, - 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, - 0x45, 0x52, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, 0x14, 0x12, - 0x10, 0x0a, 0x0c, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x10, - 0x15, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, 0x45, 0x52, 0x10, 0x16, 0x12, - 0x0a, 0x0a, 0x06, 0x44, 0x49, 0x47, 0x45, 0x53, 0x54, 0x10, 0x17, 0x12, 0x18, 0x0a, 0x13, 0x4f, - 0x54, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x10, 0x80, 0x01, 0x12, 0x08, 0x0a, 0x03, 0x4d, 0x41, 0x58, 0x10, 0xff, 0x01, 0x22, - 0xc1, 0x02, 0x0a, 0x08, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x06, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x24, - 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3a, - 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x6e, 0x0a, 0x0e, 0x45, 0x78, - 0x74, 0x65, 0x72, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x32, 0x0a, 0x08, - 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, - 0x12, 0x28, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xd3, 0x04, 0x0a, 0x0a, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, - 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x43, 0x0a, 0x0a, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x6f, - 0x74, 0x68, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, - 0x03, 0x64, 0x6f, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, 0x2e, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x36, 0x0a, 0x09, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, - 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x56, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, - 0x05, 0x45, 0x58, 0x41, 0x43, 0x54, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x50, 0x4d, 0x10, - 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x52, 0x59, 0x10, 0x04, 0x12, 0x09, - 0x0a, 0x05, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x54, - 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x06, 0x42, 0x07, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x22, 0x89, 0x05, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, - 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, - 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x3b, - 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x0b, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x52, 0x0a, 0x61, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x66, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x5f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x44, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, - 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x11, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x5b, 0x0a, - 0x15, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x62, 0x65, - 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x70, - 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x2e, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x65, 0x68, - 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x13, 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, - 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, - 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x68, - 0x61, 0x73, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, - 0x12, 0x3f, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, - 0x52, 0x0f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, - 0x73, 0x22, 0x39, 0x0a, 0x13, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x4f, 0x5f, 0x54, - 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, 0x54, 0x49, - 0x46, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x01, 0x22, 0xe0, 0x02, 0x0a, - 0x09, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x70, 0x34, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x66, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, - 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, - 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, - 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, - 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x40, 0x0a, - 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x41, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x00, 0x12, 0x0e, 0x0a, - 0x0a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x10, 0x0a, - 0x0c, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x02, 0x22, - 0xef, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, - 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, - 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x32, - 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x1a, 0xfc, 0x02, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, - 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, - 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, - 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x36, - 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x74, 0x79, - 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, - 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xff, 0x01, 0x0a, 0x12, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x3b, 0x0a, 0x1a, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x17, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x4e, + 0x0a, 0x24, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x20, 0x6d, 0x75, + 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x5c, + 0x0a, 0x2c, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x26, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61, 0x78, 0x52, 0x65, 0x70, 0x6c, + 0x69, 0x63, 0x61, 0x73, 0x50, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xeb, 0x03, 0x0a, + 0x07, 0x50, 0x6b, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x63, 0x68, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x63, 0x68, 0x12, 0x22, 0x0a, 0x0c, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x59, 0x0a, 0x16, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, + 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0xe5, 0x03, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, - 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x77, 0x69, 0x74, - 0x68, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, - 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x77, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x34, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x4f, 0x66, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x6d, 0x4f, 0x66, 0x57, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x75, 0x6d, 0x5f, 0x6f, 0x66, 0x5f, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, - 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x4f, 0x66, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, 0x6d, 0x4f, 0x66, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x0a, 0x0c, 0x53, 0x75, 0x6d, 0x4f, 0x66, - 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0x55, 0x0a, 0x0c, 0x53, 0x75, 0x6d, 0x4f, 0x66, - 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x57, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6d, 0x61, 0x78, - 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x19, - 0x0a, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x5f, - 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x73, 0x22, 0x7c, 0x0a, 0x0b, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, - 0x63, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x39, 0x0a, 0x04, - 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, - 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, - 0x04, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x22, 0xc3, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, - 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, - 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x9a, 0x01, - 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, + 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x51, 0x0a, 0x13, 0x70, 0x6c, 0x61, 0x74, 0x66, + 0x6f, 0x72, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x12, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x87, 0x02, 0x0a, 0x05, 0x50, + 0x34, 0x49, 0x64, 0x73, 0x22, 0xfd, 0x01, 0x0a, 0x06, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, + 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, + 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x41, 0x4c, 0x55, 0x45, + 0x5f, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, + 0x4c, 0x4c, 0x45, 0x52, 0x5f, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52, 0x10, 0x04, 0x12, 0x15, 0x0a, + 0x11, 0x50, 0x53, 0x41, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, 0x53, 0x5f, 0x53, 0x54, 0x41, + 0x52, 0x54, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, + 0x52, 0x4f, 0x46, 0x49, 0x4c, 0x45, 0x10, 0x11, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4f, 0x55, 0x4e, + 0x54, 0x45, 0x52, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, + 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x45, 0x52, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x4d, 0x45, 0x54, + 0x45, 0x52, 0x10, 0x14, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x5f, 0x4d, + 0x45, 0x54, 0x45, 0x52, 0x10, 0x15, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x45, 0x47, 0x49, 0x53, 0x54, + 0x45, 0x52, 0x10, 0x16, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x49, 0x47, 0x45, 0x53, 0x54, 0x10, 0x17, + 0x12, 0x18, 0x0a, 0x13, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x52, 0x4e, + 0x53, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x80, 0x01, 0x12, 0x08, 0x0a, 0x03, 0x4d, 0x41, + 0x58, 0x10, 0xff, 0x01, 0x22, 0xc1, 0x02, 0x0a, 0x08, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, + 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, + 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x59, 0x0a, + 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x06, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x22, + 0x6e, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, + 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, + 0xd3, 0x04, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, + 0x68, 0x12, 0x43, 0x0a, 0x0a, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, + 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x61, 0x74, + 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x64, 0x6f, + 0x63, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, + 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x56, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x58, 0x41, 0x43, 0x54, 0x10, 0x02, 0x12, 0x07, 0x0a, + 0x03, 0x4c, 0x50, 0x4d, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x52, + 0x59, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x05, 0x12, 0x0c, + 0x0a, 0x08, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x06, 0x42, 0x07, 0x0a, 0x05, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x22, 0x89, 0x05, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, - 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, - 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x09, 0x4d, 0x65, - 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x30, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x55, - 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x2f, 0x0a, 0x04, 0x55, 0x6e, 0x69, - 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, - 0x07, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x22, 0xbf, 0x01, 0x0a, 0x05, 0x4d, - 0x65, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, - 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, - 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x96, 0x01, 0x0a, - 0x0b, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, - 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, - 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, - 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, - 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xee, 0x03, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, - 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, - 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x1a, 0xd0, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x52, 0x0b, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x12, 0x38, 0x0a, 0x0b, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x66, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x52, 0x0a, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x73, 0x12, 0x35, 0x0a, 0x17, 0x63, 0x6f, + 0x6e, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x63, 0x6f, 0x6e, + 0x73, 0x74, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x69, 0x6d, + 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2e, + 0x0a, 0x13, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x11, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x64, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x5b, 0x0a, 0x15, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x27, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x52, 0x13, 0x69, 0x64, 0x6c, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, + 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x43, 0x6f, 0x6e, 0x73, 0x74, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x11, 0x68, 0x61, 0x73, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x45, 0x6e, + 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x10, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x70, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x39, 0x0a, 0x13, 0x49, 0x64, 0x6c, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x0e, 0x0a, + 0x0a, 0x4e, 0x4f, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x4f, 0x55, 0x54, 0x10, 0x00, 0x12, 0x12, 0x0a, + 0x0e, 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, + 0x01, 0x22, 0xe0, 0x02, 0x0a, 0x09, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x33, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, + 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x05, 0x73, + 0x63, 0x6f, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0x40, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, + 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, + 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4f, 0x4e, + 0x4c, 0x59, 0x10, 0x02, 0x22, 0xef, 0x03, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, + 0x62, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x52, + 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0xfc, 0x02, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, + 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x69, 0x74, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x62, 0x69, 0x74, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x12, 0x2d, 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x03, + 0x64, 0x6f, 0x63, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x08, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x53, 0x65, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, - 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x08, - 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe5, 0x03, 0x0a, 0x0d, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, - 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x09, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x34, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x74, - 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x77, - 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, + 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x75, 0x6d, 0x5f, + 0x6f, 0x66, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x28, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x53, 0x75, + 0x6d, 0x4f, 0x66, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x75, + 0x6d, 0x4f, 0x66, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x73, 0x75, + 0x6d, 0x5f, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e, + 0x53, 0x75, 0x6d, 0x4f, 0x66, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0c, + 0x73, 0x75, 0x6d, 0x4f, 0x66, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x0a, 0x0c, + 0x53, 0x75, 0x6d, 0x4f, 0x66, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x73, 0x1a, 0x55, 0x0a, 0x0c, + 0x53, 0x75, 0x6d, 0x4f, 0x66, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x2f, 0x0a, 0x11, + 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, + 0x12, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x77, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x42, 0x19, 0x0a, 0x17, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x73, 0x22, 0x7c, + 0x0a, 0x0b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x32, 0x0a, + 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, + 0x74, 0x22, 0x39, 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, + 0x54, 0x45, 0x53, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, + 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x54, 0x48, 0x10, 0x03, 0x22, 0xc3, 0x01, 0x0a, + 0x07, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, + 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, + 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x04, + 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, + 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, + 0x41, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, + 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, + 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, + 0x6e, 0x0a, 0x09, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x30, 0x0a, 0x04, + 0x75, 0x6e, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, + 0x70, 0x65, 0x63, 0x2e, 0x55, 0x6e, 0x69, 0x74, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x2f, + 0x0a, 0x04, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, + 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x53, 0x10, 0x02, 0x22, + 0xbf, 0x01, 0x0a, 0x05, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, + 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, + 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, + 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, + 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x41, + 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x96, 0x01, 0x0a, 0x0b, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x65, + 0x72, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, + 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x52, 0x04, 0x73, 0x70, + 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0xee, 0x03, 0x0a, 0x18, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, + 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, + 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x4b, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, + 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xd0, 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6e, 0x6e, + 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x14, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x62, 0x69, 0x74, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, + 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x59, 0x0a, 0x16, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x5f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, + 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x82, 0x01, 0x0a, 0x08, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x53, 0x65, 0x74, 0x12, 0x32, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x65, 0x61, 0x6d, 0x62, - 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x39, 0x0a, 0x09, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x34, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x08, 0x74, - 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x34, 0x6c, 0x61, 0x6e, 0x67, 0x2f, 0x70, 0x34, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x34, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x12, 0x2e, 0x0a, 0x05, + 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x34, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x22, 0xd0, 0x01, 0x0a, 0x08, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x12, 0x32, 0x0a, + 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, + 0x65, 0x12, 0x39, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, + 0x12, 0x41, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x34, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x4e, 0x61, 0x6d, 0x65, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x79, 0x70, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x77, 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, + 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, + 0x65, 0x12, 0x39, 0x0a, 0x09, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x34, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x34, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, + 0x65, 0x63, 0x52, 0x08, 0x74, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x2d, 0x5a, 0x2b, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x34, 0x6c, 0x61, 0x6e, + 0x67, 0x2f, 0x70, 0x34, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x67, 0x6f, 0x2f, 0x70, + 0x34, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -2950,7 +3054,7 @@ func file_p4_config_v1_p4info_proto_rawDescGZIP() []byte { } var file_p4_config_v1_p4info_proto_enumTypes = make([]protoimpl.EnumInfo, 6) -var file_p4_config_v1_p4info_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_p4_config_v1_p4info_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_p4_config_v1_p4info_proto_goTypes = []interface{}{ (P4Ids_Prefix)(0), // 0: p4.config.v1.P4Ids.Prefix (MatchField_MatchType)(0), // 1: p4.config.v1.MatchField.MatchType @@ -2960,112 +3064,114 @@ var file_p4_config_v1_p4info_proto_goTypes = []interface{}{ (MeterSpec_Unit)(0), // 5: p4.config.v1.MeterSpec.Unit (*P4Info)(nil), // 6: p4.config.v1.P4Info (*Documentation)(nil), // 7: p4.config.v1.Documentation - (*PkgInfo)(nil), // 8: p4.config.v1.PkgInfo - (*P4Ids)(nil), // 9: p4.config.v1.P4Ids - (*Preamble)(nil), // 10: p4.config.v1.Preamble - (*Extern)(nil), // 11: p4.config.v1.Extern - (*ExternInstance)(nil), // 12: p4.config.v1.ExternInstance - (*MatchField)(nil), // 13: p4.config.v1.MatchField - (*Table)(nil), // 14: p4.config.v1.Table - (*ActionRef)(nil), // 15: p4.config.v1.ActionRef - (*Action)(nil), // 16: p4.config.v1.Action - (*ActionProfile)(nil), // 17: p4.config.v1.ActionProfile - (*CounterSpec)(nil), // 18: p4.config.v1.CounterSpec - (*Counter)(nil), // 19: p4.config.v1.Counter - (*DirectCounter)(nil), // 20: p4.config.v1.DirectCounter - (*MeterSpec)(nil), // 21: p4.config.v1.MeterSpec - (*Meter)(nil), // 22: p4.config.v1.Meter - (*DirectMeter)(nil), // 23: p4.config.v1.DirectMeter - (*ControllerPacketMetadata)(nil), // 24: p4.config.v1.ControllerPacketMetadata - (*ValueSet)(nil), // 25: p4.config.v1.ValueSet - (*Register)(nil), // 26: p4.config.v1.Register - (*Digest)(nil), // 27: p4.config.v1.Digest - (*Action_Param)(nil), // 28: p4.config.v1.Action.Param - (*ActionProfile_SumOfWeights)(nil), // 29: p4.config.v1.ActionProfile.SumOfWeights - (*ActionProfile_SumOfMembers)(nil), // 30: p4.config.v1.ActionProfile.SumOfMembers - (*ControllerPacketMetadata_Metadata)(nil), // 31: p4.config.v1.ControllerPacketMetadata.Metadata - (*P4TypeInfo)(nil), // 32: p4.config.v1.P4TypeInfo - (*SourceLocation)(nil), // 33: p4.config.v1.SourceLocation - (*StructuredAnnotation)(nil), // 34: p4.config.v1.StructuredAnnotation - (*anypb.Any)(nil), // 35: google.protobuf.Any - (*P4NamedType)(nil), // 36: p4.config.v1.P4NamedType - (*P4DataTypeSpec)(nil), // 37: p4.config.v1.P4DataTypeSpec + (*PlatformProperties)(nil), // 8: p4.config.v1.PlatformProperties + (*PkgInfo)(nil), // 9: p4.config.v1.PkgInfo + (*P4Ids)(nil), // 10: p4.config.v1.P4Ids + (*Preamble)(nil), // 11: p4.config.v1.Preamble + (*Extern)(nil), // 12: p4.config.v1.Extern + (*ExternInstance)(nil), // 13: p4.config.v1.ExternInstance + (*MatchField)(nil), // 14: p4.config.v1.MatchField + (*Table)(nil), // 15: p4.config.v1.Table + (*ActionRef)(nil), // 16: p4.config.v1.ActionRef + (*Action)(nil), // 17: p4.config.v1.Action + (*ActionProfile)(nil), // 18: p4.config.v1.ActionProfile + (*CounterSpec)(nil), // 19: p4.config.v1.CounterSpec + (*Counter)(nil), // 20: p4.config.v1.Counter + (*DirectCounter)(nil), // 21: p4.config.v1.DirectCounter + (*MeterSpec)(nil), // 22: p4.config.v1.MeterSpec + (*Meter)(nil), // 23: p4.config.v1.Meter + (*DirectMeter)(nil), // 24: p4.config.v1.DirectMeter + (*ControllerPacketMetadata)(nil), // 25: p4.config.v1.ControllerPacketMetadata + (*ValueSet)(nil), // 26: p4.config.v1.ValueSet + (*Register)(nil), // 27: p4.config.v1.Register + (*Digest)(nil), // 28: p4.config.v1.Digest + (*Action_Param)(nil), // 29: p4.config.v1.Action.Param + (*ActionProfile_SumOfWeights)(nil), // 30: p4.config.v1.ActionProfile.SumOfWeights + (*ActionProfile_SumOfMembers)(nil), // 31: p4.config.v1.ActionProfile.SumOfMembers + (*ControllerPacketMetadata_Metadata)(nil), // 32: p4.config.v1.ControllerPacketMetadata.Metadata + (*P4TypeInfo)(nil), // 33: p4.config.v1.P4TypeInfo + (*SourceLocation)(nil), // 34: p4.config.v1.SourceLocation + (*StructuredAnnotation)(nil), // 35: p4.config.v1.StructuredAnnotation + (*anypb.Any)(nil), // 36: google.protobuf.Any + (*P4NamedType)(nil), // 37: p4.config.v1.P4NamedType + (*P4DataTypeSpec)(nil), // 38: p4.config.v1.P4DataTypeSpec } var file_p4_config_v1_p4info_proto_depIdxs = []int32{ - 8, // 0: p4.config.v1.P4Info.pkg_info:type_name -> p4.config.v1.PkgInfo - 14, // 1: p4.config.v1.P4Info.tables:type_name -> p4.config.v1.Table - 16, // 2: p4.config.v1.P4Info.actions:type_name -> p4.config.v1.Action - 17, // 3: p4.config.v1.P4Info.action_profiles:type_name -> p4.config.v1.ActionProfile - 19, // 4: p4.config.v1.P4Info.counters:type_name -> p4.config.v1.Counter - 20, // 5: p4.config.v1.P4Info.direct_counters:type_name -> p4.config.v1.DirectCounter - 22, // 6: p4.config.v1.P4Info.meters:type_name -> p4.config.v1.Meter - 23, // 7: p4.config.v1.P4Info.direct_meters:type_name -> p4.config.v1.DirectMeter - 24, // 8: p4.config.v1.P4Info.controller_packet_metadata:type_name -> p4.config.v1.ControllerPacketMetadata - 25, // 9: p4.config.v1.P4Info.value_sets:type_name -> p4.config.v1.ValueSet - 26, // 10: p4.config.v1.P4Info.registers:type_name -> p4.config.v1.Register - 27, // 11: p4.config.v1.P4Info.digests:type_name -> p4.config.v1.Digest - 11, // 12: p4.config.v1.P4Info.externs:type_name -> p4.config.v1.Extern - 32, // 13: p4.config.v1.P4Info.type_info:type_name -> p4.config.v1.P4TypeInfo + 9, // 0: p4.config.v1.P4Info.pkg_info:type_name -> p4.config.v1.PkgInfo + 15, // 1: p4.config.v1.P4Info.tables:type_name -> p4.config.v1.Table + 17, // 2: p4.config.v1.P4Info.actions:type_name -> p4.config.v1.Action + 18, // 3: p4.config.v1.P4Info.action_profiles:type_name -> p4.config.v1.ActionProfile + 20, // 4: p4.config.v1.P4Info.counters:type_name -> p4.config.v1.Counter + 21, // 5: p4.config.v1.P4Info.direct_counters:type_name -> p4.config.v1.DirectCounter + 23, // 6: p4.config.v1.P4Info.meters:type_name -> p4.config.v1.Meter + 24, // 7: p4.config.v1.P4Info.direct_meters:type_name -> p4.config.v1.DirectMeter + 25, // 8: p4.config.v1.P4Info.controller_packet_metadata:type_name -> p4.config.v1.ControllerPacketMetadata + 26, // 9: p4.config.v1.P4Info.value_sets:type_name -> p4.config.v1.ValueSet + 27, // 10: p4.config.v1.P4Info.registers:type_name -> p4.config.v1.Register + 28, // 11: p4.config.v1.P4Info.digests:type_name -> p4.config.v1.Digest + 12, // 12: p4.config.v1.P4Info.externs:type_name -> p4.config.v1.Extern + 33, // 13: p4.config.v1.P4Info.type_info:type_name -> p4.config.v1.P4TypeInfo 7, // 14: p4.config.v1.PkgInfo.doc:type_name -> p4.config.v1.Documentation - 33, // 15: p4.config.v1.PkgInfo.annotation_locations:type_name -> p4.config.v1.SourceLocation - 34, // 16: p4.config.v1.PkgInfo.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 33, // 17: p4.config.v1.Preamble.annotation_locations:type_name -> p4.config.v1.SourceLocation - 7, // 18: p4.config.v1.Preamble.doc:type_name -> p4.config.v1.Documentation - 34, // 19: p4.config.v1.Preamble.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 12, // 20: p4.config.v1.Extern.instances:type_name -> p4.config.v1.ExternInstance - 10, // 21: p4.config.v1.ExternInstance.preamble:type_name -> p4.config.v1.Preamble - 35, // 22: p4.config.v1.ExternInstance.info:type_name -> google.protobuf.Any - 33, // 23: p4.config.v1.MatchField.annotation_locations:type_name -> p4.config.v1.SourceLocation - 1, // 24: p4.config.v1.MatchField.match_type:type_name -> p4.config.v1.MatchField.MatchType - 7, // 25: p4.config.v1.MatchField.doc:type_name -> p4.config.v1.Documentation - 36, // 26: p4.config.v1.MatchField.type_name:type_name -> p4.config.v1.P4NamedType - 34, // 27: p4.config.v1.MatchField.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 10, // 28: p4.config.v1.Table.preamble:type_name -> p4.config.v1.Preamble - 13, // 29: p4.config.v1.Table.match_fields:type_name -> p4.config.v1.MatchField - 15, // 30: p4.config.v1.Table.action_refs:type_name -> p4.config.v1.ActionRef - 2, // 31: p4.config.v1.Table.idle_timeout_behavior:type_name -> p4.config.v1.Table.IdleTimeoutBehavior - 35, // 32: p4.config.v1.Table.other_properties:type_name -> google.protobuf.Any - 3, // 33: p4.config.v1.ActionRef.scope:type_name -> p4.config.v1.ActionRef.Scope - 33, // 34: p4.config.v1.ActionRef.annotation_locations:type_name -> p4.config.v1.SourceLocation - 34, // 35: p4.config.v1.ActionRef.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 10, // 36: p4.config.v1.Action.preamble:type_name -> p4.config.v1.Preamble - 28, // 37: p4.config.v1.Action.params:type_name -> p4.config.v1.Action.Param - 10, // 38: p4.config.v1.ActionProfile.preamble:type_name -> p4.config.v1.Preamble - 29, // 39: p4.config.v1.ActionProfile.sum_of_weights:type_name -> p4.config.v1.ActionProfile.SumOfWeights - 30, // 40: p4.config.v1.ActionProfile.sum_of_members:type_name -> p4.config.v1.ActionProfile.SumOfMembers - 4, // 41: p4.config.v1.CounterSpec.unit:type_name -> p4.config.v1.CounterSpec.Unit - 10, // 42: p4.config.v1.Counter.preamble:type_name -> p4.config.v1.Preamble - 18, // 43: p4.config.v1.Counter.spec:type_name -> p4.config.v1.CounterSpec - 36, // 44: p4.config.v1.Counter.index_type_name:type_name -> p4.config.v1.P4NamedType - 10, // 45: p4.config.v1.DirectCounter.preamble:type_name -> p4.config.v1.Preamble - 18, // 46: p4.config.v1.DirectCounter.spec:type_name -> p4.config.v1.CounterSpec - 5, // 47: p4.config.v1.MeterSpec.unit:type_name -> p4.config.v1.MeterSpec.Unit - 10, // 48: p4.config.v1.Meter.preamble:type_name -> p4.config.v1.Preamble - 21, // 49: p4.config.v1.Meter.spec:type_name -> p4.config.v1.MeterSpec - 36, // 50: p4.config.v1.Meter.index_type_name:type_name -> p4.config.v1.P4NamedType - 10, // 51: p4.config.v1.DirectMeter.preamble:type_name -> p4.config.v1.Preamble - 21, // 52: p4.config.v1.DirectMeter.spec:type_name -> p4.config.v1.MeterSpec - 10, // 53: p4.config.v1.ControllerPacketMetadata.preamble:type_name -> p4.config.v1.Preamble - 31, // 54: p4.config.v1.ControllerPacketMetadata.metadata:type_name -> p4.config.v1.ControllerPacketMetadata.Metadata - 10, // 55: p4.config.v1.ValueSet.preamble:type_name -> p4.config.v1.Preamble - 13, // 56: p4.config.v1.ValueSet.match:type_name -> p4.config.v1.MatchField - 10, // 57: p4.config.v1.Register.preamble:type_name -> p4.config.v1.Preamble - 37, // 58: p4.config.v1.Register.type_spec:type_name -> p4.config.v1.P4DataTypeSpec - 36, // 59: p4.config.v1.Register.index_type_name:type_name -> p4.config.v1.P4NamedType - 10, // 60: p4.config.v1.Digest.preamble:type_name -> p4.config.v1.Preamble - 37, // 61: p4.config.v1.Digest.type_spec:type_name -> p4.config.v1.P4DataTypeSpec - 33, // 62: p4.config.v1.Action.Param.annotation_locations:type_name -> p4.config.v1.SourceLocation - 7, // 63: p4.config.v1.Action.Param.doc:type_name -> p4.config.v1.Documentation - 36, // 64: p4.config.v1.Action.Param.type_name:type_name -> p4.config.v1.P4NamedType - 34, // 65: p4.config.v1.Action.Param.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 33, // 66: p4.config.v1.ControllerPacketMetadata.Metadata.annotation_locations:type_name -> p4.config.v1.SourceLocation - 36, // 67: p4.config.v1.ControllerPacketMetadata.Metadata.type_name:type_name -> p4.config.v1.P4NamedType - 34, // 68: p4.config.v1.ControllerPacketMetadata.Metadata.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation - 69, // [69:69] is the sub-list for method output_type - 69, // [69:69] is the sub-list for method input_type - 69, // [69:69] is the sub-list for extension type_name - 69, // [69:69] is the sub-list for extension extendee - 0, // [0:69] is the sub-list for field type_name + 34, // 15: p4.config.v1.PkgInfo.annotation_locations:type_name -> p4.config.v1.SourceLocation + 35, // 16: p4.config.v1.PkgInfo.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 8, // 17: p4.config.v1.PkgInfo.platform_properties:type_name -> p4.config.v1.PlatformProperties + 34, // 18: p4.config.v1.Preamble.annotation_locations:type_name -> p4.config.v1.SourceLocation + 7, // 19: p4.config.v1.Preamble.doc:type_name -> p4.config.v1.Documentation + 35, // 20: p4.config.v1.Preamble.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 13, // 21: p4.config.v1.Extern.instances:type_name -> p4.config.v1.ExternInstance + 11, // 22: p4.config.v1.ExternInstance.preamble:type_name -> p4.config.v1.Preamble + 36, // 23: p4.config.v1.ExternInstance.info:type_name -> google.protobuf.Any + 34, // 24: p4.config.v1.MatchField.annotation_locations:type_name -> p4.config.v1.SourceLocation + 1, // 25: p4.config.v1.MatchField.match_type:type_name -> p4.config.v1.MatchField.MatchType + 7, // 26: p4.config.v1.MatchField.doc:type_name -> p4.config.v1.Documentation + 37, // 27: p4.config.v1.MatchField.type_name:type_name -> p4.config.v1.P4NamedType + 35, // 28: p4.config.v1.MatchField.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 11, // 29: p4.config.v1.Table.preamble:type_name -> p4.config.v1.Preamble + 14, // 30: p4.config.v1.Table.match_fields:type_name -> p4.config.v1.MatchField + 16, // 31: p4.config.v1.Table.action_refs:type_name -> p4.config.v1.ActionRef + 2, // 32: p4.config.v1.Table.idle_timeout_behavior:type_name -> p4.config.v1.Table.IdleTimeoutBehavior + 36, // 33: p4.config.v1.Table.other_properties:type_name -> google.protobuf.Any + 3, // 34: p4.config.v1.ActionRef.scope:type_name -> p4.config.v1.ActionRef.Scope + 34, // 35: p4.config.v1.ActionRef.annotation_locations:type_name -> p4.config.v1.SourceLocation + 35, // 36: p4.config.v1.ActionRef.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 11, // 37: p4.config.v1.Action.preamble:type_name -> p4.config.v1.Preamble + 29, // 38: p4.config.v1.Action.params:type_name -> p4.config.v1.Action.Param + 11, // 39: p4.config.v1.ActionProfile.preamble:type_name -> p4.config.v1.Preamble + 30, // 40: p4.config.v1.ActionProfile.sum_of_weights:type_name -> p4.config.v1.ActionProfile.SumOfWeights + 31, // 41: p4.config.v1.ActionProfile.sum_of_members:type_name -> p4.config.v1.ActionProfile.SumOfMembers + 4, // 42: p4.config.v1.CounterSpec.unit:type_name -> p4.config.v1.CounterSpec.Unit + 11, // 43: p4.config.v1.Counter.preamble:type_name -> p4.config.v1.Preamble + 19, // 44: p4.config.v1.Counter.spec:type_name -> p4.config.v1.CounterSpec + 37, // 45: p4.config.v1.Counter.index_type_name:type_name -> p4.config.v1.P4NamedType + 11, // 46: p4.config.v1.DirectCounter.preamble:type_name -> p4.config.v1.Preamble + 19, // 47: p4.config.v1.DirectCounter.spec:type_name -> p4.config.v1.CounterSpec + 5, // 48: p4.config.v1.MeterSpec.unit:type_name -> p4.config.v1.MeterSpec.Unit + 11, // 49: p4.config.v1.Meter.preamble:type_name -> p4.config.v1.Preamble + 22, // 50: p4.config.v1.Meter.spec:type_name -> p4.config.v1.MeterSpec + 37, // 51: p4.config.v1.Meter.index_type_name:type_name -> p4.config.v1.P4NamedType + 11, // 52: p4.config.v1.DirectMeter.preamble:type_name -> p4.config.v1.Preamble + 22, // 53: p4.config.v1.DirectMeter.spec:type_name -> p4.config.v1.MeterSpec + 11, // 54: p4.config.v1.ControllerPacketMetadata.preamble:type_name -> p4.config.v1.Preamble + 32, // 55: p4.config.v1.ControllerPacketMetadata.metadata:type_name -> p4.config.v1.ControllerPacketMetadata.Metadata + 11, // 56: p4.config.v1.ValueSet.preamble:type_name -> p4.config.v1.Preamble + 14, // 57: p4.config.v1.ValueSet.match:type_name -> p4.config.v1.MatchField + 11, // 58: p4.config.v1.Register.preamble:type_name -> p4.config.v1.Preamble + 38, // 59: p4.config.v1.Register.type_spec:type_name -> p4.config.v1.P4DataTypeSpec + 37, // 60: p4.config.v1.Register.index_type_name:type_name -> p4.config.v1.P4NamedType + 11, // 61: p4.config.v1.Digest.preamble:type_name -> p4.config.v1.Preamble + 38, // 62: p4.config.v1.Digest.type_spec:type_name -> p4.config.v1.P4DataTypeSpec + 34, // 63: p4.config.v1.Action.Param.annotation_locations:type_name -> p4.config.v1.SourceLocation + 7, // 64: p4.config.v1.Action.Param.doc:type_name -> p4.config.v1.Documentation + 37, // 65: p4.config.v1.Action.Param.type_name:type_name -> p4.config.v1.P4NamedType + 35, // 66: p4.config.v1.Action.Param.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 34, // 67: p4.config.v1.ControllerPacketMetadata.Metadata.annotation_locations:type_name -> p4.config.v1.SourceLocation + 37, // 68: p4.config.v1.ControllerPacketMetadata.Metadata.type_name:type_name -> p4.config.v1.P4NamedType + 35, // 69: p4.config.v1.ControllerPacketMetadata.Metadata.structured_annotations:type_name -> p4.config.v1.StructuredAnnotation + 70, // [70:70] is the sub-list for method output_type + 70, // [70:70] is the sub-list for method input_type + 70, // [70:70] is the sub-list for extension type_name + 70, // [70:70] is the sub-list for extension extendee + 0, // [0:70] is the sub-list for field type_name } func init() { file_p4_config_v1_p4info_proto_init() } @@ -3100,7 +3206,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PkgInfo); i { + switch v := v.(*PlatformProperties); i { case 0: return &v.state case 1: @@ -3112,7 +3218,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*P4Ids); i { + switch v := v.(*PkgInfo); i { case 0: return &v.state case 1: @@ -3124,7 +3230,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Preamble); i { + switch v := v.(*P4Ids); i { case 0: return &v.state case 1: @@ -3136,7 +3242,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Extern); i { + switch v := v.(*Preamble); i { case 0: return &v.state case 1: @@ -3148,7 +3254,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExternInstance); i { + switch v := v.(*Extern); i { case 0: return &v.state case 1: @@ -3160,7 +3266,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MatchField); i { + switch v := v.(*ExternInstance); i { case 0: return &v.state case 1: @@ -3172,7 +3278,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Table); i { + switch v := v.(*MatchField); i { case 0: return &v.state case 1: @@ -3184,7 +3290,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionRef); i { + switch v := v.(*Table); i { case 0: return &v.state case 1: @@ -3196,7 +3302,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action); i { + switch v := v.(*ActionRef); i { case 0: return &v.state case 1: @@ -3208,7 +3314,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProfile); i { + switch v := v.(*Action); i { case 0: return &v.state case 1: @@ -3220,7 +3326,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CounterSpec); i { + switch v := v.(*ActionProfile); i { case 0: return &v.state case 1: @@ -3232,7 +3338,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Counter); i { + switch v := v.(*CounterSpec); i { case 0: return &v.state case 1: @@ -3244,7 +3350,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectCounter); i { + switch v := v.(*Counter); i { case 0: return &v.state case 1: @@ -3256,7 +3362,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MeterSpec); i { + switch v := v.(*DirectCounter); i { case 0: return &v.state case 1: @@ -3268,7 +3374,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Meter); i { + switch v := v.(*MeterSpec); i { case 0: return &v.state case 1: @@ -3280,7 +3386,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DirectMeter); i { + switch v := v.(*Meter); i { case 0: return &v.state case 1: @@ -3292,7 +3398,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ControllerPacketMetadata); i { + switch v := v.(*DirectMeter); i { case 0: return &v.state case 1: @@ -3304,7 +3410,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValueSet); i { + switch v := v.(*ControllerPacketMetadata); i { case 0: return &v.state case 1: @@ -3316,7 +3422,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Register); i { + switch v := v.(*ValueSet); i { case 0: return &v.state case 1: @@ -3328,7 +3434,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Digest); i { + switch v := v.(*Register); i { case 0: return &v.state case 1: @@ -3340,7 +3446,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Action_Param); i { + switch v := v.(*Digest); i { case 0: return &v.state case 1: @@ -3352,7 +3458,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProfile_SumOfWeights); i { + switch v := v.(*Action_Param); i { case 0: return &v.state case 1: @@ -3364,7 +3470,7 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ActionProfile_SumOfMembers); i { + switch v := v.(*ActionProfile_SumOfWeights); i { case 0: return &v.state case 1: @@ -3376,6 +3482,18 @@ func file_p4_config_v1_p4info_proto_init() { } } file_p4_config_v1_p4info_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ActionProfile_SumOfMembers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_p4_config_v1_p4info_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ControllerPacketMetadata_Metadata); i { case 0: return &v.state @@ -3388,22 +3506,22 @@ func file_p4_config_v1_p4info_proto_init() { } } } - file_p4_config_v1_p4info_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_p4_config_v1_p4info_proto_msgTypes[8].OneofWrappers = []interface{}{ (*MatchField_MatchType_)(nil), (*MatchField_OtherMatchType)(nil), } - file_p4_config_v1_p4info_proto_msgTypes[11].OneofWrappers = []interface{}{ + file_p4_config_v1_p4info_proto_msgTypes[12].OneofWrappers = []interface{}{ (*ActionProfile_SumOfWeights_)(nil), (*ActionProfile_SumOfMembers_)(nil), } - file_p4_config_v1_p4info_proto_msgTypes[24].OneofWrappers = []interface{}{} + file_p4_config_v1_p4info_proto_msgTypes[25].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_p4_config_v1_p4info_proto_rawDesc, NumEnums: 6, - NumMessages: 26, + NumMessages: 27, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/p4/config/v1/p4info.proto b/proto/p4/config/v1/p4info.proto index ed548cec..f962052d 100644 --- a/proto/p4/config/v1/p4info.proto +++ b/proto/p4/config/v1/p4info.proto @@ -48,6 +48,20 @@ message Documentation { string description = 2; } +// Used to describe the required properties of the underlying platform. +message PlatformProperties { + // The minimum number of multicast entries (i.e. multicast groups) that the + // platform is required to support. If 0, there are no requirements. + int32 multicast_group_table_size = 1; + // The minimum number of replicas that the platform is required to support + // across all groups. If 0, there are no requirements. + int32 multicast_group_table_total_replicas = 2; + // The number of replicas that the platform is required to support per + // group/entry. If 0, `multicast_group_table_total_replicas` should be used. + // Must be no larger than `multicast_group_table_total_replicas`. + int32 multicast_group_table_max_replicas_per_entry = 3; +} + // Top-level package documentation describing the forwarding pipeline config // Can be used to manage multiple P4 packages. message PkgInfo { @@ -73,6 +87,10 @@ message PkgInfo { string url = 8; // Miscellaneous metadata, structured; a way to extend PkgInfo repeated StructuredAnnotation structured_annotations = 9; + // If set, specifies the properties that the underlying platform should have. + // If the platform does not conform to these properties, the server should + // reject the P4Info when used with a SetForwardingPipelineConfigRequest. + PlatformProperties platform_properties = 11; } // wrapping the enum in a message to avoid name collisions in C++, where "enum diff --git a/py/p4/config/v1/p4info_pb2.py b/py/p4/config/v1/p4info_pb2.py index 30bce078..3d38c2db 100644 --- a/py/p4/config/v1/p4info_pb2.py +++ b/py/p4/config/v1/p4info_pb2.py @@ -21,7 +21,7 @@ syntax='proto3', serialized_options=b'Z+github.com/p4lang/p4runtime/go/p4/config/v1', create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x19p4/config/v1/p4info.proto\x12\x0cp4.config.v1\x1a\x19google/protobuf/any.proto\x1a\x1ap4/config/v1/p4types.proto\"\x88\x05\n\x06P4Info\x12\'\n\x08pkg_info\x18\x01 \x01(\x0b\x32\x15.p4.config.v1.PkgInfo\x12#\n\x06tables\x18\x02 \x03(\x0b\x32\x13.p4.config.v1.Table\x12%\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\x14.p4.config.v1.Action\x12\x34\n\x0f\x61\x63tion_profiles\x18\x04 \x03(\x0b\x32\x1b.p4.config.v1.ActionProfile\x12\'\n\x08\x63ounters\x18\x05 \x03(\x0b\x32\x15.p4.config.v1.Counter\x12\x34\n\x0f\x64irect_counters\x18\x06 \x03(\x0b\x32\x1b.p4.config.v1.DirectCounter\x12#\n\x06meters\x18\x07 \x03(\x0b\x32\x13.p4.config.v1.Meter\x12\x30\n\rdirect_meters\x18\x08 \x03(\x0b\x32\x19.p4.config.v1.DirectMeter\x12J\n\x1a\x63ontroller_packet_metadata\x18\t \x03(\x0b\x32&.p4.config.v1.ControllerPacketMetadata\x12*\n\nvalue_sets\x18\n \x03(\x0b\x32\x16.p4.config.v1.ValueSet\x12)\n\tregisters\x18\x0b \x03(\x0b\x32\x16.p4.config.v1.Register\x12%\n\x07\x64igests\x18\x0c \x03(\x0b\x32\x14.p4.config.v1.Digest\x12%\n\x07\x65xterns\x18\x64 \x03(\x0b\x32\x14.p4.config.v1.Extern\x12,\n\ttype_info\x18\xc8\x01 \x01(\x0b\x32\x18.p4.config.v1.P4TypeInfo\"3\n\rDocumentation\x12\r\n\x05\x62rief\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"\xa9\x02\n\x07PkgInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12(\n\x03\x64oc\x18\x03 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\n \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x0c\n\x04\x61rch\x18\x05 \x01(\t\x12\x14\n\x0corganization\x18\x06 \x01(\t\x12\x0f\n\x07\x63ontact\x18\x07 \x01(\t\x12\x0b\n\x03url\x18\x08 \x01(\t\x12\x42\n\x16structured_annotations\x18\t \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\x87\x02\n\x05P4Ids\"\xfd\x01\n\x06Prefix\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TION\x10\x01\x12\t\n\x05TABLE\x10\x02\x12\r\n\tVALUE_SET\x10\x03\x12\x15\n\x11\x43ONTROLLER_HEADER\x10\x04\x12\x15\n\x11PSA_EXTERNS_START\x10\x10\x12\x12\n\x0e\x41\x43TION_PROFILE\x10\x11\x12\x0b\n\x07\x43OUNTER\x10\x12\x12\x12\n\x0e\x44IRECT_COUNTER\x10\x13\x12\t\n\x05METER\x10\x14\x12\x10\n\x0c\x44IRECT_METER\x10\x15\x12\x0c\n\x08REGISTER\x10\x16\x12\n\n\x06\x44IGEST\x10\x17\x12\x18\n\x13OTHER_EXTERNS_START\x10\x80\x01\x12\x08\n\x03MAX\x10\xff\x01\"\xf2\x01\n\x08Preamble\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x07 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12(\n\x03\x64oc\x18\x05 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"k\n\x06\x45xtern\x12\x16\n\x0e\x65xtern_type_id\x18\x01 \x01(\r\x12\x18\n\x10\x65xtern_type_name\x18\x02 \x01(\t\x12/\n\tinstances\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.ExternInstance\"^\n\x0e\x45xternInstance\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\"\n\x04info\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\"\xdc\x03\n\nMatchField\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\n \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12\x38\n\nmatch_type\x18\x05 \x01(\x0e\x32\".p4.config.v1.MatchField.MatchTypeH\x00\x12\x1a\n\x10other_match_type\x18\x07 \x01(\tH\x00\x12(\n\x03\x64oc\x18\x06 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12,\n\ttype_name\x18\x08 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\t \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"V\n\tMatchType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x45XACT\x10\x02\x12\x07\n\x03LPM\x10\x03\x12\x0b\n\x07TERNARY\x10\x04\x12\t\n\x05RANGE\x10\x05\x12\x0c\n\x08OPTIONAL\x10\x06\x42\x07\n\x05match\"\xde\x03\n\x05Table\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12.\n\x0cmatch_fields\x18\x02 \x03(\x0b\x32\x18.p4.config.v1.MatchField\x12,\n\x0b\x61\x63tion_refs\x18\x03 \x03(\x0b\x32\x17.p4.config.v1.ActionRef\x12\x1f\n\x17\x63onst_default_action_id\x18\x04 \x01(\r\x12\x19\n\x11implementation_id\x18\x06 \x01(\r\x12\x1b\n\x13\x64irect_resource_ids\x18\x07 \x03(\r\x12\x0c\n\x04size\x18\x08 \x01(\x03\x12\x46\n\x15idle_timeout_behavior\x18\t \x01(\x0e\x32\'.p4.config.v1.Table.IdleTimeoutBehavior\x12\x16\n\x0eis_const_table\x18\n \x01(\x08\x12\x1b\n\x13has_initial_entries\x18\x0b \x01(\x08\x12.\n\x10other_properties\x18\x64 \x01(\x0b\x32\x14.google.protobuf.Any\"9\n\x13IdleTimeoutBehavior\x12\x0e\n\nNO_TIMEOUT\x10\x00\x12\x12\n\x0eNOTIFY_CONTROL\x10\x01\"\x9c\x02\n\tActionRef\x12\n\n\x02id\x18\x01 \x01(\r\x12,\n\x05scope\x18\x03 \x01(\x0e\x32\x1d.p4.config.v1.ActionRef.Scope\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"@\n\x05Scope\x12\x15\n\x11TABLE_AND_DEFAULT\x10\x00\x12\x0e\n\nTABLE_ONLY\x10\x01\x12\x10\n\x0c\x44\x45\x46\x41ULT_ONLY\x10\x02\"\x81\x03\n\x06\x41\x63tion\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12*\n\x06params\x18\x02 \x03(\x0b\x32\x1a.p4.config.v1.Action.Param\x1a\xa0\x02\n\x05Param\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x08 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12(\n\x03\x64oc\x18\x05 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12,\n\ttype_name\x18\x06 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\x07 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\x82\x03\n\rActionProfile\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\x11\n\ttable_ids\x18\x02 \x03(\r\x12\x15\n\rwith_selector\x18\x03 \x01(\x08\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x16\n\x0emax_group_size\x18\x05 \x01(\x05\x12\x42\n\x0esum_of_weights\x18\x06 \x01(\x0b\x32(.p4.config.v1.ActionProfile.SumOfWeightsH\x00\x12\x42\n\x0esum_of_members\x18\x07 \x01(\x0b\x32(.p4.config.v1.ActionProfile.SumOfMembersH\x00\x1a\x0e\n\x0cSumOfWeights\x1a\x44\n\x0cSumOfMembers\x12\x1e\n\x11max_member_weight\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x14\n\x12_max_member_weightB\x19\n\x17selector_size_semantics\"v\n\x0b\x43ounterSpec\x12,\n\x04unit\x18\x01 \x01(\x0e\x32\x1e.p4.config.v1.CounterSpec.Unit\"9\n\x04Unit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\x0b\n\x07PACKETS\x10\x02\x12\x08\n\x04\x42OTH\x10\x03\"\x9e\x01\n\x07\x43ounter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x04spec\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.CounterSpec\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"{\n\rDirectCounter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x04spec\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.CounterSpec\x12\x17\n\x0f\x64irect_table_id\x18\x03 \x01(\r\"h\n\tMeterSpec\x12*\n\x04unit\x18\x01 \x01(\x0e\x32\x1c.p4.config.v1.MeterSpec.Unit\"/\n\x04Unit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\x0b\n\x07PACKETS\x10\x02\"\x9a\x01\n\x05Meter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12%\n\x04spec\x18\x02 \x01(\x0b\x32\x17.p4.config.v1.MeterSpec\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"w\n\x0b\x44irectMeter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12%\n\x04spec\x18\x02 \x01(\x0b\x32\x17.p4.config.v1.MeterSpec\x12\x17\n\x0f\x64irect_table_id\x18\x03 \x01(\r\"\x83\x03\n\x18\x43ontrollerPacketMetadata\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\x41\n\x08metadata\x18\x02 \x03(\x0b\x32/.p4.config.v1.ControllerPacketMetadata.Metadata\x1a\xf9\x01\n\x08Metadata\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x07 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12,\n\ttype_name\x18\x05 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"k\n\x08ValueSet\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x05match\x18\x02 \x03(\x0b\x32\x18.p4.config.v1.MatchField\x12\x0c\n\x04size\x18\x03 \x01(\x05\"\xa7\x01\n\x08Register\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpec\x12\x0c\n\x04size\x18\x03 \x01(\x05\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"c\n\x06\x44igest\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpecB-Z+github.com/p4lang/p4runtime/go/p4/config/v1b\x06proto3' + serialized_pb=b'\n\x19p4/config/v1/p4info.proto\x12\x0cp4.config.v1\x1a\x19google/protobuf/any.proto\x1a\x1ap4/config/v1/p4types.proto\"\x88\x05\n\x06P4Info\x12\'\n\x08pkg_info\x18\x01 \x01(\x0b\x32\x15.p4.config.v1.PkgInfo\x12#\n\x06tables\x18\x02 \x03(\x0b\x32\x13.p4.config.v1.Table\x12%\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\x14.p4.config.v1.Action\x12\x34\n\x0f\x61\x63tion_profiles\x18\x04 \x03(\x0b\x32\x1b.p4.config.v1.ActionProfile\x12\'\n\x08\x63ounters\x18\x05 \x03(\x0b\x32\x15.p4.config.v1.Counter\x12\x34\n\x0f\x64irect_counters\x18\x06 \x03(\x0b\x32\x1b.p4.config.v1.DirectCounter\x12#\n\x06meters\x18\x07 \x03(\x0b\x32\x13.p4.config.v1.Meter\x12\x30\n\rdirect_meters\x18\x08 \x03(\x0b\x32\x19.p4.config.v1.DirectMeter\x12J\n\x1a\x63ontroller_packet_metadata\x18\t \x03(\x0b\x32&.p4.config.v1.ControllerPacketMetadata\x12*\n\nvalue_sets\x18\n \x03(\x0b\x32\x16.p4.config.v1.ValueSet\x12)\n\tregisters\x18\x0b \x03(\x0b\x32\x16.p4.config.v1.Register\x12%\n\x07\x64igests\x18\x0c \x03(\x0b\x32\x14.p4.config.v1.Digest\x12%\n\x07\x65xterns\x18\x64 \x03(\x0b\x32\x14.p4.config.v1.Extern\x12,\n\ttype_info\x18\xc8\x01 \x01(\x0b\x32\x18.p4.config.v1.P4TypeInfo\"3\n\rDocumentation\x12\r\n\x05\x62rief\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\"\x9c\x01\n\x12PlatformProperties\x12\"\n\x1amulticast_group_table_size\x18\x01 \x01(\x05\x12,\n$multicast_group_table_total_replicas\x18\x02 \x01(\x05\x12\x34\n,multicast_group_table_max_replicas_per_entry\x18\x03 \x01(\x05\"\xe8\x02\n\x07PkgInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12(\n\x03\x64oc\x18\x03 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\n \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x0c\n\x04\x61rch\x18\x05 \x01(\t\x12\x14\n\x0corganization\x18\x06 \x01(\t\x12\x0f\n\x07\x63ontact\x18\x07 \x01(\t\x12\x0b\n\x03url\x18\x08 \x01(\t\x12\x42\n\x16structured_annotations\x18\t \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\x12=\n\x13platform_properties\x18\x0b \x01(\x0b\x32 .p4.config.v1.PlatformProperties\"\x87\x02\n\x05P4Ids\"\xfd\x01\n\x06Prefix\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06\x41\x43TION\x10\x01\x12\t\n\x05TABLE\x10\x02\x12\r\n\tVALUE_SET\x10\x03\x12\x15\n\x11\x43ONTROLLER_HEADER\x10\x04\x12\x15\n\x11PSA_EXTERNS_START\x10\x10\x12\x12\n\x0e\x41\x43TION_PROFILE\x10\x11\x12\x0b\n\x07\x43OUNTER\x10\x12\x12\x12\n\x0e\x44IRECT_COUNTER\x10\x13\x12\t\n\x05METER\x10\x14\x12\x10\n\x0c\x44IRECT_METER\x10\x15\x12\x0c\n\x08REGISTER\x10\x16\x12\n\n\x06\x44IGEST\x10\x17\x12\x18\n\x13OTHER_EXTERNS_START\x10\x80\x01\x12\x08\n\x03MAX\x10\xff\x01\"\xf2\x01\n\x08Preamble\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05\x61lias\x18\x03 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x04 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x07 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12(\n\x03\x64oc\x18\x05 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"k\n\x06\x45xtern\x12\x16\n\x0e\x65xtern_type_id\x18\x01 \x01(\r\x12\x18\n\x10\x65xtern_type_name\x18\x02 \x01(\t\x12/\n\tinstances\x18\x03 \x03(\x0b\x32\x1c.p4.config.v1.ExternInstance\"^\n\x0e\x45xternInstance\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\"\n\x04info\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\"\xdc\x03\n\nMatchField\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\n \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12\x38\n\nmatch_type\x18\x05 \x01(\x0e\x32\".p4.config.v1.MatchField.MatchTypeH\x00\x12\x1a\n\x10other_match_type\x18\x07 \x01(\tH\x00\x12(\n\x03\x64oc\x18\x06 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12,\n\ttype_name\x18\x08 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\t \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"V\n\tMatchType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x45XACT\x10\x02\x12\x07\n\x03LPM\x10\x03\x12\x0b\n\x07TERNARY\x10\x04\x12\t\n\x05RANGE\x10\x05\x12\x0c\n\x08OPTIONAL\x10\x06\x42\x07\n\x05match\"\xde\x03\n\x05Table\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12.\n\x0cmatch_fields\x18\x02 \x03(\x0b\x32\x18.p4.config.v1.MatchField\x12,\n\x0b\x61\x63tion_refs\x18\x03 \x03(\x0b\x32\x17.p4.config.v1.ActionRef\x12\x1f\n\x17\x63onst_default_action_id\x18\x04 \x01(\r\x12\x19\n\x11implementation_id\x18\x06 \x01(\r\x12\x1b\n\x13\x64irect_resource_ids\x18\x07 \x03(\r\x12\x0c\n\x04size\x18\x08 \x01(\x03\x12\x46\n\x15idle_timeout_behavior\x18\t \x01(\x0e\x32\'.p4.config.v1.Table.IdleTimeoutBehavior\x12\x16\n\x0eis_const_table\x18\n \x01(\x08\x12\x1b\n\x13has_initial_entries\x18\x0b \x01(\x08\x12.\n\x10other_properties\x18\x64 \x01(\x0b\x32\x14.google.protobuf.Any\"9\n\x13IdleTimeoutBehavior\x12\x0e\n\nNO_TIMEOUT\x10\x00\x12\x12\n\x0eNOTIFY_CONTROL\x10\x01\"\x9c\x02\n\tActionRef\x12\n\n\x02id\x18\x01 \x01(\r\x12,\n\x05scope\x18\x03 \x01(\x0e\x32\x1d.p4.config.v1.ActionRef.Scope\x12\x13\n\x0b\x61nnotations\x18\x02 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x05 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x42\n\x16structured_annotations\x18\x04 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"@\n\x05Scope\x12\x15\n\x11TABLE_AND_DEFAULT\x10\x00\x12\x0e\n\nTABLE_ONLY\x10\x01\x12\x10\n\x0c\x44\x45\x46\x41ULT_ONLY\x10\x02\"\x81\x03\n\x06\x41\x63tion\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12*\n\x06params\x18\x02 \x03(\x0b\x32\x1a.p4.config.v1.Action.Param\x1a\xa0\x02\n\x05Param\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x08 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12(\n\x03\x64oc\x18\x05 \x01(\x0b\x32\x1b.p4.config.v1.Documentation\x12,\n\ttype_name\x18\x06 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\x07 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"\x82\x03\n\rActionProfile\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\x11\n\ttable_ids\x18\x02 \x03(\r\x12\x15\n\rwith_selector\x18\x03 \x01(\x08\x12\x0c\n\x04size\x18\x04 \x01(\x03\x12\x16\n\x0emax_group_size\x18\x05 \x01(\x05\x12\x42\n\x0esum_of_weights\x18\x06 \x01(\x0b\x32(.p4.config.v1.ActionProfile.SumOfWeightsH\x00\x12\x42\n\x0esum_of_members\x18\x07 \x01(\x0b\x32(.p4.config.v1.ActionProfile.SumOfMembersH\x00\x1a\x0e\n\x0cSumOfWeights\x1a\x44\n\x0cSumOfMembers\x12\x1e\n\x11max_member_weight\x18\x01 \x01(\x05H\x00\x88\x01\x01\x42\x14\n\x12_max_member_weightB\x19\n\x17selector_size_semantics\"v\n\x0b\x43ounterSpec\x12,\n\x04unit\x18\x01 \x01(\x0e\x32\x1e.p4.config.v1.CounterSpec.Unit\"9\n\x04Unit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\x0b\n\x07PACKETS\x10\x02\x12\x08\n\x04\x42OTH\x10\x03\"\x9e\x01\n\x07\x43ounter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x04spec\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.CounterSpec\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"{\n\rDirectCounter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x04spec\x18\x02 \x01(\x0b\x32\x19.p4.config.v1.CounterSpec\x12\x17\n\x0f\x64irect_table_id\x18\x03 \x01(\r\"h\n\tMeterSpec\x12*\n\x04unit\x18\x01 \x01(\x0e\x32\x1c.p4.config.v1.MeterSpec.Unit\"/\n\x04Unit\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\t\n\x05\x42YTES\x10\x01\x12\x0b\n\x07PACKETS\x10\x02\"\x9a\x01\n\x05Meter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12%\n\x04spec\x18\x02 \x01(\x0b\x32\x17.p4.config.v1.MeterSpec\x12\x0c\n\x04size\x18\x03 \x01(\x03\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"w\n\x0b\x44irectMeter\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12%\n\x04spec\x18\x02 \x01(\x0b\x32\x17.p4.config.v1.MeterSpec\x12\x17\n\x0f\x64irect_table_id\x18\x03 \x01(\r\"\x83\x03\n\x18\x43ontrollerPacketMetadata\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\x41\n\x08metadata\x18\x02 \x03(\x0b\x32/.p4.config.v1.ControllerPacketMetadata.Metadata\x1a\xf9\x01\n\x08Metadata\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x61nnotations\x18\x03 \x03(\t\x12:\n\x14\x61nnotation_locations\x18\x07 \x03(\x0b\x32\x1c.p4.config.v1.SourceLocation\x12\x10\n\x08\x62itwidth\x18\x04 \x01(\x05\x12,\n\ttype_name\x18\x05 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\x12\x42\n\x16structured_annotations\x18\x06 \x03(\x0b\x32\".p4.config.v1.StructuredAnnotation\"k\n\x08ValueSet\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12\'\n\x05match\x18\x02 \x03(\x0b\x32\x18.p4.config.v1.MatchField\x12\x0c\n\x04size\x18\x03 \x01(\x05\"\xa7\x01\n\x08Register\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpec\x12\x0c\n\x04size\x18\x03 \x01(\x05\x12\x32\n\x0findex_type_name\x18\x04 \x01(\x0b\x32\x19.p4.config.v1.P4NamedType\"c\n\x06\x44igest\x12(\n\x08preamble\x18\x01 \x01(\x0b\x32\x16.p4.config.v1.Preamble\x12/\n\ttype_spec\x18\x02 \x01(\x0b\x32\x1c.p4.config.v1.P4DataTypeSpecB-Z+github.com/p4lang/p4runtime/go/p4/config/v1b\x06proto3' , dependencies=[google_dot_protobuf_dot_any__pb2.DESCRIPTOR,p4_dot_config_dot_v1_dot_p4types__pb2.DESCRIPTOR,]) @@ -112,8 +112,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=1113, - serialized_end=1366, + serialized_start=1335, + serialized_end=1588, ) _sym_db.RegisterEnumDescriptor(_P4IDS_PREFIX) @@ -157,8 +157,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2200, - serialized_end=2286, + serialized_start=2422, + serialized_end=2508, ) _sym_db.RegisterEnumDescriptor(_MATCHFIELD_MATCHTYPE) @@ -182,8 +182,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2719, - serialized_end=2776, + serialized_start=2941, + serialized_end=2998, ) _sym_db.RegisterEnumDescriptor(_TABLE_IDLETIMEOUTBEHAVIOR) @@ -212,8 +212,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=2999, - serialized_end=3063, + serialized_start=3221, + serialized_end=3285, ) _sym_db.RegisterEnumDescriptor(_ACTIONREF_SCOPE) @@ -247,8 +247,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=3903, - serialized_end=3960, + serialized_start=4125, + serialized_end=4182, ) _sym_db.RegisterEnumDescriptor(_COUNTERSPEC_UNIT) @@ -277,8 +277,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=3903, - serialized_end=3950, + serialized_start=4125, + serialized_end=4172, ) _sym_db.RegisterEnumDescriptor(_METERSPEC_UNIT) @@ -445,6 +445,52 @@ ) +_PLATFORMPROPERTIES = _descriptor.Descriptor( + name='PlatformProperties', + full_name='p4.config.v1.PlatformProperties', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='multicast_group_table_size', full_name='p4.config.v1.PlatformProperties.multicast_group_table_size', index=0, + number=1, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='multicast_group_table_total_replicas', full_name='p4.config.v1.PlatformProperties.multicast_group_table_total_replicas', index=1, + number=2, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='multicast_group_table_max_replicas_per_entry', full_name='p4.config.v1.PlatformProperties.multicast_group_table_max_replicas_per_entry', index=2, + number=3, type=5, cpp_type=1, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=803, + serialized_end=959, +) + + _PKGINFO = _descriptor.Descriptor( name='PkgInfo', full_name='p4.config.v1.PkgInfo', @@ -523,6 +569,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='platform_properties', full_name='p4.config.v1.PkgInfo.platform_properties', index=10, + number=11, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -535,8 +588,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=803, - serialized_end=1100, + serialized_start=962, + serialized_end=1322, ) @@ -561,8 +614,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1103, - serialized_end=1366, + serialized_start=1325, + serialized_end=1588, ) @@ -635,8 +688,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1369, - serialized_end=1611, + serialized_start=1591, + serialized_end=1833, ) @@ -681,8 +734,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1613, - serialized_end=1720, + serialized_start=1835, + serialized_end=1942, ) @@ -720,8 +773,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1722, - serialized_end=1816, + serialized_start=1944, + serialized_end=2038, ) @@ -821,8 +874,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1819, - serialized_end=2295, + serialized_start=2041, + serialized_end=2517, ) @@ -924,8 +977,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2298, - serialized_end=2776, + serialized_start=2520, + serialized_end=2998, ) @@ -985,8 +1038,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2779, - serialized_end=3063, + serialized_start=3001, + serialized_end=3285, ) @@ -1066,8 +1119,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3163, - serialized_end=3451, + serialized_start=3385, + serialized_end=3673, ) _ACTION = _descriptor.Descriptor( @@ -1104,8 +1157,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3066, - serialized_end=3451, + serialized_start=3288, + serialized_end=3673, ) @@ -1129,8 +1182,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3729, - serialized_end=3743, + serialized_start=3951, + serialized_end=3965, ) _ACTIONPROFILE_SUMOFMEMBERS = _descriptor.Descriptor( @@ -1165,8 +1218,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3745, - serialized_end=3813, + serialized_start=3967, + serialized_end=4035, ) _ACTIONPROFILE = _descriptor.Descriptor( @@ -1243,8 +1296,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3454, - serialized_end=3840, + serialized_start=3676, + serialized_end=4062, ) @@ -1276,8 +1329,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3842, - serialized_end=3960, + serialized_start=4064, + serialized_end=4182, ) @@ -1329,8 +1382,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3963, - serialized_end=4121, + serialized_start=4185, + serialized_end=4343, ) @@ -1375,8 +1428,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4123, - serialized_end=4246, + serialized_start=4345, + serialized_end=4468, ) @@ -1408,8 +1461,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4248, - serialized_end=4352, + serialized_start=4470, + serialized_end=4574, ) @@ -1461,8 +1514,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4355, - serialized_end=4509, + serialized_start=4577, + serialized_end=4731, ) @@ -1507,8 +1560,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4511, - serialized_end=4630, + serialized_start=4733, + serialized_end=4852, ) @@ -1581,8 +1634,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4771, - serialized_end=5020, + serialized_start=4993, + serialized_end=5242, ) _CONTROLLERPACKETMETADATA = _descriptor.Descriptor( @@ -1619,8 +1672,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4633, - serialized_end=5020, + serialized_start=4855, + serialized_end=5242, ) @@ -1665,8 +1718,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5022, - serialized_end=5129, + serialized_start=5244, + serialized_end=5351, ) @@ -1718,8 +1771,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5132, - serialized_end=5299, + serialized_start=5354, + serialized_end=5521, ) @@ -1757,8 +1810,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5301, - serialized_end=5400, + serialized_start=5523, + serialized_end=5622, ) _P4INFO.fields_by_name['pkg_info'].message_type = _PKGINFO @@ -1778,6 +1831,7 @@ _PKGINFO.fields_by_name['doc'].message_type = _DOCUMENTATION _PKGINFO.fields_by_name['annotation_locations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._SOURCELOCATION _PKGINFO.fields_by_name['structured_annotations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._STRUCTUREDANNOTATION +_PKGINFO.fields_by_name['platform_properties'].message_type = _PLATFORMPROPERTIES _P4IDS_PREFIX.containing_type = _P4IDS _PREAMBLE.fields_by_name['annotation_locations'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._SOURCELOCATION _PREAMBLE.fields_by_name['doc'].message_type = _DOCUMENTATION @@ -1857,6 +1911,7 @@ _DIGEST.fields_by_name['type_spec'].message_type = p4_dot_config_dot_v1_dot_p4types__pb2._P4DATATYPESPEC DESCRIPTOR.message_types_by_name['P4Info'] = _P4INFO DESCRIPTOR.message_types_by_name['Documentation'] = _DOCUMENTATION +DESCRIPTOR.message_types_by_name['PlatformProperties'] = _PLATFORMPROPERTIES DESCRIPTOR.message_types_by_name['PkgInfo'] = _PKGINFO DESCRIPTOR.message_types_by_name['P4Ids'] = _P4IDS DESCRIPTOR.message_types_by_name['Preamble'] = _PREAMBLE @@ -1893,6 +1948,13 @@ }) _sym_db.RegisterMessage(Documentation) +PlatformProperties = _reflection.GeneratedProtocolMessageType('PlatformProperties', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMPROPERTIES, + '__module__' : 'p4.config.v1.p4info_pb2' + # @@protoc_insertion_point(class_scope:p4.config.v1.PlatformProperties) + }) +_sym_db.RegisterMessage(PlatformProperties) + PkgInfo = _reflection.GeneratedProtocolMessageType('PkgInfo', (_message.Message,), { 'DESCRIPTOR' : _PKGINFO, '__module__' : 'p4.config.v1.p4info_pb2'