From a4be88383507410a8993cdf639c0df71729081e6 Mon Sep 17 00:00:00 2001 From: sen-trustero Date: Mon, 23 Mar 2026 20:40:36 -0700 Subject: [PATCH] fix empty Report when reporting docs --- go/receptor_sdk/cmd/report.go | 7 +- go/receptor_v1/receptor.pb.go | 1214 ++++++++++++++++++++++----------- 2 files changed, 826 insertions(+), 395 deletions(-) diff --git a/go/receptor_sdk/cmd/report.go b/go/receptor_sdk/cmd/report.go index 5b15c38..b75f668 100644 --- a/go/receptor_sdk/cmd/report.go +++ b/go/receptor_sdk/cmd/report.go @@ -212,8 +212,11 @@ func reportEvidence(rc receptor_v1.ReceptorClient, finding *receptor_v1.Finding, } // report all structured evidence at once - _, err = rc.Report(context.Background(), finding) - finding.Evidences = []*receptor_v1.Evidence{} // reset evidences + + if len(finding.Evidences) > 0 { + _, err = rc.Report(context.Background(), finding) + finding.Evidences = []*receptor_v1.Evidence{} // reset evidences + } return } diff --git a/go/receptor_v1/receptor.pb.go b/go/receptor_v1/receptor.pb.go index 043cc9c..02abb41 100644 --- a/go/receptor_v1/receptor.pb.go +++ b/go/receptor_v1/receptor.pb.go @@ -3,7 +3,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.11 +// protoc-gen-go v1.30.0 // protoc v3.20.3 // source: receptor_v1/receptor.proto @@ -17,7 +17,6 @@ import ( wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" - unsafe "unsafe" ) const ( @@ -109,7 +108,10 @@ func (EvidenceObjectType) EnumDescriptor() ([]byte, []int) { // Finding is a set of evidence(s) collected from a service provider account. type Finding struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Unique receptor identifier. A receptor is expected to report findings from only one service provider type. A // stable identifier that represent the type of receptor reporting this finding. The identifier is a simple URL // encoded string that includes an organization name and the service provider name. For example: "trustero_gitlab". @@ -121,16 +123,16 @@ type Finding struct { // One or more evidence collected by a typical receptor scan. Evidences []*Evidence `protobuf:"bytes,4,rep,name=evidences,proto3" json:"evidences,omitempty"` // discovery_id is the unique identifier for the discovery process that led to this finding. - DiscoveryId string `protobuf:"bytes,5,opt,name=discovery_id,json=discoveryId,proto3" json:"discovery_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + DiscoveryId string `protobuf:"bytes,5,opt,name=discovery_id,json=discoveryId,proto3" json:"discovery_id,omitempty"` } func (x *Finding) Reset() { *x = Finding{} - mi := &file_receptor_v1_receptor_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Finding) String() string { @@ -141,7 +143,7 @@ func (*Finding) ProtoMessage() {} func (x *Finding) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[0] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -194,7 +196,10 @@ func (x *Finding) GetDiscoveryId() string { // Evidence is a unstructured or structured document that represent the how a service is being used within a // service provider account. For example, the configuration of an S3 bucket in AWS. type Evidence struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Caption is a human readable English string that identifies this evidence. Caption must be stable for // all scans of the same evidence type. Trustero uses the caption to associate this evidence with a // set of relevant controls. @@ -212,7 +217,7 @@ type Evidence struct { Sources []*Source `protobuf:"bytes,5,rep,name=sources,proto3" json:"sources,omitempty"` // Evidence_type can be either an unstructured (Document) or structured (Struct) type. // - // Types that are valid to be assigned to EvidenceType: + // Types that are assignable to EvidenceType: // // *Evidence_Doc // *Evidence_Struct @@ -241,16 +246,16 @@ type Evidence struct { // exceptions is a list of exceptions for the evidence object. Exceptions string `protobuf:"bytes,16,opt,name=exceptions,proto3" json:"exceptions,omitempty"` // // link to the evidence object in the external system. - EvidenceLink string `protobuf:"bytes,17,opt,name=evidence_link,json=evidenceLink,proto3" json:"evidence_link,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + EvidenceLink string `protobuf:"bytes,17,opt,name=evidence_link,json=evidenceLink,proto3" json:"evidence_link,omitempty"` } func (x *Evidence) Reset() { *x = Evidence{} - mi := &file_receptor_v1_receptor_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Evidence) String() string { @@ -261,7 +266,7 @@ func (*Evidence) ProtoMessage() {} func (x *Evidence) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[1] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -311,36 +316,30 @@ func (x *Evidence) GetSources() []*Source { return nil } -func (x *Evidence) GetEvidenceType() isEvidence_EvidenceType { - if x != nil { - return x.EvidenceType +func (m *Evidence) GetEvidenceType() isEvidence_EvidenceType { + if m != nil { + return m.EvidenceType } return nil } func (x *Evidence) GetDoc() *Document { - if x != nil { - if x, ok := x.EvidenceType.(*Evidence_Doc); ok { - return x.Doc - } + if x, ok := x.GetEvidenceType().(*Evidence_Doc); ok { + return x.Doc } return nil } func (x *Evidence) GetStruct() *Struct { - if x != nil { - if x, ok := x.EvidenceType.(*Evidence_Struct); ok { - return x.Struct - } + if x, ok := x.GetEvidenceType().(*Evidence_Struct); ok { + return x.Struct } return nil } func (x *Evidence) GetDocs() *Documents { - if x != nil { - if x, ok := x.EvidenceType.(*Evidence_Docs); ok { - return x.Docs - } + if x, ok := x.GetEvidenceType().(*Evidence_Docs); ok { + return x.Docs } return nil } @@ -449,20 +448,23 @@ func (*Evidence_Docs) isEvidence_EvidenceType() {} // Source is the raw service provider API request and response. type Source struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Raw_api_request is the raw API request used to generate this evidence. RawApiRequest string `protobuf:"bytes,1,opt,name=raw_api_request,json=rawApiRequest,proto3" json:"raw_api_request,omitempty"` // Raw_api_response is the raw API response used to generate this evidence. RawApiResponse string `protobuf:"bytes,2,opt,name=raw_api_response,json=rawApiResponse,proto3" json:"raw_api_response,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache } func (x *Source) Reset() { *x = Source{} - mi := &file_receptor_v1_receptor_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Source) String() string { @@ -473,7 +475,7 @@ func (*Source) ProtoMessage() {} func (x *Source) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[2] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -503,17 +505,20 @@ func (x *Source) GetRawApiResponse() string { } type Sources struct { - state protoimpl.MessageState `protogen:"open.v1"` - Sources []*Source `protobuf:"bytes,1,rep,name=sources,proto3" json:"sources,omitempty"` - unknownFields protoimpl.UnknownFields + state protoimpl.MessageState sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Sources []*Source `protobuf:"bytes,1,rep,name=sources,proto3" json:"sources,omitempty"` } func (x *Sources) Reset() { *x = Sources{} - mi := &file_receptor_v1_receptor_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Sources) String() string { @@ -524,7 +529,7 @@ func (*Sources) ProtoMessage() {} func (x *Sources) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[3] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -548,7 +553,10 @@ func (x *Sources) GetSources() []*Source { // Document is an unstructured evidence provided as a MIME document. type Document struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Mime is the document type defined using [MIME]. // [MIME]: https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types Mime string `protobuf:"bytes,2,opt,name=mime,proto3" json:"mime,omitempty"` @@ -561,16 +569,16 @@ type Document struct { // Last modified date of the document at the source LastModified *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_modified,json=lastModified,proto3" json:"last_modified,omitempty"` // Metadata is a map of key-value pairs that provide additional information about the document. - Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + Metadata map[string]string `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Document) Reset() { *x = Document{} - mi := &file_receptor_v1_receptor_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Document) String() string { @@ -581,7 +589,7 @@ func (*Document) ProtoMessage() {} func (x *Document) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[4] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -639,17 +647,20 @@ func (x *Document) GetMetadata() map[string]string { } type Documents struct { - state protoimpl.MessageState `protogen:"open.v1"` - Docs []*Document `protobuf:"bytes,1,rep,name=docs,proto3" json:"docs,omitempty"` - unknownFields protoimpl.UnknownFields + state protoimpl.MessageState sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Docs []*Document `protobuf:"bytes,1,rep,name=docs,proto3" json:"docs,omitempty"` } func (x *Documents) Reset() { *x = Documents{} - mi := &file_receptor_v1_receptor_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Documents) String() string { @@ -660,7 +671,7 @@ func (*Documents) ProtoMessage() {} func (x *Documents) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[5] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -687,28 +698,31 @@ func (x *Documents) GetDocs() []*Document { // instance and its configurations. A row contains column name and column value pairs. All rows in a struct // must have the same column name-value pairs. type Struct struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Rows of key-value pairs. Each row typically represents the configuration of a service instance or an data // type such as a member of GitLab group. Rows []*Row `protobuf:"bytes,2,rep,name=rows,proto3" json:"rows,omitempty"` // Col_display_names is a map of row column name to it's corresponding display name. Display names are used // by the user interface to render a field in a struct's rows. - ColDisplayNames map[string]string `protobuf:"bytes,3,rep,name=col_display_names,json=colDisplayNames,proto3" json:"col_display_names,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ColDisplayNames map[string]string `protobuf:"bytes,3,rep,name=col_display_names,json=colDisplayNames,proto3" json:"col_display_names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Col_display_order is an ordered list of row column names. The order of the column names are used by the user // interface to render the column order of a struct's rows. ColDisplayOrder []string `protobuf:"bytes,4,rep,name=col_display_order,json=colDisplayOrder,proto3" json:"col_display_order,omitempty"` // Col_tags is a map of column tag to row column name. These tags are used by Trustero's evidence testing interface // to identify relevant evidence. - ColTags map[string]string `protobuf:"bytes,5,rep,name=col_tags,json=colTags,proto3" json:"col_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + ColTags map[string]string `protobuf:"bytes,5,rep,name=col_tags,json=colTags,proto3" json:"col_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Struct) Reset() { *x = Struct{} - mi := &file_receptor_v1_receptor_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Struct) String() string { @@ -719,7 +733,7 @@ func (*Struct) ProtoMessage() {} func (x *Struct) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[6] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -764,23 +778,26 @@ func (x *Struct) GetColTags() map[string]string { // Row is a row of structured data. type Row struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Entity_instance_id of a discovered entity instance. For example, an AWS "ECS" cluster UUID or GitLab // "repository" ID. EntityInstanceId string `protobuf:"bytes,1,opt,name=entity_instance_id,json=entityInstanceId,proto3" json:"entity_instance_id,omitempty"` // Cols are columns of the row in column name to value pairs. All rows in a struct must have the same column // names and corresponding value types. In addition, one of the key-value pair in the cols map must be the // entity_instance_id, a unique instance of this row's Struct.entity_type. - Cols map[string]*Value `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + Cols map[string]*Value `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *Row) Reset() { *x = Row{} - mi := &file_receptor_v1_receptor_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Row) String() string { @@ -791,7 +808,7 @@ func (*Row) ProtoMessage() {} func (x *Row) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[7] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -822,8 +839,11 @@ func (x *Row) GetCols() map[string]*Value { // Value is a [Struct.row.col] column value. Value types can be simple protobuf scalar or [google.proto.Timestamp]. type Value struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to ValueType: + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to ValueType: // // *Value_DoubleValue // *Value_FloatValue @@ -836,16 +856,16 @@ type Value struct { // *Value_TimestampValue // *Value_StringListValue // *Value_StructListValue - ValueType isValue_ValueType `protobuf_oneof:"value_type"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + ValueType isValue_ValueType `protobuf_oneof:"value_type"` } func (x *Value) Reset() { *x = Value{} - mi := &file_receptor_v1_receptor_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Value) String() string { @@ -856,7 +876,7 @@ func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[8] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -871,108 +891,86 @@ func (*Value) Descriptor() ([]byte, []int) { return file_receptor_v1_receptor_proto_rawDescGZIP(), []int{8} } -func (x *Value) GetValueType() isValue_ValueType { - if x != nil { - return x.ValueType +func (m *Value) GetValueType() isValue_ValueType { + if m != nil { + return m.ValueType } return nil } func (x *Value) GetDoubleValue() float64 { - if x != nil { - if x, ok := x.ValueType.(*Value_DoubleValue); ok { - return x.DoubleValue - } + if x, ok := x.GetValueType().(*Value_DoubleValue); ok { + return x.DoubleValue } return 0 } func (x *Value) GetFloatValue() float32 { - if x != nil { - if x, ok := x.ValueType.(*Value_FloatValue); ok { - return x.FloatValue - } + if x, ok := x.GetValueType().(*Value_FloatValue); ok { + return x.FloatValue } return 0 } func (x *Value) GetInt32Value() int32 { - if x != nil { - if x, ok := x.ValueType.(*Value_Int32Value); ok { - return x.Int32Value - } + if x, ok := x.GetValueType().(*Value_Int32Value); ok { + return x.Int32Value } return 0 } func (x *Value) GetInt64Value() int64 { - if x != nil { - if x, ok := x.ValueType.(*Value_Int64Value); ok { - return x.Int64Value - } + if x, ok := x.GetValueType().(*Value_Int64Value); ok { + return x.Int64Value } return 0 } func (x *Value) GetUint32Value() uint32 { - if x != nil { - if x, ok := x.ValueType.(*Value_Uint32Value); ok { - return x.Uint32Value - } + if x, ok := x.GetValueType().(*Value_Uint32Value); ok { + return x.Uint32Value } return 0 } func (x *Value) GetUint64Value() uint64 { - if x != nil { - if x, ok := x.ValueType.(*Value_Uint64Value); ok { - return x.Uint64Value - } + if x, ok := x.GetValueType().(*Value_Uint64Value); ok { + return x.Uint64Value } return 0 } func (x *Value) GetBoolValue() bool { - if x != nil { - if x, ok := x.ValueType.(*Value_BoolValue); ok { - return x.BoolValue - } + if x, ok := x.GetValueType().(*Value_BoolValue); ok { + return x.BoolValue } return false } func (x *Value) GetStringValue() string { - if x != nil { - if x, ok := x.ValueType.(*Value_StringValue); ok { - return x.StringValue - } + if x, ok := x.GetValueType().(*Value_StringValue); ok { + return x.StringValue } return "" } func (x *Value) GetTimestampValue() *timestamppb.Timestamp { - if x != nil { - if x, ok := x.ValueType.(*Value_TimestampValue); ok { - return x.TimestampValue - } + if x, ok := x.GetValueType().(*Value_TimestampValue); ok { + return x.TimestampValue } return nil } func (x *Value) GetStringListValue() *StringList { - if x != nil { - if x, ok := x.ValueType.(*Value_StringListValue); ok { - return x.StringListValue - } + if x, ok := x.GetValueType().(*Value_StringListValue); ok { + return x.StringListValue } return nil } func (x *Value) GetStructListValue() *StructList { - if x != nil { - if x, ok := x.ValueType.(*Value_StructListValue); ok { - return x.StructListValue - } + if x, ok := x.GetValueType().(*Value_StructListValue); ok { + return x.StructListValue } return nil } @@ -1048,17 +1046,20 @@ func (*Value_StringListValue) isValue_ValueType() {} func (*Value_StructListValue) isValue_ValueType() {} type StringList struct { - state protoimpl.MessageState `protogen:"open.v1"` - Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` - unknownFields protoimpl.UnknownFields + state protoimpl.MessageState sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Values []string `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` } func (x *StringList) Reset() { *x = StringList{} - mi := &file_receptor_v1_receptor_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *StringList) String() string { @@ -1069,7 +1070,7 @@ func (*StringList) ProtoMessage() {} func (x *StringList) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[9] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1092,17 +1093,20 @@ func (x *StringList) GetValues() []string { } type StructList struct { - state protoimpl.MessageState `protogen:"open.v1"` - Values []*StructStruct `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` // Array of structs - unknownFields protoimpl.UnknownFields + state protoimpl.MessageState sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Values []*StructStruct `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"` // Array of structs } func (x *StructList) Reset() { *x = StructList{} - mi := &file_receptor_v1_receptor_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *StructList) String() string { @@ -1113,7 +1117,7 @@ func (*StructList) ProtoMessage() {} func (x *StructList) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[10] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1136,17 +1140,20 @@ func (x *StructList) GetValues() []*StructStruct { } type StructStruct struct { - state protoimpl.MessageState `protogen:"open.v1"` - Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Fields of the struct - unknownFields protoimpl.UnknownFields + state protoimpl.MessageState sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Fields of the struct } func (x *StructStruct) Reset() { *x = StructStruct{} - mi := &file_receptor_v1_receptor_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *StructStruct) String() string { @@ -1157,7 +1164,7 @@ func (*StructStruct) ProtoMessage() {} func (x *StructStruct) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[11] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1184,7 +1191,10 @@ func (x *StructStruct) GetFields() map[string]*Value { // depends on how a receptor represents it's findings. Each service instance_id should be associated with at least // one Evidence. type ServiceEntities struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Receptor_type is a unique receptor type. A stable string identifier that represent the type of receptor // reporting this finding. The identifier is a simple URL encode string that includes the organization name // and a service provider name. For example "trustero_gitlab". @@ -1192,16 +1202,16 @@ type ServiceEntities struct { // Service_provider_account is the service provider account where the services are configured in. ServiceProviderAccount string `protobuf:"bytes,2,opt,name=service_provider_account,json=serviceProviderAccount,proto3" json:"service_provider_account,omitempty"` // Entities is a list of service instances configured in the service provider account. - Entities []*ServiceEntity `protobuf:"bytes,3,rep,name=entities,proto3" json:"entities,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + Entities []*ServiceEntity `protobuf:"bytes,3,rep,name=entities,proto3" json:"entities,omitempty"` } func (x *ServiceEntities) Reset() { *x = ServiceEntities{} - mi := &file_receptor_v1_receptor_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *ServiceEntities) String() string { @@ -1212,7 +1222,7 @@ func (*ServiceEntities) ProtoMessage() {} func (x *ServiceEntities) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[12] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1253,7 +1263,10 @@ func (x *ServiceEntities) GetEntities() []*ServiceEntity { // detailed configurations collected by Receptor.Reported() calls. Service entities allows Trustero to filter // collected evidence that aren't relevant to specific audit contexts. type ServiceEntity struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Service_name of the entity source. This is a Trustero assigned identifier for a known service such as // "GitLab" or AWS "ECS". ServiceName string `protobuf:"bytes,1,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` @@ -1272,15 +1285,15 @@ type ServiceEntity struct { // Service_account_id is the member account of the organization. For example, an AWS account number in a an organization // that has more than one account. ServiceAccountId string `protobuf:"bytes,5,opt,name=service_account_id,json=serviceAccountId,proto3" json:"service_account_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache } func (x *ServiceEntity) Reset() { *x = ServiceEntity{} - mi := &file_receptor_v1_receptor_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *ServiceEntity) String() string { @@ -1291,7 +1304,7 @@ func (*ServiceEntity) ProtoMessage() {} func (x *ServiceEntity) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[13] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1343,7 +1356,10 @@ func (x *ServiceEntity) GetServiceAccountId() string { // Credential is returned by a Verified request noting if a given service provider account credential is valid. type Credential struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Receptor_object_id is Trustero's receptor record identifier. This identifier is typically provided to the // receptor as part of a reporting findings or discover services request. ReceptorObjectId string `protobuf:"bytes,1,opt,name=receptor_object_id,json=receptorObjectId,proto3" json:"receptor_object_id,omitempty"` @@ -1355,16 +1371,16 @@ type Credential struct { // Message contains the reason for why the service provider credential in this message is invalid. Message string `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"` // Exceptions contains information about the permissions that are missing for the credentials provided. - Exceptions string `protobuf:"bytes,5,opt,name=exceptions,proto3" json:"exceptions,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + Exceptions string `protobuf:"bytes,5,opt,name=exceptions,proto3" json:"exceptions,omitempty"` } func (x *Credential) Reset() { *x = Credential{} - mi := &file_receptor_v1_receptor_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *Credential) String() string { @@ -1375,7 +1391,7 @@ func (*Credential) ProtoMessage() {} func (x *Credential) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[14] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1427,18 +1443,21 @@ func (x *Credential) GetExceptions() string { // ReceptorOID is Trustero's receptor record identifier. type ReceptorOID struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Receptor_object_id is the string representation of a Trustero persistent record. ReceptorObjectId string `protobuf:"bytes,1,opt,name=receptor_object_id,json=receptorObjectId,proto3" json:"receptor_object_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache } func (x *ReceptorOID) Reset() { *x = ReceptorOID{} - mi := &file_receptor_v1_receptor_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *ReceptorOID) String() string { @@ -1449,7 +1468,7 @@ func (*ReceptorOID) ProtoMessage() {} func (x *ReceptorOID) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[15] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1473,7 +1492,10 @@ func (x *ReceptorOID) GetReceptorObjectId() string { // ReceptorConfiguration contains a configurations a receptor needs to access a service provider account. type ReceptorConfiguration struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Receptor_object_id is Trustero's receptor record identifier. ReceptorObjectId string `protobuf:"bytes,1,opt,name=receptor_object_id,json=receptorObjectId,proto3" json:"receptor_object_id,omitempty"` // Credential required to access a service provider for report finding and discover services purposes. @@ -1483,16 +1505,16 @@ type ReceptorConfiguration struct { // Service_provider_account is the service provider account name. ServiceProviderAccount string `protobuf:"bytes,4,opt,name=service_provider_account,json=serviceProviderAccount,proto3" json:"service_provider_account,omitempty"` // Model_id is the receptor model id - ModelId string `protobuf:"bytes,5,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + ModelId string `protobuf:"bytes,5,opt,name=model_id,json=modelId,proto3" json:"model_id,omitempty"` } func (x *ReceptorConfiguration) Reset() { *x = ReceptorConfiguration{} - mi := &file_receptor_v1_receptor_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *ReceptorConfiguration) String() string { @@ -1503,7 +1525,7 @@ func (*ReceptorConfiguration) ProtoMessage() {} func (x *ReceptorConfiguration) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[16] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1555,7 +1577,10 @@ func (x *ReceptorConfiguration) GetModelId() string { // JobResult reports the result of a receptor request. type JobResult struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Tracer_id is used to track the progress of the receptor request. TracerId string `protobuf:"bytes,1,opt,name=tracer_id,json=tracerId,proto3" json:"tracer_id,omitempty"` // Command is the receptor request that completed. One of "verify", "scan", or "discover" @@ -1565,16 +1590,16 @@ type JobResult struct { // Receptor_object_id is Trustero's receptor record identifier. ReceptorObjectId string `protobuf:"bytes,4,opt,name=receptor_object_id,json=receptorObjectId,proto3" json:"receptor_object_id,omitempty"` // Exceptions contain information about the error like permission missing for the credentials provided. - Exceptions string `protobuf:"bytes,5,opt,name=exceptions,proto3" json:"exceptions,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + Exceptions string `protobuf:"bytes,5,opt,name=exceptions,proto3" json:"exceptions,omitempty"` } func (x *JobResult) Reset() { *x = JobResult{} - mi := &file_receptor_v1_receptor_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *JobResult) String() string { @@ -1585,7 +1610,7 @@ func (*JobResult) ProtoMessage() {} func (x *JobResult) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[17] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1636,18 +1661,21 @@ func (x *JobResult) GetExceptions() string { } type ReportChunk struct { - state protoimpl.MessageState `protogen:"open.v1"` - Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` - IsBoundary bool `protobuf:"varint,2,opt,name=is_boundary,json=isBoundary,proto3" json:"is_boundary,omitempty"` // Whether this chunk contains the boundary - unknownFields protoimpl.UnknownFields + state protoimpl.MessageState sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Content []byte `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"` + IsBoundary bool `protobuf:"varint,2,opt,name=is_boundary,json=isBoundary,proto3" json:"is_boundary,omitempty"` // Whether this chunk contains the boundary } func (x *ReportChunk) Reset() { *x = ReportChunk{} - mi := &file_receptor_v1_receptor_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *ReportChunk) String() string { @@ -1658,7 +1686,7 @@ func (*ReportChunk) ProtoMessage() {} func (x *ReportChunk) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[18] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1689,17 +1717,20 @@ func (x *ReportChunk) GetIsBoundary() bool { // Server response after receiving the whole streamed report type ReportResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` // Could use "ok" or other status information - unknownFields protoimpl.UnknownFields + state protoimpl.MessageState sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` // Could use "ok" or other status information } func (x *ReportResponse) Reset() { *x = ReportResponse{} - mi := &file_receptor_v1_receptor_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) + if protoimpl.UnsafeEnabled { + mi := &file_receptor_v1_receptor_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } func (x *ReportResponse) String() string { @@ -1710,7 +1741,7 @@ func (*ReportResponse) ProtoMessage() {} func (x *ReportResponse) ProtoReflect() protoreflect.Message { mi := &file_receptor_v1_receptor_proto_msgTypes[19] - if x != nil { + if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1734,191 +1765,345 @@ func (x *ReportResponse) GetStatus() string { var File_receptor_v1_receptor_proto protoreflect.FileDescriptor -const file_receptor_v1_receptor_proto_rawDesc = "" + - "\n" + - "\x1areceptor_v1/receptor.proto\x12\vreceptor_v1\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xf8\x01\n" + - "\aFinding\x12#\n" + - "\rreceptor_type\x18\x01 \x01(\tR\freceptorType\x128\n" + - "\x18service_provider_account\x18\x02 \x01(\tR\x16serviceProviderAccount\x126\n" + - "\bentities\x18\x03 \x03(\v2\x1a.receptor_v1.ServiceEntityR\bentities\x123\n" + - "\tevidences\x18\x04 \x03(\v2\x15.receptor_v1.EvidenceR\tevidences\x12!\n" + - "\fdiscovery_id\x18\x05 \x01(\tR\vdiscoveryId\"\xa8\x06\n" + - "\bEvidence\x12\x18\n" + - "\acaption\x18\x01 \x01(\tR\acaption\x12 \n" + - "\vdescription\x18\x02 \x01(\tR\vdescription\x12!\n" + - "\fservice_name\x18\x03 \x01(\tR\vserviceName\x12\x1f\n" + - "\ventity_type\x18\x04 \x01(\tR\n" + - "entityType\x12-\n" + - "\asources\x18\x05 \x03(\v2\x13.receptor_v1.SourceR\asources\x12)\n" + - "\x03doc\x18\x06 \x01(\v2\x15.receptor_v1.DocumentH\x00R\x03doc\x12-\n" + - "\x06struct\x18\a \x01(\v2\x13.receptor_v1.StructH\x00R\x06struct\x12,\n" + - "\x04docs\x18\x12 \x01(\v2\x16.receptor_v1.DocumentsH\x00R\x04docs\x12,\n" + - "\x12service_account_id\x18\b \x01(\tR\x10serviceAccountId\x12\x1a\n" + - "\bcontrols\x18\t \x03(\tR\bcontrols\x12\x1b\n" + - "\tis_manual\x18\n" + - " \x01(\bR\bisManual\x12?\n" + - "\rrelevant_date\x18\v \x01(\v2\x1a.google.protobuf.TimestampR\frelevantDate\x12Q\n" + - "\x14evidence_object_type\x18\f \x01(\x0e2\x1f.receptor_v1.EvidenceObjectTypeR\x12evidenceObjectType\x126\n" + - "\x17summary_generation_mode\x18\x13 \x01(\x05R\x15summaryGenerationMode\x12!\n" + - "\fevidence_key\x18\r \x01(\tR\vevidenceKey\x12\x1a\n" + - "\bpolicies\x18\x0e \x03(\tR\bpolicies\x12\x1d\n" + - "\n" + - "record_ids\x18\x0f \x03(\tR\trecordIds\x12\x1e\n" + - "\n" + - "exceptions\x18\x10 \x01(\tR\n" + - "exceptions\x12#\n" + - "\revidence_link\x18\x11 \x01(\tR\fevidenceLinkB\x0f\n" + - "\revidence_type\"Z\n" + - "\x06Source\x12&\n" + - "\x0fraw_api_request\x18\x01 \x01(\tR\rrawApiRequest\x12(\n" + - "\x10raw_api_response\x18\x02 \x01(\tR\x0erawApiResponse\"8\n" + - "\aSources\x12-\n" + - "\asources\x18\x01 \x03(\v2\x13.receptor_v1.SourceR\asources\"\xb8\x02\n" + - "\bDocument\x12\x12\n" + - "\x04mime\x18\x02 \x01(\tR\x04mime\x12\x12\n" + - "\x04body\x18\x03 \x01(\fR\x04body\x12(\n" + - "\x10stream_file_path\x18\x04 \x01(\tR\x0estreamFilePath\x12\x1b\n" + - "\tfile_name\x18\x05 \x01(\tR\bfileName\x12?\n" + - "\rlast_modified\x18\x06 \x01(\v2\x1a.google.protobuf.TimestampR\flastModified\x12?\n" + - "\bmetadata\x18\a \x03(\v2#.receptor_v1.Document.MetadataEntryR\bmetadata\x1a;\n" + - "\rMetadataEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"6\n" + - "\tDocuments\x12)\n" + - "\x04docs\x18\x01 \x03(\v2\x15.receptor_v1.DocumentR\x04docs\"\xed\x02\n" + - "\x06Struct\x12$\n" + - "\x04rows\x18\x02 \x03(\v2\x10.receptor_v1.RowR\x04rows\x12T\n" + - "\x11col_display_names\x18\x03 \x03(\v2(.receptor_v1.Struct.ColDisplayNamesEntryR\x0fcolDisplayNames\x12*\n" + - "\x11col_display_order\x18\x04 \x03(\tR\x0fcolDisplayOrder\x12;\n" + - "\bcol_tags\x18\x05 \x03(\v2 .receptor_v1.Struct.ColTagsEntryR\acolTags\x1aB\n" + - "\x14ColDisplayNamesEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a:\n" + - "\fColTagsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + - "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xb0\x01\n" + - "\x03Row\x12,\n" + - "\x12entity_instance_id\x18\x01 \x01(\tR\x10entityInstanceId\x12.\n" + - "\x04cols\x18\x02 \x03(\v2\x1a.receptor_v1.Row.ColsEntryR\x04cols\x1aK\n" + - "\tColsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12(\n" + - "\x05value\x18\x02 \x01(\v2\x12.receptor_v1.ValueR\x05value:\x028\x01\"\x88\x04\n" + - "\x05Value\x12#\n" + - "\fdouble_value\x18\x01 \x01(\x01H\x00R\vdoubleValue\x12!\n" + - "\vfloat_value\x18\x02 \x01(\x02H\x00R\n" + - "floatValue\x12!\n" + - "\vint32_value\x18\x03 \x01(\x05H\x00R\n" + - "int32Value\x12!\n" + - "\vint64_value\x18\x04 \x01(\x03H\x00R\n" + - "int64Value\x12#\n" + - "\fuint32_value\x18\x05 \x01(\rH\x00R\vuint32Value\x12#\n" + - "\fuint64_value\x18\x06 \x01(\x04H\x00R\vuint64Value\x12\x1f\n" + - "\n" + - "bool_value\x18\a \x01(\bH\x00R\tboolValue\x12#\n" + - "\fstring_value\x18\b \x01(\tH\x00R\vstringValue\x12E\n" + - "\x0ftimestamp_value\x18\t \x01(\v2\x1a.google.protobuf.TimestampH\x00R\x0etimestampValue\x12E\n" + - "\x11string_list_value\x18\n" + - " \x01(\v2\x17.receptor_v1.StringListH\x00R\x0fstringListValue\x12E\n" + - "\x11struct_list_value\x18\v \x01(\v2\x17.receptor_v1.StructListH\x00R\x0fstructListValueB\f\n" + - "\n" + - "value_type\"$\n" + - "\n" + - "StringList\x12\x16\n" + - "\x06values\x18\x01 \x03(\tR\x06values\"?\n" + - "\n" + - "StructList\x121\n" + - "\x06values\x18\x01 \x03(\v2\x19.receptor_v1.StructStructR\x06values\"\x9c\x01\n" + - "\fStructStruct\x12=\n" + - "\x06fields\x18\x01 \x03(\v2%.receptor_v1.StructStruct.FieldsEntryR\x06fields\x1aM\n" + - "\vFieldsEntry\x12\x10\n" + - "\x03key\x18\x01 \x01(\tR\x03key\x12(\n" + - "\x05value\x18\x02 \x01(\v2\x12.receptor_v1.ValueR\x05value:\x028\x01\"\xa8\x01\n" + - "\x0fServiceEntities\x12#\n" + - "\rreceptor_type\x18\x01 \x01(\tR\freceptorType\x128\n" + - "\x18service_provider_account\x18\x02 \x01(\tR\x16serviceProviderAccount\x126\n" + - "\bentities\x18\x03 \x03(\v2\x1a.receptor_v1.ServiceEntityR\bentities\"\xe1\x01\n" + - "\rServiceEntity\x12!\n" + - "\fservice_name\x18\x01 \x01(\tR\vserviceName\x12\x1f\n" + - "\ventity_type\x18\x02 \x01(\tR\n" + - "entityType\x120\n" + - "\x14entity_instance_name\x18\x03 \x01(\tR\x12entityInstanceName\x12,\n" + - "\x12entity_instance_id\x18\x04 \x01(\tR\x10entityInstanceId\x12,\n" + - "\x12service_account_id\x18\x05 \x01(\tR\x10serviceAccountId\"\xc4\x01\n" + - "\n" + - "Credential\x12,\n" + - "\x12receptor_object_id\x18\x01 \x01(\tR\x10receptorObjectId\x12\x1e\n" + - "\n" + - "credential\x18\x02 \x01(\tR\n" + - "credential\x12.\n" + - "\x13is_credential_valid\x18\x03 \x01(\bR\x11isCredentialValid\x12\x18\n" + - "\amessage\x18\x04 \x01(\tR\amessage\x12\x1e\n" + - "\n" + - "exceptions\x18\x05 \x01(\tR\n" + - "exceptions\";\n" + - "\vReceptorOID\x12,\n" + - "\x12receptor_object_id\x18\x01 \x01(\tR\x10receptorObjectId\"\xd2\x01\n" + - "\x15ReceptorConfiguration\x12,\n" + - "\x12receptor_object_id\x18\x01 \x01(\tR\x10receptorObjectId\x12\x1e\n" + - "\n" + - "credential\x18\x02 \x01(\tR\n" + - "credential\x12\x16\n" + - "\x06config\x18\x03 \x01(\tR\x06config\x128\n" + - "\x18service_provider_account\x18\x04 \x01(\tR\x16serviceProviderAccount\x12\x19\n" + - "\bmodel_id\x18\x05 \x01(\tR\amodelId\"\xa8\x01\n" + - "\tJobResult\x12\x1b\n" + - "\ttracer_id\x18\x01 \x01(\tR\btracerId\x12\x18\n" + - "\acommand\x18\x02 \x01(\tR\acommand\x12\x16\n" + - "\x06result\x18\x03 \x01(\tR\x06result\x12,\n" + - "\x12receptor_object_id\x18\x04 \x01(\tR\x10receptorObjectId\x12\x1e\n" + - "\n" + - "exceptions\x18\x05 \x01(\tR\n" + - "exceptions\"H\n" + - "\vReportChunk\x12\x18\n" + - "\acontent\x18\x01 \x01(\fR\acontent\x12\x1f\n" + - "\vis_boundary\x18\x02 \x01(\bR\n" + - "isBoundary\"(\n" + - "\x0eReportResponse\x12\x16\n" + - "\x06status\x18\x01 \x01(\tR\x06status*\xeb\x02\n" + - "\x12EvidenceObjectType\x12\r\n" + - "\tEVIDENCES\x10\x00\x12\f\n" + - "\bCONTROLS\x10\x01\x12\f\n" + - "\bPOLICIES\x10\x02\x12\x13\n" + - "\x0fPOLICY_DOCUMENT\x10\x03\x12\x1a\n" + - "\x16CONTROL_POLICY_MAPPING\x10\x04\x12\x16\n" + - "\x12CONTROL_PROCEDURES\x10\x05\x12%\n" + - "!CONTROL_CONTROL_PROCEDURE_MAPPING\x10\x06\x12\x1c\n" + - "\x18CONTROL_EVIDENCE_MAPPING\x10\a\x12\x12\n" + - "\x0eEVIDENCES_META\x10\b\x12\"\n" + - "\x1ePOLICY_DOCUMENT_POLICY_MAPPING\x10\t\x12\x18\n" + - "\x14POLICY_DOCUMENT_META\x10\n" + - "\x12&\n" + - "\"CONTROL_PROCEDURE_EVIDENCE_MAPPING\x10\v\x12\"\n" + - "\x1eWORKFLOW_TASK_EVIDENCE_MAPPING\x10\f2\xf4\x03\n" + - "\bReceptor\x12;\n" + - "\bVerified\x12\x17.receptor_v1.Credential\x1a\x16.google.protobuf.Empty\x12P\n" + - "\x10GetConfiguration\x12\x18.receptor_v1.ReceptorOID\x1a\".receptor_v1.ReceptorConfiguration\x12H\n" + - "\n" + - "Discovered\x12\x1c.receptor_v1.ServiceEntities\x1a\x1c.google.protobuf.StringValue\x12<\n" + - "\x06Report\x12\x14.receptor_v1.Finding\x1a\x1c.google.protobuf.StringValue\x128\n" + - "\x06Notify\x12\x16.receptor_v1.JobResult\x1a\x16.google.protobuf.Empty\x12N\n" + - "\x10SetConfiguration\x12\".receptor_v1.ReceptorConfiguration\x1a\x16.google.protobuf.Empty\x12G\n" + - "\fStreamReport\x12\x18.receptor_v1.ReportChunk\x1a\x1b.receptor_v1.ReportResponse(\x01B(Z&github.com/trustero/api/go/receptor_v1b\x06proto3" +var file_receptor_v1_receptor_proto_rawDesc = []byte{ + 0x0a, 0x1a, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2f, 0x72, 0x65, + 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x72, 0x65, + 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf8, 0x01, 0x0a, 0x07, 0x46, 0x69, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, + 0x70, 0x74, 0x6f, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x09, 0x65, 0x76, + 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x69, 0x64, + 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x12, + 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, + 0x49, 0x64, 0x22, 0xa8, 0x06, 0x0a, 0x08, 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x61, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x12, 0x21, 0x0a, 0x0c, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x2d, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x29, + 0x0a, 0x03, 0x64, 0x6f, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x65, + 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x48, 0x00, 0x52, 0x03, 0x64, 0x6f, 0x63, 0x12, 0x2d, 0x0a, 0x06, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x65, 0x63, 0x65, + 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, + 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x64, 0x6f, 0x63, 0x73, + 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, + 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x48, 0x00, + 0x52, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, + 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, + 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x6d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x12, 0x3f, 0x0a, + 0x0d, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x65, 0x12, 0x51, + 0x0a, 0x14, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x72, + 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x45, 0x76, 0x69, 0x64, 0x65, + 0x6e, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x12, 0x65, + 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x36, 0x0a, 0x17, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x67, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x15, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x76, 0x69, + 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, + 0x63, 0x6f, 0x72, 0x64, 0x49, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x63, 0x65, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x63, + 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x76, 0x69, 0x64, 0x65, + 0x6e, 0x63, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x42, 0x0f, 0x0a, 0x0d, + 0x65, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, + 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x72, 0x61, 0x77, 0x5f, 0x61, + 0x70, 0x69, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x72, 0x61, 0x77, 0x41, 0x70, 0x69, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x28, 0x0a, 0x10, 0x72, 0x61, 0x77, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x61, 0x77, 0x41, 0x70, + 0x69, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x0a, 0x07, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, + 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x22, 0xb8, 0x02, 0x0a, 0x08, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6d, 0x69, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x46, 0x69, 0x6c, 0x65, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x3f, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x12, 0x3f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x07, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, + 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x36, + 0x0a, 0x09, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x64, + 0x6f, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x65, 0x63, 0x65, + 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x52, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x22, 0xed, 0x02, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x12, 0x24, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x10, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x6f, + 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x54, 0x0a, 0x11, 0x63, 0x6f, 0x6c, 0x5f, 0x64, + 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6c, 0x44, 0x69, 0x73, 0x70, 0x6c, + 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x63, 0x6f, + 0x6c, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2a, 0x0a, + 0x11, 0x63, 0x6f, 0x6c, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x6f, 0x6c, 0x44, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x08, 0x63, 0x6f, 0x6c, + 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x65, + 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x2e, 0x43, 0x6f, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x63, + 0x6f, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x43, 0x6f, 0x6c, 0x44, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x43, 0x6f, + 0x6c, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb0, 0x01, 0x0a, 0x03, 0x52, 0x6f, 0x77, 0x12, 0x2c, + 0x0a, 0x12, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x74, 0x69, + 0x74, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x04, + 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x65, 0x63, + 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x77, 0x2e, 0x43, 0x6f, 0x6c, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x1a, 0x4b, 0x0a, 0x09, + 0x43, 0x6f, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x65, 0x63, + 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x88, 0x04, 0x0a, 0x05, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6f, 0x75, + 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x66, 0x6c, 0x6f, 0x61, + 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, + 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x69, + 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, + 0x0a, 0x0b, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x75, 0x69, 0x6e, 0x74, 0x33, + 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, + 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, + 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62, + 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, + 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x45, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, + 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x45, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x65, 0x63, + 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x24, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, + 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x3f, 0x0a, 0x0a, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, + 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x9c, 0x01, 0x0a, 0x0c, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x06, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x72, + 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x4d, 0x0a, 0x0b, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x65, + 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa8, 0x01, 0x0a, 0x0f, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, + 0x0a, 0x0d, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x36, 0x0a, + 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x08, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x65, + 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, + 0x12, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc4, 0x01, 0x0a, 0x0a, 0x43, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, + 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x63, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x73, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x3b, 0x0a, 0x0b, 0x52, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x4f, 0x49, 0x44, 0x12, + 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, + 0x65, 0x70, 0x74, 0x6f, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0xd2, 0x01, + 0x0a, 0x15, 0x52, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x70, + 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, + 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x16, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x49, 0x64, 0x22, 0xa8, 0x01, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x63, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, + 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x63, + 0x65, 0x70, 0x74, 0x6f, 0x72, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, + 0x0a, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x48, 0x0a, + 0x0b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x18, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x42, + 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x22, 0x28, 0x0a, 0x0e, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2a, 0xeb, 0x02, 0x0a, 0x12, 0x45, 0x76, 0x69, 0x64, 0x65, 0x6e, 0x63, 0x65, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x45, 0x56, 0x49, 0x44, + 0x45, 0x4e, 0x43, 0x45, 0x53, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x52, + 0x4f, 0x4c, 0x53, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x49, 0x45, + 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x44, 0x4f, + 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4e, 0x54, + 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, + 0x4e, 0x47, 0x10, 0x04, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, + 0x50, 0x52, 0x4f, 0x43, 0x45, 0x44, 0x55, 0x52, 0x45, 0x53, 0x10, 0x05, 0x12, 0x25, 0x0a, 0x21, + 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, + 0x50, 0x52, 0x4f, 0x43, 0x45, 0x44, 0x55, 0x52, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, + 0x47, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x45, + 0x56, 0x49, 0x44, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, + 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x56, 0x49, 0x44, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x5f, 0x4d, + 0x45, 0x54, 0x41, 0x10, 0x08, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, + 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, + 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x4f, 0x4c, + 0x49, 0x43, 0x59, 0x5f, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x54, + 0x41, 0x10, 0x0a, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, + 0x52, 0x4f, 0x43, 0x45, 0x44, 0x55, 0x52, 0x45, 0x5f, 0x45, 0x56, 0x49, 0x44, 0x45, 0x4e, 0x43, + 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x0b, 0x12, 0x22, 0x0a, 0x1e, 0x57, + 0x4f, 0x52, 0x4b, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x45, 0x56, 0x49, + 0x44, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x0c, 0x32, + 0xf4, 0x03, 0x0a, 0x08, 0x52, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x3b, 0x0a, 0x08, + 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x17, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, + 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x50, 0x0a, 0x10, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x2e, + 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, + 0x70, 0x74, 0x6f, 0x72, 0x4f, 0x49, 0x44, 0x1a, 0x22, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, + 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0a, 0x44, + 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x65, 0x64, 0x12, 0x1c, 0x2e, 0x72, 0x65, 0x63, 0x65, + 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, + 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, + 0x14, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x46, 0x69, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x1a, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x12, 0x16, 0x2e, + 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x4a, 0x6f, 0x62, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x4e, 0x0a, + 0x10, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x22, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x47, 0x0a, + 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x18, 0x2e, + 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x1b, 0x2e, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, + 0x6f, 0x72, 0x5f, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x72, 0x6f, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x65, 0x63, 0x65, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x76, 0x31, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} var ( file_receptor_v1_receptor_proto_rawDescOnce sync.Once - file_receptor_v1_receptor_proto_rawDescData []byte + file_receptor_v1_receptor_proto_rawDescData = file_receptor_v1_receptor_proto_rawDesc ) func file_receptor_v1_receptor_proto_rawDescGZIP() []byte { file_receptor_v1_receptor_proto_rawDescOnce.Do(func() { - file_receptor_v1_receptor_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_receptor_v1_receptor_proto_rawDesc), len(file_receptor_v1_receptor_proto_rawDesc))) + file_receptor_v1_receptor_proto_rawDescData = protoimpl.X.CompressGZIP(file_receptor_v1_receptor_proto_rawDescData) }) return file_receptor_v1_receptor_proto_rawDescData } var file_receptor_v1_receptor_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_receptor_v1_receptor_proto_msgTypes = make([]protoimpl.MessageInfo, 25) -var file_receptor_v1_receptor_proto_goTypes = []any{ +var file_receptor_v1_receptor_proto_goTypes = []interface{}{ (EvidenceObjectType)(0), // 0: receptor_v1.EvidenceObjectType (*Finding)(nil), // 1: receptor_v1.Finding (*Evidence)(nil), // 2: receptor_v1.Evidence @@ -2000,12 +2185,254 @@ func file_receptor_v1_receptor_proto_init() { if File_receptor_v1_receptor_proto != nil { return } - file_receptor_v1_receptor_proto_msgTypes[1].OneofWrappers = []any{ + if !protoimpl.UnsafeEnabled { + file_receptor_v1_receptor_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Finding); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Evidence); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Source); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Sources); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Document); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Documents); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Struct); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Row); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Value); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StringList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StructList); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StructStruct); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ServiceEntities); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ServiceEntity); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Credential); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReceptorOID); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReceptorConfiguration); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JobResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReportChunk); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_receptor_v1_receptor_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReportResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_receptor_v1_receptor_proto_msgTypes[1].OneofWrappers = []interface{}{ (*Evidence_Doc)(nil), (*Evidence_Struct)(nil), (*Evidence_Docs)(nil), } - file_receptor_v1_receptor_proto_msgTypes[8].OneofWrappers = []any{ + file_receptor_v1_receptor_proto_msgTypes[8].OneofWrappers = []interface{}{ (*Value_DoubleValue)(nil), (*Value_FloatValue)(nil), (*Value_Int32Value)(nil), @@ -2022,7 +2449,7 @@ func file_receptor_v1_receptor_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_receptor_v1_receptor_proto_rawDesc), len(file_receptor_v1_receptor_proto_rawDesc)), + RawDescriptor: file_receptor_v1_receptor_proto_rawDesc, NumEnums: 1, NumMessages: 25, NumExtensions: 0, @@ -2034,6 +2461,7 @@ func file_receptor_v1_receptor_proto_init() { MessageInfos: file_receptor_v1_receptor_proto_msgTypes, }.Build() File_receptor_v1_receptor_proto = out.File + file_receptor_v1_receptor_proto_rawDesc = nil file_receptor_v1_receptor_proto_goTypes = nil file_receptor_v1_receptor_proto_depIdxs = nil }