diff --git a/docs/index-openapi.json b/docs/index-openapi.json index e1ba5df..b448b96 100644 --- a/docs/index-openapi.json +++ b/docs/index-openapi.json @@ -144,6 +144,42 @@ }, "type": "object" }, + "elephant.index.GetFlatDocumentRequest": { + "properties": { + "status": { + "description": "Status name used to select the document version to fetch, as an alternative to version. Optional. Ignored when stored is set.", + "type": "string" + }, + "stored": { + "description": "Stored returns the flattened document as it is currently stored in the active index instead of converting the current version from the repository. This reflects the indexed state, and is therefore subject to the eventual consistency of the index.", + "type": "boolean" + }, + "uuid": { + "description": "UUID of the document to flatten.", + "type": "string" + }, + "version": { + "description": "Version of the document to fetch. Optional, defaults to the current version. Ignored when stored is set.", + "type": "integer" + } + }, + "type": "object" + }, + "elephant.index.GetFlatDocumentResponse": { + "properties": { + "document": { + "$ref": "#/components/schemas/newsdoc.Document" + }, + "fields": { + "additionalProperties": { + "$ref": "#/components/schemas/elephant.index.FieldValuesV1" + }, + "description": "Fields is the flattened representation of the document, keyed by field name.", + "type": "object" + } + }, + "type": "object" + }, "elephant.index.GetMappingsRequestV1": { "properties": { "document_type": { @@ -1319,6 +1355,44 @@ ] } }, + "/twirp/elephant.index.SearchV1/GetFlatDocument": { + "post": { + "description": "GetFlatDocument fetches a document directly from the repository and returns it in the flattened representation used for indexing. This bypasses OpenSearch, so the result always reflects the current state of the repository without the eventual consistency of the index.", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/elephant.index.GetFlatDocumentRequest" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/elephant.index.GetFlatDocumentResponse" + } + } + }, + "description": "Method response" + }, + "default": { + "description": "" + } + }, + "security": [ + { + "bearer": [] + } + ], + "summary": "GetFlatDocument", + "tags": [ + "SearchV1" + ] + } + }, "/twirp/elephant.index.SearchV1/GetMappings": { "post": { "requestBody": { diff --git a/index/service.pb.go b/index/service.pb.go index 4498870..c72cfa9 100644 --- a/index/service.pb.go +++ b/index/service.pb.go @@ -2734,6 +2734,138 @@ func (x *FieldValuesV1) GetValues() []string { return nil } +type GetFlatDocumentRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // UUID of the document to flatten. + Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + // Version of the document to fetch. Optional, defaults to the current + // version. Ignored when stored is set. + Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + // Status name used to select the document version to fetch, as an alternative + // to version. Optional. Ignored when stored is set. + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` + // Stored returns the flattened document as it is currently stored in the + // active index instead of converting the current version from the + // repository. This reflects the indexed state, and is therefore subject to + // the eventual consistency of the index. + Stored bool `protobuf:"varint,4,opt,name=stored,proto3" json:"stored,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetFlatDocumentRequest) Reset() { + *x = GetFlatDocumentRequest{} + mi := &file_index_service_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetFlatDocumentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFlatDocumentRequest) ProtoMessage() {} + +func (x *GetFlatDocumentRequest) ProtoReflect() protoreflect.Message { + mi := &file_index_service_proto_msgTypes[42] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFlatDocumentRequest.ProtoReflect.Descriptor instead. +func (*GetFlatDocumentRequest) Descriptor() ([]byte, []int) { + return file_index_service_proto_rawDescGZIP(), []int{42} +} + +func (x *GetFlatDocumentRequest) GetUuid() string { + if x != nil { + return x.Uuid + } + return "" +} + +func (x *GetFlatDocumentRequest) GetVersion() int64 { + if x != nil { + return x.Version + } + return 0 +} + +func (x *GetFlatDocumentRequest) GetStatus() string { + if x != nil { + return x.Status + } + return "" +} + +func (x *GetFlatDocumentRequest) GetStored() bool { + if x != nil { + return x.Stored + } + return false +} + +type GetFlatDocumentResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Fields is the flattened representation of the document, keyed by field name. + Fields map[string]*FieldValuesV1 `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + // Document that was flattened. Only populated when converting from the + // repository, not when returning the stored document. + Document *newsdoc.Document `protobuf:"bytes,2,opt,name=document,proto3" json:"document,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetFlatDocumentResponse) Reset() { + *x = GetFlatDocumentResponse{} + mi := &file_index_service_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetFlatDocumentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetFlatDocumentResponse) ProtoMessage() {} + +func (x *GetFlatDocumentResponse) ProtoReflect() protoreflect.Message { + mi := &file_index_service_proto_msgTypes[43] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetFlatDocumentResponse.ProtoReflect.Descriptor instead. +func (*GetFlatDocumentResponse) Descriptor() ([]byte, []int) { + return file_index_service_proto_rawDescGZIP(), []int{43} +} + +func (x *GetFlatDocumentResponse) GetFields() map[string]*FieldValuesV1 { + if x != nil { + return x.Fields + } + return nil +} + +func (x *GetFlatDocumentResponse) GetDocument() *newsdoc.Document { + if x != nil { + return x.Document + } + return nil +} + type GetMappingsRequestV1 struct { state protoimpl.MessageState `protogen:"open.v1"` DocumentType string `protobuf:"bytes,1,opt,name=document_type,json=documentType,proto3" json:"document_type,omitempty"` @@ -2743,7 +2875,7 @@ type GetMappingsRequestV1 struct { func (x *GetMappingsRequestV1) Reset() { *x = GetMappingsRequestV1{} - mi := &file_index_service_proto_msgTypes[42] + mi := &file_index_service_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2755,7 +2887,7 @@ func (x *GetMappingsRequestV1) String() string { func (*GetMappingsRequestV1) ProtoMessage() {} func (x *GetMappingsRequestV1) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[42] + mi := &file_index_service_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2768,7 +2900,7 @@ func (x *GetMappingsRequestV1) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMappingsRequestV1.ProtoReflect.Descriptor instead. func (*GetMappingsRequestV1) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{42} + return file_index_service_proto_rawDescGZIP(), []int{44} } func (x *GetMappingsRequestV1) GetDocumentType() string { @@ -2787,7 +2919,7 @@ type GetMappingsResponseV1 struct { func (x *GetMappingsResponseV1) Reset() { *x = GetMappingsResponseV1{} - mi := &file_index_service_proto_msgTypes[43] + mi := &file_index_service_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2799,7 +2931,7 @@ func (x *GetMappingsResponseV1) String() string { func (*GetMappingsResponseV1) ProtoMessage() {} func (x *GetMappingsResponseV1) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[43] + mi := &file_index_service_proto_msgTypes[45] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2812,7 +2944,7 @@ func (x *GetMappingsResponseV1) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMappingsResponseV1.ProtoReflect.Descriptor instead. func (*GetMappingsResponseV1) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{43} + return file_index_service_proto_rawDescGZIP(), []int{45} } func (x *GetMappingsResponseV1) GetProperties() []*MappingPropertyV1 { @@ -2838,7 +2970,7 @@ type MappingPropertyV1 struct { func (x *MappingPropertyV1) Reset() { *x = MappingPropertyV1{} - mi := &file_index_service_proto_msgTypes[44] + mi := &file_index_service_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2850,7 +2982,7 @@ func (x *MappingPropertyV1) String() string { func (*MappingPropertyV1) ProtoMessage() {} func (x *MappingPropertyV1) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[44] + mi := &file_index_service_proto_msgTypes[46] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2863,7 +2995,7 @@ func (x *MappingPropertyV1) ProtoReflect() protoreflect.Message { // Deprecated: Use MappingPropertyV1.ProtoReflect.Descriptor instead. func (*MappingPropertyV1) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{44} + return file_index_service_proto_rawDescGZIP(), []int{46} } func (x *MappingPropertyV1) GetName() string { @@ -2907,7 +3039,7 @@ type MappingFieldV1 struct { func (x *MappingFieldV1) Reset() { *x = MappingFieldV1{} - mi := &file_index_service_proto_msgTypes[45] + mi := &file_index_service_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2919,7 +3051,7 @@ func (x *MappingFieldV1) String() string { func (*MappingFieldV1) ProtoMessage() {} func (x *MappingFieldV1) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[45] + mi := &file_index_service_proto_msgTypes[47] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2932,7 +3064,7 @@ func (x *MappingFieldV1) ProtoReflect() protoreflect.Message { // Deprecated: Use MappingFieldV1.ProtoReflect.Descriptor instead. func (*MappingFieldV1) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{45} + return file_index_service_proto_rawDescGZIP(), []int{47} } func (x *MappingFieldV1) GetName() string { @@ -2967,7 +3099,7 @@ type PollSubscriptionRequest struct { func (x *PollSubscriptionRequest) Reset() { *x = PollSubscriptionRequest{} - mi := &file_index_service_proto_msgTypes[46] + mi := &file_index_service_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2979,7 +3111,7 @@ func (x *PollSubscriptionRequest) String() string { func (*PollSubscriptionRequest) ProtoMessage() {} func (x *PollSubscriptionRequest) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[46] + mi := &file_index_service_proto_msgTypes[48] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2992,7 +3124,7 @@ func (x *PollSubscriptionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PollSubscriptionRequest.ProtoReflect.Descriptor instead. func (*PollSubscriptionRequest) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{46} + return file_index_service_proto_rawDescGZIP(), []int{48} } func (x *PollSubscriptionRequest) GetSubscriptions() []*SubscriptionReference { @@ -3035,7 +3167,7 @@ type SubscriptionReference struct { func (x *SubscriptionReference) Reset() { *x = SubscriptionReference{} - mi := &file_index_service_proto_msgTypes[47] + mi := &file_index_service_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3047,7 +3179,7 @@ func (x *SubscriptionReference) String() string { func (*SubscriptionReference) ProtoMessage() {} func (x *SubscriptionReference) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[47] + mi := &file_index_service_proto_msgTypes[49] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3060,7 +3192,7 @@ func (x *SubscriptionReference) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionReference.ProtoReflect.Descriptor instead. func (*SubscriptionReference) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{47} + return file_index_service_proto_rawDescGZIP(), []int{49} } func (x *SubscriptionReference) GetId() int64 { @@ -3089,7 +3221,7 @@ type PollSubscriptionResponse struct { func (x *PollSubscriptionResponse) Reset() { *x = PollSubscriptionResponse{} - mi := &file_index_service_proto_msgTypes[48] + mi := &file_index_service_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3101,7 +3233,7 @@ func (x *PollSubscriptionResponse) String() string { func (*PollSubscriptionResponse) ProtoMessage() {} func (x *PollSubscriptionResponse) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[48] + mi := &file_index_service_proto_msgTypes[50] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3114,7 +3246,7 @@ func (x *PollSubscriptionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PollSubscriptionResponse.ProtoReflect.Descriptor instead. func (*PollSubscriptionResponse) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{48} + return file_index_service_proto_rawDescGZIP(), []int{50} } func (x *PollSubscriptionResponse) GetResult() []*SubscriptionPollResult { @@ -3143,7 +3275,7 @@ type SubscriptionPollResult struct { func (x *SubscriptionPollResult) Reset() { *x = SubscriptionPollResult{} - mi := &file_index_service_proto_msgTypes[49] + mi := &file_index_service_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3155,7 +3287,7 @@ func (x *SubscriptionPollResult) String() string { func (*SubscriptionPollResult) ProtoMessage() {} func (x *SubscriptionPollResult) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[49] + mi := &file_index_service_proto_msgTypes[51] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3168,7 +3300,7 @@ func (x *SubscriptionPollResult) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionPollResult.ProtoReflect.Descriptor instead. func (*SubscriptionPollResult) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{49} + return file_index_service_proto_rawDescGZIP(), []int{51} } func (x *SubscriptionPollResult) GetSubscription() *SubscriptionReference { @@ -3198,7 +3330,7 @@ type SubscriptionItem struct { func (x *SubscriptionItem) Reset() { *x = SubscriptionItem{} - mi := &file_index_service_proto_msgTypes[50] + mi := &file_index_service_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3210,7 +3342,7 @@ func (x *SubscriptionItem) String() string { func (*SubscriptionItem) ProtoMessage() {} func (x *SubscriptionItem) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[50] + mi := &file_index_service_proto_msgTypes[52] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3223,7 +3355,7 @@ func (x *SubscriptionItem) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionItem.ProtoReflect.Descriptor instead. func (*SubscriptionItem) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{50} + return file_index_service_proto_rawDescGZIP(), []int{52} } func (x *SubscriptionItem) GetId() string { @@ -3270,7 +3402,7 @@ type EndSubscriptionRequest struct { func (x *EndSubscriptionRequest) Reset() { *x = EndSubscriptionRequest{} - mi := &file_index_service_proto_msgTypes[51] + mi := &file_index_service_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3282,7 +3414,7 @@ func (x *EndSubscriptionRequest) String() string { func (*EndSubscriptionRequest) ProtoMessage() {} func (x *EndSubscriptionRequest) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[51] + mi := &file_index_service_proto_msgTypes[53] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3295,7 +3427,7 @@ func (x *EndSubscriptionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EndSubscriptionRequest.ProtoReflect.Descriptor instead. func (*EndSubscriptionRequest) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{51} + return file_index_service_proto_rawDescGZIP(), []int{53} } func (x *EndSubscriptionRequest) GetId() int64 { @@ -3313,7 +3445,7 @@ type EndSubscriptionResponse struct { func (x *EndSubscriptionResponse) Reset() { *x = EndSubscriptionResponse{} - mi := &file_index_service_proto_msgTypes[52] + mi := &file_index_service_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3325,7 +3457,7 @@ func (x *EndSubscriptionResponse) String() string { func (*EndSubscriptionResponse) ProtoMessage() {} func (x *EndSubscriptionResponse) ProtoReflect() protoreflect.Message { - mi := &file_index_service_proto_msgTypes[52] + mi := &file_index_service_proto_msgTypes[54] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3338,7 +3470,7 @@ func (x *EndSubscriptionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EndSubscriptionResponse.ProtoReflect.Descriptor instead. func (*EndSubscriptionResponse) Descriptor() ([]byte, []int) { - return file_index_service_proto_rawDescGZIP(), []int{52} + return file_index_service_proto_rawDescGZIP(), []int{54} } var File_index_service_proto protoreflect.FileDescriptor @@ -3663,181 +3795,210 @@ var file_index_service_proto_rawDesc = []byte{ 0x73, 0x56, 0x31, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x27, 0x0a, 0x0d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x56, 0x31, 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, 0x3b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x31, 0x12, - 0x23, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x54, 0x79, 0x70, 0x65, 0x22, 0x5a, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x31, 0x12, 0x41, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x79, 0x56, 0x31, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x22, 0x87, 0x01, 0x0a, 0x11, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x79, 0x56, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x76, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x46, 0x6c, + 0x61, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x22, + 0xef, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x06, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x65, 0x6c, + 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, + 0x46, 0x6c, 0x61, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x2d, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6e, 0x65, 0x77, + 0x73, 0x64, 0x6f, 0x63, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x58, 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, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, + 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x56, 0x31, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x3b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x31, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x5a, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x31, 0x12, 0x41, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x65, 0x6c, + 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x31, 0x52, 0x0a, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x11, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x56, 0x31, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x36, 0x0a, 0x06, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, + 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x31, 0x52, 0x06, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x22, 0x38, 0x0a, 0x0e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x46, + 0x69, 0x65, 0x6c, 0x64, 0x56, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x12, 0x36, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x04, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x56, 0x31, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x22, 0x38, 0x0a, 0x0e, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x31, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x22, 0xcd, 0x01, 0x0a, 0x17, 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x4b, 0x0a, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, - 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, - 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, 0x78, 0x57, 0x61, 0x69, 0x74, 0x4d, 0x73, 0x12, 0x24, 0x0a, - 0x0e, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x61, - 0x79, 0x4d, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6f, 0x6e, - 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, - 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x3f, 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, - 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, - 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, 0x8f, 0x01, 0x0a, 0x18, 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x50, 0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x15, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x03, 0x52, 0x14, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x49, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, - 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, - 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, - 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xcd, + 0x01, 0x0a, 0x17, 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4b, 0x0a, 0x0d, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x77, + 0x61, 0x69, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x6d, 0x61, + 0x78, 0x57, 0x61, 0x69, 0x74, 0x4d, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x61, 0x74, 0x63, 0x68, + 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0c, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x4d, 0x73, 0x12, 0x1f, 0x0a, + 0x0b, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0a, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x3f, + 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6f, 0x72, 0x22, + 0x8f, 0x01, 0x0a, 0x18, 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0xa7, 0x03, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, - 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x44, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x6c, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x15, + 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x14, 0x75, 0x6e, 0x6b, + 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x9b, 0x01, 0x0a, 0x16, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x50, 0x6f, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x49, 0x0a, 0x0c, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, + 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, + 0xa7, 0x03, 0x0a, 0x10, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x44, 0x0a, 0x06, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6c, 0x65, + 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x46, 0x69, 0x65, + 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, + 0x12, 0x44, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, - 0x65, 0x6d, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, - 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x08, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x6e, 0x65, 0x77, 0x73, 0x64, 0x6f, 0x63, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x58, 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, 0x33, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6c, - 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x56, 0x31, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x0b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, + 0x65, 0x6d, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6e, 0x65, 0x77, 0x73, 0x64, + 0x6f, 0x63, 0x2e, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x58, 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, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x56, 0x31, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x28, 0x0a, 0x16, 0x45, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x45, 0x6e, 0x64, - 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x50, 0x0a, 0x0d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, - 0x0e, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, - 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, - 0x42, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x32, 0xff, 0x05, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x62, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, - 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, - 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0c, 0x4c, 0x69, 0x73, - 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x23, 0x2e, 0x65, 0x6c, 0x65, 0x70, - 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, + 0x65, 0x73, 0x56, 0x31, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x58, 0x0a, 0x0b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x56, 0x31, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x28, 0x0a, 0x16, 0x45, 0x6e, 0x64, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x19, 0x0a, 0x17, 0x45, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x50, + 0x0a, 0x0d, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, + 0x16, 0x0a, 0x12, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x03, + 0x32, 0xff, 0x05, 0x0a, 0x0a, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, + 0x62, 0x0a, 0x0f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x12, 0x26, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x6c, 0x65, + 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x52, 0x65, 0x67, 0x69, + 0x73, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x23, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, + 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6c, + 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, + 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x12, + 0x24, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x65, 0x6c, - 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x53, 0x65, 0x74, 0x12, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, - 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, - 0x78, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x6c, - 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x07, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1e, - 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, 0x12, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x5f, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x12, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, - 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, - 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x5c, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, - 0x73, 0x12, 0x24, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, + 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, + 0x65, 0x78, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, + 0x07, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1e, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, + 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, + 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, + 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0e, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x2e, 0x65, 0x6c, + 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x50, 0x61, 0x72, + 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, + 0x64, 0x65, 0x78, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x0d, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x65, 0x6c, + 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, - 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, - 0x65, 0x78, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, - 0x0a, 0x11, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x28, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x68, 0x0a, 0x11, 0x53, 0x65, 0x74, 0x49, + 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x28, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xd3, 0x03, 0x0a, 0x08, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x56, 0x31, 0x12, 0x48, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1e, - 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x31, 0x1a, 0x1f, - 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x31, 0x12, - 0x56, 0x0a, 0x0b, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x22, - 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, - 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x24, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, - 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x31, 0x1a, 0x25, 0x2e, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, + 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, + 0x78, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x32, 0xb7, 0x04, 0x0a, 0x08, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x56, 0x31, 0x12, + 0x48, 0x0a, 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1e, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, + 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x31, 0x1a, 0x1f, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, + 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, 0x31, 0x12, 0x56, 0x0a, 0x0b, 0x4d, 0x75, 0x6c, + 0x74, 0x69, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x22, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, + 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x65, + 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4d, 0x75, + 0x6c, 0x74, 0x69, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x62, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x44, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x26, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x74, 0x44, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, - 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x56, 0x31, 0x12, 0x65, 0x0a, 0x10, 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, - 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, 0x62, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x28, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, - 0x78, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0f, 0x45, 0x6e, - 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, - 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x45, - 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, - 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x45, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x24, - 0x5a, 0x22, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x74, 0x61, - 0x62, 0x2f, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x46, 0x6c, 0x61, 0x74, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, + 0x69, 0x6e, 0x67, 0x73, 0x12, 0x24, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, + 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x56, 0x31, 0x1a, 0x25, 0x2e, 0x65, 0x6c, 0x65, + 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x56, + 0x31, 0x12, 0x65, 0x0a, 0x10, 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, + 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, + 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, + 0x50, 0x6f, 0x6c, 0x6c, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x0f, 0x45, 0x6e, 0x64, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x65, 0x6c, + 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x45, 0x6e, 0x64, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2e, 0x69, + 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x45, 0x6e, 0x64, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x24, 0x5a, 0x22, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x74, 0x61, 0x62, 0x2f, + 0x65, 0x6c, 0x65, 0x70, 0x68, 0x61, 0x6e, 0x74, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3853,7 +4014,7 @@ func file_index_service_proto_rawDescGZIP() []byte { } var file_index_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_index_service_proto_msgTypes = make([]protoimpl.MessageInfo, 57) +var file_index_service_proto_msgTypes = make([]protoimpl.MessageInfo, 60) var file_index_service_proto_goTypes = []any{ (EnabledFilter)(0), // 0: elephant.index.EnabledFilter (*RegisterClusterRequest)(nil), // 1: elephant.index.RegisterClusterRequest @@ -3898,22 +4059,25 @@ var file_index_service_proto_goTypes = []any{ (*HitsTotalV1)(nil), // 40: elephant.index.HitsTotalV1 (*HitV1)(nil), // 41: elephant.index.HitV1 (*FieldValuesV1)(nil), // 42: elephant.index.FieldValuesV1 - (*GetMappingsRequestV1)(nil), // 43: elephant.index.GetMappingsRequestV1 - (*GetMappingsResponseV1)(nil), // 44: elephant.index.GetMappingsResponseV1 - (*MappingPropertyV1)(nil), // 45: elephant.index.MappingPropertyV1 - (*MappingFieldV1)(nil), // 46: elephant.index.MappingFieldV1 - (*PollSubscriptionRequest)(nil), // 47: elephant.index.PollSubscriptionRequest - (*SubscriptionReference)(nil), // 48: elephant.index.SubscriptionReference - (*PollSubscriptionResponse)(nil), // 49: elephant.index.PollSubscriptionResponse - (*SubscriptionPollResult)(nil), // 50: elephant.index.SubscriptionPollResult - (*SubscriptionItem)(nil), // 51: elephant.index.SubscriptionItem - (*EndSubscriptionRequest)(nil), // 52: elephant.index.EndSubscriptionRequest - (*EndSubscriptionResponse)(nil), // 53: elephant.index.EndSubscriptionResponse - nil, // 54: elephant.index.HitV1.FieldsEntry - nil, // 55: elephant.index.HitV1.SourceEntry - nil, // 56: elephant.index.SubscriptionItem.FieldsEntry - nil, // 57: elephant.index.SubscriptionItem.SourceEntry - (*newsdoc.Document)(nil), // 58: newsdoc.Document + (*GetFlatDocumentRequest)(nil), // 43: elephant.index.GetFlatDocumentRequest + (*GetFlatDocumentResponse)(nil), // 44: elephant.index.GetFlatDocumentResponse + (*GetMappingsRequestV1)(nil), // 45: elephant.index.GetMappingsRequestV1 + (*GetMappingsResponseV1)(nil), // 46: elephant.index.GetMappingsResponseV1 + (*MappingPropertyV1)(nil), // 47: elephant.index.MappingPropertyV1 + (*MappingFieldV1)(nil), // 48: elephant.index.MappingFieldV1 + (*PollSubscriptionRequest)(nil), // 49: elephant.index.PollSubscriptionRequest + (*SubscriptionReference)(nil), // 50: elephant.index.SubscriptionReference + (*PollSubscriptionResponse)(nil), // 51: elephant.index.PollSubscriptionResponse + (*SubscriptionPollResult)(nil), // 52: elephant.index.SubscriptionPollResult + (*SubscriptionItem)(nil), // 53: elephant.index.SubscriptionItem + (*EndSubscriptionRequest)(nil), // 54: elephant.index.EndSubscriptionRequest + (*EndSubscriptionResponse)(nil), // 55: elephant.index.EndSubscriptionResponse + nil, // 56: elephant.index.HitV1.FieldsEntry + nil, // 57: elephant.index.HitV1.SourceEntry + nil, // 58: elephant.index.GetFlatDocumentResponse.FieldsEntry + nil, // 59: elephant.index.SubscriptionItem.FieldsEntry + nil, // 60: elephant.index.SubscriptionItem.SourceEntry + (*newsdoc.Document)(nil), // 61: newsdoc.Document } var file_index_service_proto_depIdxs = []int32{ 2, // 0: elephant.index.RegisterClusterRequest.auth:type_name -> elephant.index.RegisterClusterAuth @@ -3942,56 +4106,61 @@ var file_index_service_proto_depIdxs = []int32{ 33, // 23: elephant.index.Fuzziness.auto:type_name -> elephant.index.FuzzinessAuto 38, // 24: elephant.index.QueryResponseV1.shards:type_name -> elephant.index.ShardsV1 39, // 25: elephant.index.QueryResponseV1.hits:type_name -> elephant.index.HitsV1 - 48, // 26: elephant.index.QueryResponseV1.subscription:type_name -> elephant.index.SubscriptionReference + 50, // 26: elephant.index.QueryResponseV1.subscription:type_name -> elephant.index.SubscriptionReference 40, // 27: elephant.index.HitsV1.total:type_name -> elephant.index.HitsTotalV1 41, // 28: elephant.index.HitsV1.hits:type_name -> elephant.index.HitV1 - 54, // 29: elephant.index.HitV1.fields:type_name -> elephant.index.HitV1.FieldsEntry - 55, // 30: elephant.index.HitV1.source:type_name -> elephant.index.HitV1.SourceEntry - 58, // 31: elephant.index.HitV1.document:type_name -> newsdoc.Document - 45, // 32: elephant.index.GetMappingsResponseV1.properties:type_name -> elephant.index.MappingPropertyV1 - 46, // 33: elephant.index.MappingPropertyV1.fields:type_name -> elephant.index.MappingFieldV1 - 48, // 34: elephant.index.PollSubscriptionRequest.subscriptions:type_name -> elephant.index.SubscriptionReference - 50, // 35: elephant.index.PollSubscriptionResponse.result:type_name -> elephant.index.SubscriptionPollResult - 48, // 36: elephant.index.SubscriptionPollResult.subscription:type_name -> elephant.index.SubscriptionReference - 51, // 37: elephant.index.SubscriptionPollResult.items:type_name -> elephant.index.SubscriptionItem - 56, // 38: elephant.index.SubscriptionItem.fields:type_name -> elephant.index.SubscriptionItem.FieldsEntry - 57, // 39: elephant.index.SubscriptionItem.source:type_name -> elephant.index.SubscriptionItem.SourceEntry - 58, // 40: elephant.index.SubscriptionItem.document:type_name -> newsdoc.Document - 42, // 41: elephant.index.HitV1.FieldsEntry.value:type_name -> elephant.index.FieldValuesV1 - 42, // 42: elephant.index.HitV1.SourceEntry.value:type_name -> elephant.index.FieldValuesV1 - 42, // 43: elephant.index.SubscriptionItem.FieldsEntry.value:type_name -> elephant.index.FieldValuesV1 - 42, // 44: elephant.index.SubscriptionItem.SourceEntry.value:type_name -> elephant.index.FieldValuesV1 - 1, // 45: elephant.index.Management.RegisterCluster:input_type -> elephant.index.RegisterClusterRequest - 6, // 46: elephant.index.Management.ListClusters:input_type -> elephant.index.ListClustersRequest - 10, // 47: elephant.index.Management.DeleteCluster:input_type -> elephant.index.DeleteClusterRequest - 12, // 48: elephant.index.Management.DeleteIndexSet:input_type -> elephant.index.DeleteIndexSetRequest - 4, // 49: elephant.index.Management.Reindex:input_type -> elephant.index.ReindexRequest - 16, // 50: elephant.index.Management.PartialReindex:input_type -> elephant.index.PartialReindexRequest - 18, // 51: elephant.index.Management.ListIndexSets:input_type -> elephant.index.ListIndexSetsRequest - 14, // 52: elephant.index.Management.SetIndexSetStatus:input_type -> elephant.index.SetIndexSetStatusRequest - 23, // 53: elephant.index.SearchV1.Query:input_type -> elephant.index.QueryRequestV1 - 21, // 54: elephant.index.SearchV1.MultiSearch:input_type -> elephant.index.MultiSearchRequest - 43, // 55: elephant.index.SearchV1.GetMappings:input_type -> elephant.index.GetMappingsRequestV1 - 47, // 56: elephant.index.SearchV1.PollSubscription:input_type -> elephant.index.PollSubscriptionRequest - 52, // 57: elephant.index.SearchV1.EndSubscription:input_type -> elephant.index.EndSubscriptionRequest - 3, // 58: elephant.index.Management.RegisterCluster:output_type -> elephant.index.RegisterClusterResponse - 7, // 59: elephant.index.Management.ListClusters:output_type -> elephant.index.ListClustersResponse - 11, // 60: elephant.index.Management.DeleteCluster:output_type -> elephant.index.DeleteClusterResponse - 13, // 61: elephant.index.Management.DeleteIndexSet:output_type -> elephant.index.DeleteIndexSetResponse - 5, // 62: elephant.index.Management.Reindex:output_type -> elephant.index.ReindexResponse - 17, // 63: elephant.index.Management.PartialReindex:output_type -> elephant.index.PartialReindexResponse - 19, // 64: elephant.index.Management.ListIndexSets:output_type -> elephant.index.ListIndexSetsResponse - 15, // 65: elephant.index.Management.SetIndexSetStatus:output_type -> elephant.index.SetIndexSetStatusResponse - 37, // 66: elephant.index.SearchV1.Query:output_type -> elephant.index.QueryResponseV1 - 22, // 67: elephant.index.SearchV1.MultiSearch:output_type -> elephant.index.MultiSearchResponse - 44, // 68: elephant.index.SearchV1.GetMappings:output_type -> elephant.index.GetMappingsResponseV1 - 49, // 69: elephant.index.SearchV1.PollSubscription:output_type -> elephant.index.PollSubscriptionResponse - 53, // 70: elephant.index.SearchV1.EndSubscription:output_type -> elephant.index.EndSubscriptionResponse - 58, // [58:71] is the sub-list for method output_type - 45, // [45:58] is the sub-list for method input_type - 45, // [45:45] is the sub-list for extension type_name - 45, // [45:45] is the sub-list for extension extendee - 0, // [0:45] is the sub-list for field type_name + 56, // 29: elephant.index.HitV1.fields:type_name -> elephant.index.HitV1.FieldsEntry + 57, // 30: elephant.index.HitV1.source:type_name -> elephant.index.HitV1.SourceEntry + 61, // 31: elephant.index.HitV1.document:type_name -> newsdoc.Document + 58, // 32: elephant.index.GetFlatDocumentResponse.fields:type_name -> elephant.index.GetFlatDocumentResponse.FieldsEntry + 61, // 33: elephant.index.GetFlatDocumentResponse.document:type_name -> newsdoc.Document + 47, // 34: elephant.index.GetMappingsResponseV1.properties:type_name -> elephant.index.MappingPropertyV1 + 48, // 35: elephant.index.MappingPropertyV1.fields:type_name -> elephant.index.MappingFieldV1 + 50, // 36: elephant.index.PollSubscriptionRequest.subscriptions:type_name -> elephant.index.SubscriptionReference + 52, // 37: elephant.index.PollSubscriptionResponse.result:type_name -> elephant.index.SubscriptionPollResult + 50, // 38: elephant.index.SubscriptionPollResult.subscription:type_name -> elephant.index.SubscriptionReference + 53, // 39: elephant.index.SubscriptionPollResult.items:type_name -> elephant.index.SubscriptionItem + 59, // 40: elephant.index.SubscriptionItem.fields:type_name -> elephant.index.SubscriptionItem.FieldsEntry + 60, // 41: elephant.index.SubscriptionItem.source:type_name -> elephant.index.SubscriptionItem.SourceEntry + 61, // 42: elephant.index.SubscriptionItem.document:type_name -> newsdoc.Document + 42, // 43: elephant.index.HitV1.FieldsEntry.value:type_name -> elephant.index.FieldValuesV1 + 42, // 44: elephant.index.HitV1.SourceEntry.value:type_name -> elephant.index.FieldValuesV1 + 42, // 45: elephant.index.GetFlatDocumentResponse.FieldsEntry.value:type_name -> elephant.index.FieldValuesV1 + 42, // 46: elephant.index.SubscriptionItem.FieldsEntry.value:type_name -> elephant.index.FieldValuesV1 + 42, // 47: elephant.index.SubscriptionItem.SourceEntry.value:type_name -> elephant.index.FieldValuesV1 + 1, // 48: elephant.index.Management.RegisterCluster:input_type -> elephant.index.RegisterClusterRequest + 6, // 49: elephant.index.Management.ListClusters:input_type -> elephant.index.ListClustersRequest + 10, // 50: elephant.index.Management.DeleteCluster:input_type -> elephant.index.DeleteClusterRequest + 12, // 51: elephant.index.Management.DeleteIndexSet:input_type -> elephant.index.DeleteIndexSetRequest + 4, // 52: elephant.index.Management.Reindex:input_type -> elephant.index.ReindexRequest + 16, // 53: elephant.index.Management.PartialReindex:input_type -> elephant.index.PartialReindexRequest + 18, // 54: elephant.index.Management.ListIndexSets:input_type -> elephant.index.ListIndexSetsRequest + 14, // 55: elephant.index.Management.SetIndexSetStatus:input_type -> elephant.index.SetIndexSetStatusRequest + 23, // 56: elephant.index.SearchV1.Query:input_type -> elephant.index.QueryRequestV1 + 21, // 57: elephant.index.SearchV1.MultiSearch:input_type -> elephant.index.MultiSearchRequest + 43, // 58: elephant.index.SearchV1.GetFlatDocument:input_type -> elephant.index.GetFlatDocumentRequest + 45, // 59: elephant.index.SearchV1.GetMappings:input_type -> elephant.index.GetMappingsRequestV1 + 49, // 60: elephant.index.SearchV1.PollSubscription:input_type -> elephant.index.PollSubscriptionRequest + 54, // 61: elephant.index.SearchV1.EndSubscription:input_type -> elephant.index.EndSubscriptionRequest + 3, // 62: elephant.index.Management.RegisterCluster:output_type -> elephant.index.RegisterClusterResponse + 7, // 63: elephant.index.Management.ListClusters:output_type -> elephant.index.ListClustersResponse + 11, // 64: elephant.index.Management.DeleteCluster:output_type -> elephant.index.DeleteClusterResponse + 13, // 65: elephant.index.Management.DeleteIndexSet:output_type -> elephant.index.DeleteIndexSetResponse + 5, // 66: elephant.index.Management.Reindex:output_type -> elephant.index.ReindexResponse + 17, // 67: elephant.index.Management.PartialReindex:output_type -> elephant.index.PartialReindexResponse + 19, // 68: elephant.index.Management.ListIndexSets:output_type -> elephant.index.ListIndexSetsResponse + 15, // 69: elephant.index.Management.SetIndexSetStatus:output_type -> elephant.index.SetIndexSetStatusResponse + 37, // 70: elephant.index.SearchV1.Query:output_type -> elephant.index.QueryResponseV1 + 22, // 71: elephant.index.SearchV1.MultiSearch:output_type -> elephant.index.MultiSearchResponse + 44, // 72: elephant.index.SearchV1.GetFlatDocument:output_type -> elephant.index.GetFlatDocumentResponse + 46, // 73: elephant.index.SearchV1.GetMappings:output_type -> elephant.index.GetMappingsResponseV1 + 51, // 74: elephant.index.SearchV1.PollSubscription:output_type -> elephant.index.PollSubscriptionResponse + 55, // 75: elephant.index.SearchV1.EndSubscription:output_type -> elephant.index.EndSubscriptionResponse + 62, // [62:76] is the sub-list for method output_type + 48, // [48:62] is the sub-list for method input_type + 48, // [48:48] is the sub-list for extension type_name + 48, // [48:48] is the sub-list for extension extendee + 0, // [0:48] is the sub-list for field type_name } func init() { file_index_service_proto_init() } @@ -4018,7 +4187,7 @@ func file_index_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_index_service_proto_rawDesc, NumEnums: 1, - NumMessages: 57, + NumMessages: 60, NumExtensions: 0, NumServices: 2, }, diff --git a/index/service.proto b/index/service.proto index 0b2e973..db2ca91 100644 --- a/index/service.proto +++ b/index/service.proto @@ -32,6 +32,11 @@ service Management { service SearchV1 { rpc Query(QueryRequestV1) returns (QueryResponseV1); rpc MultiSearch(MultiSearchRequest) returns (MultiSearchResponse); + // GetFlatDocument fetches a document directly from the repository and returns + // it in the flattened representation used for indexing. This bypasses + // OpenSearch, so the result always reflects the current state of the + // repository without the eventual consistency of the index. + rpc GetFlatDocument(GetFlatDocumentRequest) returns (GetFlatDocumentResponse); rpc GetMappings(GetMappingsRequestV1) returns (GetMappingsResponseV1); rpc PollSubscription(PollSubscriptionRequest) returns (PollSubscriptionResponse); rpc EndSubscription(EndSubscriptionRequest) returns (EndSubscriptionResponse); @@ -361,6 +366,30 @@ message FieldValuesV1 { repeated string values = 1; } +message GetFlatDocumentRequest { + // UUID of the document to flatten. + string uuid = 1; + // Version of the document to fetch. Optional, defaults to the current + // version. Ignored when stored is set. + int64 version = 2; + // Status name used to select the document version to fetch, as an alternative + // to version. Optional. Ignored when stored is set. + string status = 3; + // Stored returns the flattened document as it is currently stored in the + // active index instead of converting the current version from the + // repository. This reflects the indexed state, and is therefore subject to + // the eventual consistency of the index. + bool stored = 4; +} + +message GetFlatDocumentResponse { + // Fields is the flattened representation of the document, keyed by field name. + map fields = 1; + // Document that was flattened. Only populated when converting from the + // repository, not when returning the stored document. + newsdoc.Document document = 2; +} + message GetMappingsRequestV1 { string document_type = 1; } diff --git a/index/service.twirp.go b/index/service.twirp.go index 45c58e5..f85ddf3 100644 --- a/index/service.twirp.go +++ b/index/service.twirp.go @@ -2495,6 +2495,12 @@ type SearchV1 interface { MultiSearch(context.Context, *MultiSearchRequest) (*MultiSearchResponse, error) + // GetFlatDocument fetches a document directly from the repository and returns + // it in the flattened representation used for indexing. This bypasses + // OpenSearch, so the result always reflects the current state of the + // repository without the eventual consistency of the index. + GetFlatDocument(context.Context, *GetFlatDocumentRequest) (*GetFlatDocumentResponse, error) + GetMappings(context.Context, *GetMappingsRequestV1) (*GetMappingsResponseV1, error) PollSubscription(context.Context, *PollSubscriptionRequest) (*PollSubscriptionResponse, error) @@ -2508,7 +2514,7 @@ type SearchV1 interface { type searchV1ProtobufClient struct { client HTTPClient - urls [5]string + urls [6]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -2536,9 +2542,10 @@ func NewSearchV1ProtobufClient(baseURL string, client HTTPClient, opts ...twirp. // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "elephant.index", "SearchV1") - urls := [5]string{ + urls := [6]string{ serviceURL + "Query", serviceURL + "MultiSearch", + serviceURL + "GetFlatDocument", serviceURL + "GetMappings", serviceURL + "PollSubscription", serviceURL + "EndSubscription", @@ -2644,6 +2651,52 @@ func (c *searchV1ProtobufClient) callMultiSearch(ctx context.Context, in *MultiS return out, nil } +func (c *searchV1ProtobufClient) GetFlatDocument(ctx context.Context, in *GetFlatDocumentRequest) (*GetFlatDocumentResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "elephant.index") + ctx = ctxsetters.WithServiceName(ctx, "SearchV1") + ctx = ctxsetters.WithMethodName(ctx, "GetFlatDocument") + caller := c.callGetFlatDocument + if c.interceptor != nil { + caller = func(ctx context.Context, req *GetFlatDocumentRequest) (*GetFlatDocumentResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*GetFlatDocumentRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*GetFlatDocumentRequest) when calling interceptor") + } + return c.callGetFlatDocument(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*GetFlatDocumentResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*GetFlatDocumentResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *searchV1ProtobufClient) callGetFlatDocument(ctx context.Context, in *GetFlatDocumentRequest) (*GetFlatDocumentResponse, error) { + out := new(GetFlatDocumentResponse) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + func (c *searchV1ProtobufClient) GetMappings(ctx context.Context, in *GetMappingsRequestV1) (*GetMappingsResponseV1, error) { ctx = ctxsetters.WithPackageName(ctx, "elephant.index") ctx = ctxsetters.WithServiceName(ctx, "SearchV1") @@ -2675,7 +2728,7 @@ func (c *searchV1ProtobufClient) GetMappings(ctx context.Context, in *GetMapping func (c *searchV1ProtobufClient) callGetMappings(ctx context.Context, in *GetMappingsRequestV1) (*GetMappingsResponseV1, error) { out := new(GetMappingsResponseV1) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -2721,7 +2774,7 @@ func (c *searchV1ProtobufClient) PollSubscription(ctx context.Context, in *PollS func (c *searchV1ProtobufClient) callPollSubscription(ctx context.Context, in *PollSubscriptionRequest) (*PollSubscriptionResponse, error) { out := new(PollSubscriptionResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -2767,7 +2820,7 @@ func (c *searchV1ProtobufClient) EndSubscription(ctx context.Context, in *EndSub func (c *searchV1ProtobufClient) callEndSubscription(ctx context.Context, in *EndSubscriptionRequest) (*EndSubscriptionResponse, error) { out := new(EndSubscriptionResponse) - ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + ctx, err := doProtobufRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -2788,7 +2841,7 @@ func (c *searchV1ProtobufClient) callEndSubscription(ctx context.Context, in *En type searchV1JSONClient struct { client HTTPClient - urls [5]string + urls [6]string interceptor twirp.Interceptor opts twirp.ClientOptions } @@ -2816,9 +2869,10 @@ func NewSearchV1JSONClient(baseURL string, client HTTPClient, opts ...twirp.Clie // Build method URLs: []/./ serviceURL := sanitizeBaseURL(baseURL) serviceURL += baseServicePath(pathPrefix, "elephant.index", "SearchV1") - urls := [5]string{ + urls := [6]string{ serviceURL + "Query", serviceURL + "MultiSearch", + serviceURL + "GetFlatDocument", serviceURL + "GetMappings", serviceURL + "PollSubscription", serviceURL + "EndSubscription", @@ -2924,6 +2978,52 @@ func (c *searchV1JSONClient) callMultiSearch(ctx context.Context, in *MultiSearc return out, nil } +func (c *searchV1JSONClient) GetFlatDocument(ctx context.Context, in *GetFlatDocumentRequest) (*GetFlatDocumentResponse, error) { + ctx = ctxsetters.WithPackageName(ctx, "elephant.index") + ctx = ctxsetters.WithServiceName(ctx, "SearchV1") + ctx = ctxsetters.WithMethodName(ctx, "GetFlatDocument") + caller := c.callGetFlatDocument + if c.interceptor != nil { + caller = func(ctx context.Context, req *GetFlatDocumentRequest) (*GetFlatDocumentResponse, error) { + resp, err := c.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*GetFlatDocumentRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*GetFlatDocumentRequest) when calling interceptor") + } + return c.callGetFlatDocument(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*GetFlatDocumentResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*GetFlatDocumentResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + return caller(ctx, in) +} + +func (c *searchV1JSONClient) callGetFlatDocument(ctx context.Context, in *GetFlatDocumentRequest) (*GetFlatDocumentResponse, error) { + out := new(GetFlatDocumentResponse) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out) + if err != nil { + twerr, ok := err.(twirp.Error) + if !ok { + twerr = twirp.InternalErrorWith(err) + } + callClientError(ctx, c.opts.Hooks, twerr) + return nil, err + } + + callClientResponseReceived(ctx, c.opts.Hooks) + + return out, nil +} + func (c *searchV1JSONClient) GetMappings(ctx context.Context, in *GetMappingsRequestV1) (*GetMappingsResponseV1, error) { ctx = ctxsetters.WithPackageName(ctx, "elephant.index") ctx = ctxsetters.WithServiceName(ctx, "SearchV1") @@ -2955,7 +3055,7 @@ func (c *searchV1JSONClient) GetMappings(ctx context.Context, in *GetMappingsReq func (c *searchV1JSONClient) callGetMappings(ctx context.Context, in *GetMappingsRequestV1) (*GetMappingsResponseV1, error) { out := new(GetMappingsResponseV1) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[2], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -3001,7 +3101,7 @@ func (c *searchV1JSONClient) PollSubscription(ctx context.Context, in *PollSubsc func (c *searchV1JSONClient) callPollSubscription(ctx context.Context, in *PollSubscriptionRequest) (*PollSubscriptionResponse, error) { out := new(PollSubscriptionResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[3], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -3047,7 +3147,7 @@ func (c *searchV1JSONClient) EndSubscription(ctx context.Context, in *EndSubscri func (c *searchV1JSONClient) callEndSubscription(ctx context.Context, in *EndSubscriptionRequest) (*EndSubscriptionResponse, error) { out := new(EndSubscriptionResponse) - ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[4], in, out) + ctx, err := doJSONRequest(ctx, c.client, c.opts.Hooks, c.urls[5], in, out) if err != nil { twerr, ok := err.(twirp.Error) if !ok { @@ -3165,6 +3265,9 @@ func (s *searchV1Server) ServeHTTP(resp http.ResponseWriter, req *http.Request) case "MultiSearch": s.serveMultiSearch(ctx, resp, req) return + case "GetFlatDocument": + s.serveGetFlatDocument(ctx, resp, req) + return case "GetMappings": s.serveGetMappings(ctx, resp, req) return @@ -3541,6 +3644,186 @@ func (s *searchV1Server) serveMultiSearchProtobuf(ctx context.Context, resp http callResponseSent(ctx, s.hooks) } +func (s *searchV1Server) serveGetFlatDocument(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + header := req.Header.Get("Content-Type") + i := strings.Index(header, ";") + if i == -1 { + i = len(header) + } + switch strings.TrimSpace(strings.ToLower(header[:i])) { + case "application/json": + s.serveGetFlatDocumentJSON(ctx, resp, req) + case "application/protobuf": + s.serveGetFlatDocumentProtobuf(ctx, resp, req) + default: + msg := fmt.Sprintf("unexpected Content-Type: %q", req.Header.Get("Content-Type")) + twerr := badRouteError(msg, req.Method, req.URL.Path) + s.writeError(ctx, resp, twerr) + } +} + +func (s *searchV1Server) serveGetFlatDocumentJSON(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "GetFlatDocument") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + d := json.NewDecoder(req.Body) + rawReqBody := json.RawMessage{} + if err := d.Decode(&rawReqBody); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + reqContent := new(GetFlatDocumentRequest) + unmarshaler := protojson.UnmarshalOptions{DiscardUnknown: true} + if err = unmarshaler.Unmarshal(rawReqBody, reqContent); err != nil { + s.handleRequestBodyError(ctx, resp, "the json request could not be decoded", err) + return + } + + handler := s.SearchV1.GetFlatDocument + if s.interceptor != nil { + handler = func(ctx context.Context, req *GetFlatDocumentRequest) (*GetFlatDocumentResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*GetFlatDocumentRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*GetFlatDocumentRequest) when calling interceptor") + } + return s.SearchV1.GetFlatDocument(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*GetFlatDocumentResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*GetFlatDocumentResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *GetFlatDocumentResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *GetFlatDocumentResponse and nil error while calling GetFlatDocument. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + marshaler := &protojson.MarshalOptions{UseProtoNames: !s.jsonCamelCase, EmitUnpopulated: !s.jsonSkipDefaults} + respBytes, err := marshaler.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal json response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/json") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + +func (s *searchV1Server) serveGetFlatDocumentProtobuf(ctx context.Context, resp http.ResponseWriter, req *http.Request) { + var err error + ctx = ctxsetters.WithMethodName(ctx, "GetFlatDocument") + ctx, err = callRequestRouted(ctx, s.hooks) + if err != nil { + s.writeError(ctx, resp, err) + return + } + + buf, err := io.ReadAll(req.Body) + if err != nil { + s.handleRequestBodyError(ctx, resp, "failed to read request body", err) + return + } + reqContent := new(GetFlatDocumentRequest) + if err = proto.Unmarshal(buf, reqContent); err != nil { + s.writeError(ctx, resp, malformedRequestError("the protobuf request could not be decoded")) + return + } + + handler := s.SearchV1.GetFlatDocument + if s.interceptor != nil { + handler = func(ctx context.Context, req *GetFlatDocumentRequest) (*GetFlatDocumentResponse, error) { + resp, err := s.interceptor( + func(ctx context.Context, req interface{}) (interface{}, error) { + typedReq, ok := req.(*GetFlatDocumentRequest) + if !ok { + return nil, twirp.InternalError("failed type assertion req.(*GetFlatDocumentRequest) when calling interceptor") + } + return s.SearchV1.GetFlatDocument(ctx, typedReq) + }, + )(ctx, req) + if resp != nil { + typedResp, ok := resp.(*GetFlatDocumentResponse) + if !ok { + return nil, twirp.InternalError("failed type assertion resp.(*GetFlatDocumentResponse) when calling interceptor") + } + return typedResp, err + } + return nil, err + } + } + + // Call service method + var respContent *GetFlatDocumentResponse + func() { + defer ensurePanicResponses(ctx, resp, s.hooks) + respContent, err = handler(ctx, reqContent) + }() + + if err != nil { + s.writeError(ctx, resp, err) + return + } + if respContent == nil { + s.writeError(ctx, resp, twirp.InternalError("received a nil *GetFlatDocumentResponse and nil error while calling GetFlatDocument. nil responses are not supported")) + return + } + + ctx = callResponsePrepared(ctx, s.hooks) + + respBytes, err := proto.Marshal(respContent) + if err != nil { + s.writeError(ctx, resp, wrapInternal(err, "failed to marshal proto response")) + return + } + + ctx = ctxsetters.WithStatusCode(ctx, http.StatusOK) + resp.Header().Set("Content-Type", "application/protobuf") + resp.Header().Set("Content-Length", strconv.Itoa(len(respBytes))) + resp.WriteHeader(http.StatusOK) + if n, err := resp.Write(respBytes); err != nil { + msg := fmt.Sprintf("failed to write response, %d of %d bytes written: %s", n, len(respBytes), err.Error()) + twerr := twirp.NewError(twirp.Unknown, msg) + ctx = callError(ctx, s.hooks, twerr) + } + callResponseSent(ctx, s.hooks) +} + func (s *searchV1Server) serveGetMappings(ctx context.Context, resp http.ResponseWriter, req *http.Request) { header := req.Header.Get("Content-Type") i := strings.Index(header, ";") @@ -4662,164 +4945,170 @@ func callClientError(ctx context.Context, h *twirp.ClientHooks, err twirp.Error) } var twirpFileDescriptor0 = []byte{ - // 2538 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0x4b, 0x73, 0x1b, 0xc7, - 0x11, 0x36, 0x88, 0x07, 0x81, 0x5e, 0xf0, 0xa1, 0x11, 0x1f, 0x10, 0x64, 0xeb, 0xb1, 0x7a, 0x98, - 0x92, 0x23, 0xd2, 0xa4, 0x22, 0x4b, 0x8a, 0xab, 0xec, 0x50, 0x22, 0x65, 0x31, 0x16, 0x25, 0x66, - 0x41, 0x33, 0x89, 0x2a, 0x55, 0x5b, 0x8b, 0xc5, 0x10, 0xd8, 0xd2, 0x62, 0x17, 0xde, 0x99, 0x95, - 0x48, 0x55, 0x2e, 0x49, 0x2a, 0xc9, 0x31, 0x55, 0x39, 0xc6, 0x97, 0xdc, 0xf2, 0x2b, 0xf2, 0x13, - 0x72, 0xca, 0x7f, 0xc8, 0x25, 0x3f, 0x22, 0xa9, 0xe9, 0x99, 0x5d, 0xec, 0x0b, 0x84, 0xe4, 0xf2, - 0x29, 0x27, 0xec, 0xf4, 0x7c, 0xdd, 0xd3, 0xd3, 0xd3, 0xd3, 0xdd, 0xd3, 0x80, 0xf3, 0x8e, 0xd7, - 0xa3, 0x27, 0x1b, 0x8c, 0x06, 0xaf, 0x1d, 0x9b, 0xae, 0x8f, 0x02, 0x9f, 0xfb, 0x64, 0x9e, 0xba, - 0x74, 0x34, 0xb0, 0x3c, 0xbe, 0x8e, 0xb3, 0xed, 0x65, 0x8f, 0xbe, 0x61, 0x3d, 0xdf, 0xde, 0x50, - 0xbf, 0x12, 0xa6, 0xff, 0xb6, 0x04, 0x2b, 0x06, 0xed, 0x3b, 0x8c, 0xd3, 0xe0, 0xb1, 0x1b, 0x8a, - 0x1f, 0x83, 0x7e, 0x1b, 0x52, 0xc6, 0x09, 0x81, 0x8a, 0x67, 0x0d, 0x69, 0xab, 0x74, 0xa5, 0xb4, - 0xd6, 0x30, 0xf0, 0x9b, 0xb4, 0xa1, 0x4e, 0xbd, 0xde, 0xc8, 0x77, 0x3c, 0xde, 0x9a, 0x41, 0x7a, - 0x3c, 0x26, 0xf7, 0xa1, 0x62, 0x85, 0x7c, 0xd0, 0x2a, 0x5f, 0x29, 0xad, 0x69, 0x5b, 0xd7, 0xd6, - 0xd3, 0x0a, 0xac, 0x67, 0x56, 0xd9, 0x0e, 0xf9, 0xc0, 0x40, 0x06, 0xfd, 0xbb, 0x12, 0x9c, 0x2f, - 0x98, 0x25, 0x8b, 0x50, 0x76, 0xac, 0x21, 0xae, 0x5f, 0x37, 0xc4, 0xa7, 0x58, 0x3e, 0x64, 0x34, - 0x40, 0xb5, 0xd4, 0xf2, 0xd1, 0x58, 0xcc, 0x8d, 0x2c, 0xc6, 0xde, 0xf8, 0x41, 0x0f, 0x55, 0x68, - 0x18, 0xf1, 0x98, 0x5c, 0x85, 0xa6, 0xe3, 0x31, 0x6a, 0x87, 0x01, 0x35, 0xb9, 0xcb, 0x5a, 0x15, - 0x14, 0xa9, 0x45, 0xb4, 0x43, 0x97, 0x91, 0x55, 0x98, 0xb5, 0x2d, 0xd3, 0xa6, 0x01, 0x6f, 0x55, - 0x91, 0xbb, 0x66, 0x5b, 0x8f, 0x69, 0xc0, 0xf5, 0x0b, 0xb0, 0x9a, 0x33, 0x10, 0x1b, 0xf9, 0x1e, - 0xa3, 0xfa, 0x6d, 0x98, 0x37, 0x28, 0xee, 0x2e, 0xb2, 0x59, 0x0b, 0x66, 0x6d, 0x09, 0x52, 0x66, - 0x8b, 0x86, 0xfa, 0x0d, 0x58, 0x88, 0xb1, 0x92, 0xbd, 0xc8, 0xc0, 0xfa, 0x32, 0x9c, 0x7f, 0xe6, - 0x30, 0xae, 0x56, 0x62, 0x4a, 0xae, 0xfe, 0x35, 0x2c, 0xa5, 0xc9, 0x4a, 0xc4, 0x5d, 0xa8, 0xab, - 0x05, 0x58, 0xab, 0x74, 0xa5, 0xbc, 0xa6, 0x6d, 0xad, 0x66, 0xed, 0x1e, 0x29, 0x1d, 0x03, 0xf5, - 0xbf, 0x94, 0x60, 0x56, 0x51, 0xdf, 0xfb, 0x90, 0x6f, 0xc2, 0x02, 0x8a, 0x35, 0x19, 0xe5, 0xa6, - 0xed, 0x87, 0x1e, 0x47, 0x63, 0x97, 0x8d, 0x39, 0x24, 0x77, 0x28, 0x7f, 0x2c, 0x88, 0x64, 0x43, - 0x39, 0x43, 0x05, 0x9d, 0xe1, 0xe2, 0x04, 0xa5, 0x12, 0x4e, 0xf0, 0x39, 0x68, 0xdf, 0xfb, 0xec, - 0xf5, 0xdb, 0xb0, 0xb4, 0x43, 0x5d, 0xca, 0xe9, 0x74, 0x17, 0xd6, 0x57, 0x61, 0x39, 0x83, 0x55, - 0xa7, 0xf9, 0x49, 0x34, 0xb1, 0xa7, 0x76, 0x72, 0x96, 0x94, 0x16, 0xac, 0x64, 0xc1, 0x4a, 0xcc, - 0xef, 0x4b, 0xd0, 0xea, 0x50, 0x1e, 0xd1, 0x3b, 0xdc, 0xe2, 0x21, 0x3b, 0xeb, 0x4e, 0xad, 0x40, - 0xcd, 0xb2, 0xb9, 0xf3, 0x5a, 0x6e, 0xab, 0x6e, 0xa8, 0x91, 0x70, 0xda, 0x63, 0x3f, 0xb0, 0xa9, - 0xa9, 0x66, 0xcb, 0xd2, 0x69, 0x91, 0xb6, 0x2d, 0x21, 0x2d, 0x98, 0xa5, 0x9e, 0xd5, 0x75, 0x69, - 0x4f, 0xb9, 0x74, 0x34, 0xd4, 0x2f, 0xc2, 0x85, 0x02, 0x25, 0x94, 0x8a, 0x07, 0xb0, 0x7c, 0x60, - 0x05, 0xdc, 0xb1, 0xdc, 0x8c, 0xfb, 0x5e, 0x84, 0x46, 0x7c, 0xba, 0x4a, 0xc7, 0x7a, 0x74, 0xae, - 0x78, 0xc1, 0x7c, 0xe6, 0x70, 0xc7, 0xf7, 0x50, 0xd3, 0xb2, 0x11, 0x8f, 0x85, 0x39, 0xb2, 0x12, - 0xd5, 0x5a, 0x7f, 0x2b, 0x49, 0xd7, 0x8d, 0x54, 0x61, 0x53, 0xaf, 0x0a, 0xb9, 0x0c, 0x9a, 0xef, - 0xb9, 0xa7, 0x66, 0xca, 0x2a, 0x20, 0x48, 0x6a, 0xdb, 0xf7, 0xa0, 0xc6, 0x70, 0x47, 0x68, 0x93, - 0xf9, 0xad, 0x8f, 0xb2, 0xee, 0xb5, 0x2b, 0xad, 0xf0, 0xc4, 0x71, 0xc5, 0x01, 0x2b, 0xb0, 0x30, - 0xb4, 0x1d, 0x06, 0xcc, 0x0f, 0xd0, 0x58, 0xe2, 0x86, 0xe3, 0x48, 0x1f, 0xc2, 0x72, 0x46, 0x43, - 0x75, 0xbb, 0xee, 0x03, 0xc4, 0xe6, 0x88, 0xee, 0x57, 0x2b, 0xbb, 0x56, 0xec, 0x00, 0x8d, 0xc8, - 0x52, 0x4c, 0xd8, 0xd1, 0xa3, 0x27, 0xdc, 0x1c, 0x59, 0xfd, 0xd8, 0x59, 0x05, 0xe1, 0xc0, 0xea, - 0x53, 0xfd, 0x8f, 0x25, 0xa8, 0x47, 0x4c, 0x85, 0x0e, 0x91, 0xb0, 0xcc, 0x4c, 0xda, 0x32, 0x89, - 0xf3, 0x2e, 0xa7, 0xce, 0x3b, 0xe1, 0x44, 0x95, 0x94, 0x13, 0x25, 0x0f, 0xad, 0x9a, 0x39, 0xb4, - 0xe7, 0x40, 0xf6, 0x43, 0x97, 0x3b, 0x1d, 0x6a, 0x05, 0xf6, 0x20, 0x3a, 0x97, 0x07, 0x30, 0xfb, - 0x6d, 0x48, 0x03, 0x87, 0x46, 0x3b, 0xbe, 0x94, 0xdd, 0xf1, 0xcf, 0x43, 0x1a, 0x9c, 0x2a, 0xf8, - 0xd1, 0xa6, 0x11, 0xc1, 0xf5, 0x03, 0x38, 0x9f, 0x92, 0xa7, 0xac, 0xf8, 0x10, 0x66, 0x03, 0xca, - 0x42, 0x37, 0x36, 0xe1, 0xe5, 0x09, 0x02, 0x25, 0x5e, 0x48, 0x54, 0x78, 0xfd, 0x0f, 0x65, 0x98, - 0x4f, 0xaf, 0x46, 0xae, 0xc1, 0x5c, 0xcf, 0xb7, 0xc3, 0x21, 0xf5, 0xb8, 0xc9, 0x4f, 0x47, 0x91, - 0xe5, 0x9a, 0x11, 0xf1, 0xf0, 0x74, 0x84, 0xbb, 0x76, 0x2d, 0xaf, 0x1f, 0x26, 0xcc, 0x1f, 0x8d, - 0xc9, 0x1d, 0xa8, 0x0a, 0x85, 0x4f, 0x55, 0x9e, 0x5a, 0x2d, 0x54, 0xe6, 0x68, 0xd3, 0x90, 0x28, - 0x61, 0xd8, 0x63, 0x87, 0xba, 0x3d, 0x91, 0x34, 0xca, 0xc2, 0x69, 0xe4, 0x88, 0xdc, 0x81, 0x0a, - 0xf3, 0x31, 0x59, 0x88, 0x2d, 0x5d, 0xc8, 0x4a, 0xe9, 0xf8, 0x01, 0x77, 0xbc, 0xfe, 0xd1, 0xa6, - 0x81, 0x30, 0x21, 0x86, 0xf9, 0x61, 0x60, 0xd3, 0x56, 0x4d, 0x9e, 0x8f, 0x1c, 0x89, 0xf3, 0x3f, - 0x0e, 0xfc, 0x61, 0x6b, 0x16, 0xcf, 0x06, 0xbf, 0x05, 0x8d, 0x39, 0x6f, 0x69, 0xab, 0x2e, 0x69, - 0xe2, 0x5b, 0x04, 0x03, 0x86, 0x66, 0x35, 0xad, 0x63, 0xe1, 0x18, 0x0d, 0x54, 0x46, 0x93, 0xb4, - 0x6d, 0x41, 0x12, 0x96, 0x71, 0x7d, 0xab, 0x67, 0x46, 0x96, 0x68, 0x01, 0xae, 0xd4, 0x14, 0xc4, - 0x1d, 0x45, 0x23, 0x1f, 0x42, 0x83, 0x85, 0x5d, 0x66, 0x07, 0x4e, 0x97, 0xb6, 0x34, 0x04, 0x8c, - 0x09, 0xa8, 0xe5, 0xc0, 0x0a, 0x68, 0xaf, 0xd5, 0x54, 0x5a, 0xe2, 0x48, 0xff, 0x77, 0x05, 0x66, - 0x95, 0x5d, 0xc8, 0x26, 0x54, 0xba, 0xbe, 0xef, 0xa2, 0xdd, 0x0b, 0x22, 0xfb, 0x23, 0xdf, 0x77, - 0x15, 0xf4, 0xe9, 0x07, 0x06, 0x42, 0xc9, 0x8f, 0xa1, 0x1a, 0x58, 0x9e, 0x3a, 0x0b, 0x6d, 0xeb, - 0xc3, 0x5c, 0x69, 0x20, 0x26, 0xc7, 0x4c, 0x12, 0x4c, 0x5a, 0x50, 0xa3, 0x27, 0x0e, 0xe3, 0xf2, - 0x96, 0x37, 0x9e, 0x7e, 0x60, 0xa8, 0x31, 0xf9, 0x02, 0x1a, 0x43, 0x8b, 0x0b, 0x5b, 0xb8, 0xae, - 0xca, 0x30, 0x39, 0x9f, 0xda, 0x17, 0x80, 0x6d, 0x37, 0xa1, 0x4b, 0x7d, 0xa8, 0x48, 0x62, 0x0b, - 0x9c, 0x06, 0x43, 0xbc, 0x10, 0x05, 0x5b, 0x38, 0xa4, 0xc1, 0x30, 0xb1, 0x05, 0x01, 0x15, 0x5b, - 0x10, 0xbf, 0x0c, 0x8f, 0xaf, 0x60, 0x0b, 0x82, 0x87, 0x25, 0xb6, 0x80, 0x60, 0xc1, 0x85, 0x8b, - 0xe2, 0xf1, 0x16, 0x70, 0xa1, 0x92, 0x09, 0x2e, 0x04, 0x93, 0xaf, 0xa0, 0x29, 0xb7, 0x37, 0x1a, - 0x04, 0x16, 0x93, 0x7e, 0xa0, 0x6d, 0xe9, 0x85, 0xcc, 0x07, 0x08, 0x19, 0x8b, 0xd0, 0x86, 0x63, - 0x2a, 0xb9, 0x06, 0x4d, 0x74, 0x62, 0x93, 0xf1, 0xc0, 0xf1, 0xfa, 0xad, 0x86, 0xb2, 0xa3, 0x86, - 0xd4, 0x0e, 0x12, 0xc9, 0x7d, 0xa8, 0x8d, 0x02, 0x7a, 0xec, 0x9c, 0xa0, 0xbf, 0x68, 0xf9, 0x60, - 0x7a, 0x80, 0xb3, 0xe3, 0x25, 0x14, 0x9c, 0xec, 0x80, 0x36, 0x14, 0xd7, 0xdd, 0x94, 0x5b, 0xd4, - 0x90, 0xfb, 0x6a, 0x4e, 0x4b, 0x01, 0xc9, 0xec, 0x13, 0x86, 0x31, 0xf1, 0x51, 0x13, 0xc0, 0xf6, - 0xbd, 0x1e, 0x46, 0x24, 0xa6, 0xff, 0x6e, 0x06, 0xb4, 0x84, 0x07, 0x91, 0x4f, 0xa0, 0x32, 0x0c, - 0x19, 0x9f, 0x54, 0xdb, 0x44, 0x77, 0x15, 0x41, 0x64, 0x0b, 0xea, 0xe2, 0xd7, 0xf4, 0x7c, 0x51, - 0xb7, 0x9c, 0xc9, 0x30, 0x2b, 0x80, 0xcf, 0x7d, 0x51, 0xa7, 0xd4, 0xd8, 0xc0, 0x0f, 0x5d, 0x11, - 0x50, 0xcf, 0xe4, 0x50, 0x30, 0xc1, 0x70, 0x8c, 0x69, 0x05, 0xe3, 0xc1, 0x59, 0x0c, 0x12, 0x46, - 0x3e, 0x85, 0xa5, 0xa1, 0xe3, 0x39, 0xc3, 0x70, 0x68, 0x4a, 0x11, 0xca, 0x5e, 0x32, 0x1a, 0x13, - 0x35, 0xd7, 0xc1, 0x29, 0x34, 0x89, 0x3e, 0x80, 0x66, 0xf2, 0x46, 0x90, 0x25, 0xa8, 0x62, 0xd0, - 0x51, 0xa1, 0x4e, 0x0e, 0xc8, 0x3c, 0xcc, 0xf4, 0xa3, 0xfa, 0x6c, 0xa6, 0xcf, 0x45, 0xc5, 0xd4, - 0xe7, 0x54, 0x95, 0xbe, 0xe2, 0x53, 0x20, 0x5c, 0xae, 0x72, 0xdd, 0x8c, 0x8b, 0x08, 0x97, 0x53, - 0x55, 0xde, 0x8a, 0x4f, 0xfd, 0x1c, 0x2c, 0x64, 0xee, 0x89, 0xfe, 0x02, 0xb4, 0x84, 0xff, 0x4f, - 0x58, 0x7b, 0x09, 0xaa, 0xaf, 0x2d, 0x37, 0x8c, 0x82, 0xab, 0x1c, 0x08, 0x6a, 0xd7, 0xf7, 0x99, - 0xac, 0x08, 0x4b, 0x86, 0x1c, 0xe8, 0x06, 0x34, 0x93, 0x97, 0x63, 0x82, 0xc4, 0x15, 0xa8, 0xa1, - 0x10, 0x86, 0x27, 0xd7, 0x30, 0xd4, 0x68, 0x82, 0xcc, 0x03, 0x68, 0x26, 0x5d, 0xea, 0x07, 0xd0, - 0xf2, 0x1f, 0x33, 0x70, 0x2e, 0xe7, 0xaa, 0x89, 0xe0, 0x5f, 0x4a, 0x05, 0x7f, 0x02, 0x15, 0xcc, - 0x3d, 0x52, 0x30, 0x7e, 0x0b, 0xb9, 0xe3, 0xbc, 0xd2, 0x88, 0xd2, 0x47, 0xbc, 0x5a, 0x25, 0xb1, - 0x9a, 0xa8, 0x70, 0x44, 0x60, 0xa4, 0x96, 0x67, 0x5a, 0x5e, 0x0f, 0x4f, 0xa4, 0x6e, 0x80, 0x22, - 0x6d, 0x7b, 0xbd, 0x89, 0x4e, 0x53, 0x43, 0xd9, 0x05, 0x4e, 0x23, 0x44, 0x72, 0x87, 0x9a, 0xdd, - 0x80, 0x5a, 0xaf, 0x68, 0x80, 0x01, 0x67, 0xc6, 0x00, 0xee, 0xd0, 0x47, 0x92, 0x22, 0xd2, 0x83, - 0xbc, 0xb8, 0xa6, 0x4b, 0xbd, 0x3e, 0x1f, 0xa8, 0xf4, 0xd2, 0x94, 0xc4, 0x67, 0x48, 0x23, 0xf7, - 0xa1, 0x71, 0x1c, 0xbe, 0x7d, 0xeb, 0x78, 0x94, 0x31, 0x0c, 0x17, 0x05, 0xa9, 0xed, 0x49, 0x04, - 0x30, 0xc6, 0x58, 0xfd, 0x10, 0x1a, 0x31, 0x5d, 0x6c, 0x9a, 0xf6, 0x1c, 0xcc, 0xf7, 0x62, 0x09, - 0x39, 0x10, 0x51, 0xd7, 0x0a, 0xb9, 0xaf, 0x92, 0xc0, 0x47, 0x13, 0xc5, 0x6e, 0x87, 0xdc, 0xc7, - 0x47, 0x81, 0xaf, 0xdf, 0x83, 0xb9, 0x14, 0x19, 0x5d, 0xd8, 0x7f, 0xa3, 0xe4, 0x8a, 0x4f, 0x71, - 0x14, 0x03, 0xa7, 0x3f, 0x50, 0x15, 0x29, 0x7e, 0xeb, 0x3f, 0x05, 0x92, 0x0f, 0x8e, 0xef, 0xe3, - 0x24, 0xfa, 0x6f, 0x60, 0x2e, 0x15, 0xf6, 0xde, 0xcb, 0xc3, 0x6e, 0xc1, 0xa2, 0x6d, 0x31, 0x6a, - 0x8a, 0xe7, 0xa5, 0x27, 0x6a, 0xad, 0xb8, 0x78, 0x5f, 0x10, 0xf4, 0xbd, 0x31, 0xb9, 0xd8, 0x3d, - 0xf4, 0x7b, 0xd0, 0x88, 0xeb, 0x87, 0x09, 0x2b, 0x13, 0xa8, 0xf4, 0x28, 0xb3, 0x55, 0x71, 0x8c, - 0xdf, 0xfa, 0x7f, 0x4a, 0xb0, 0x90, 0x29, 0xa5, 0xd0, 0x53, 0x7d, 0xff, 0x95, 0xb2, 0x18, 0x7e, - 0x8b, 0xea, 0x94, 0x3b, 0x43, 0xda, 0x33, 0xfd, 0x90, 0x2b, 0x01, 0x75, 0x24, 0xbc, 0x08, 0x39, - 0xf9, 0x54, 0x96, 0x00, 0x3d, 0xa6, 0xea, 0xa3, 0x5c, 0xbd, 0xdb, 0xc1, 0x59, 0x19, 0x11, 0xc5, - 0x17, 0xb9, 0x2d, 0x4e, 0x80, 0x33, 0x95, 0x88, 0x57, 0xb2, 0xf8, 0xa7, 0x0e, 0x17, 0x68, 0xc4, - 0x90, 0x3d, 0x68, 0xaa, 0x6a, 0x63, 0x14, 0x97, 0xa4, 0xda, 0xd6, 0x8d, 0xdc, 0x1a, 0x09, 0x8c, - 0x41, 0x8f, 0x69, 0x40, 0x3d, 0x9b, 0x1a, 0x29, 0x56, 0x3d, 0x80, 0x7a, 0xa4, 0x8a, 0xb0, 0x11, - 0xf7, 0xb9, 0x25, 0x8b, 0x92, 0xaa, 0x21, 0x07, 0xe4, 0x12, 0x00, 0x0b, 0x6d, 0x9b, 0x32, 0x76, - 0x1c, 0xba, 0xb8, 0xd1, 0xaa, 0x91, 0xa0, 0x88, 0x6a, 0x9a, 0xbd, 0x72, 0x46, 0x23, 0x55, 0x4d, - 0x57, 0x8d, 0x68, 0x88, 0xf7, 0xde, 0x72, 0xa2, 0x67, 0x55, 0xd5, 0x50, 0x23, 0xf1, 0xb6, 0xab, - 0xc9, 0xfd, 0x90, 0xcd, 0xe4, 0x92, 0x05, 0x45, 0x84, 0x80, 0x1d, 0x0a, 0x80, 0x28, 0x25, 0xa5, - 0x3e, 0x17, 0x45, 0xd9, 0x72, 0x62, 0x32, 0xdb, 0x0f, 0xa4, 0xc7, 0xcc, 0x88, 0x9a, 0xe4, 0xa4, - 0x23, 0xc6, 0xe4, 0x96, 0xb2, 0xa2, 0x4c, 0x43, 0xcb, 0x05, 0xe2, 0x22, 0x23, 0xea, 0x5f, 0x82, - 0x96, 0x90, 0x3e, 0x76, 0x42, 0x75, 0xdb, 0xa4, 0x13, 0xb6, 0xa1, 0x1e, 0x50, 0xd7, 0x8a, 0x5f, - 0x6b, 0x0d, 0x23, 0x1e, 0xeb, 0x7f, 0x2d, 0x43, 0x15, 0x05, 0x8a, 0x14, 0xe1, 0x44, 0x9e, 0x35, - 0xe3, 0xa0, 0x43, 0x27, 0xd5, 0x93, 0x03, 0xf2, 0x30, 0x0e, 0x83, 0x52, 0xbb, 0xab, 0x85, 0xda, - 0xad, 0x3f, 0x41, 0xcc, 0xae, 0xc7, 0x83, 0xd3, 0x38, 0x52, 0x3e, 0x8c, 0xeb, 0xde, 0xca, 0x59, - 0xac, 0x1d, 0xc4, 0x28, 0xd6, 0x71, 0x69, 0x1c, 0x57, 0xd8, 0x0d, 0x55, 0x46, 0xdf, 0x81, 0x7a, - 0x5c, 0xde, 0xca, 0x4a, 0xec, 0xdc, 0x7a, 0xd4, 0xd0, 0x8a, 0x6a, 0x5c, 0x23, 0x86, 0xb4, 0x7f, - 0x09, 0x5a, 0x42, 0x29, 0x11, 0x3d, 0x5e, 0xd1, 0x53, 0xb5, 0x5d, 0xf1, 0x49, 0xee, 0x26, 0x2f, - 0x70, 0x51, 0x50, 0x12, 0xdc, 0x47, 0x98, 0x8a, 0xc4, 0x39, 0x22, 0xf6, 0x27, 0x33, 0x0f, 0x4a, - 0x42, 0x72, 0x42, 0xe7, 0x1f, 0x50, 0xb2, 0xfe, 0x31, 0xcc, 0xa5, 0xe6, 0x12, 0xa9, 0xb1, 0x94, - 0x4c, 0x8d, 0xfa, 0xe7, 0xb0, 0xf4, 0x15, 0xe5, 0xfb, 0xd6, 0x68, 0xe4, 0x78, 0x7d, 0xf6, 0x7e, - 0x2f, 0x24, 0xfd, 0x25, 0x2c, 0xa7, 0x98, 0xe3, 0x80, 0xb1, 0x0d, 0x30, 0x0a, 0xfc, 0x11, 0x0d, - 0xf8, 0xf8, 0x05, 0x98, 0x2f, 0xea, 0x24, 0xdf, 0x81, 0x04, 0x8a, 0x6a, 0x27, 0xc1, 0xa4, 0xff, - 0xa9, 0x04, 0xe7, 0x72, 0x88, 0xc2, 0x97, 0x6e, 0x51, 0x1e, 0x25, 0x50, 0x19, 0x59, 0xaa, 0x8d, - 0xd8, 0x30, 0xf0, 0x9b, 0x7c, 0x96, 0x7a, 0x84, 0x15, 0x3c, 0x49, 0xd5, 0x72, 0xd2, 0x70, 0x9b, - 0x91, 0xf7, 0xe9, 0x0f, 0x60, 0x3e, 0x3d, 0xf3, 0xae, 0x5a, 0xe8, 0xff, 0x2c, 0xc1, 0xea, 0x81, - 0xef, 0xba, 0xe9, 0x48, 0x24, 0x5f, 0xc8, 0x5f, 0xc3, 0x5c, 0x32, 0x12, 0x45, 0x56, 0x7a, 0xc7, - 0x28, 0x96, 0xe6, 0x25, 0x97, 0x40, 0x13, 0x41, 0xe1, 0x8d, 0xe5, 0x70, 0x73, 0xc8, 0x54, 0x1a, - 0x13, 0x71, 0xe2, 0x17, 0x96, 0xc3, 0xf7, 0x19, 0xb9, 0x0e, 0xf3, 0x5d, 0x7c, 0x0c, 0xf4, 0xa8, - 0x6b, 0x9d, 0x0a, 0x88, 0xec, 0xb7, 0x35, 0x91, 0xba, 0x23, 0x88, 0xfb, 0x4c, 0x64, 0x7f, 0xcf, - 0xe7, 0xce, 0xf1, 0xa9, 0xe9, 0x7b, 0xee, 0xa9, 0xea, 0x01, 0x80, 0x24, 0xbd, 0xf0, 0xdc, 0x53, - 0xfd, 0x4b, 0x58, 0x2e, 0x54, 0x27, 0x11, 0x01, 0xca, 0x18, 0x01, 0xc6, 0x4d, 0x12, 0xa9, 0x4a, - 0xd4, 0x24, 0xf9, 0x73, 0x09, 0x5a, 0x79, 0x83, 0xa8, 0x27, 0xfe, 0x17, 0x50, 0x93, 0x4f, 0x76, - 0x65, 0x8a, 0x9b, 0x67, 0x99, 0x42, 0x48, 0x31, 0x10, 0x6d, 0x28, 0x2e, 0x72, 0x17, 0x96, 0x43, - 0xef, 0x95, 0xe7, 0xbf, 0xf1, 0xcc, 0xb4, 0x65, 0x45, 0x31, 0x58, 0x36, 0x96, 0xd4, 0x64, 0x52, - 0x0a, 0xd3, 0xbf, 0x2b, 0xc1, 0x4a, 0xb1, 0xdc, 0x5c, 0x9a, 0x29, 0x7d, 0xef, 0x34, 0x43, 0x3e, - 0x83, 0xaa, 0xc3, 0xe9, 0x90, 0xa9, 0x17, 0xc5, 0x95, 0xb3, 0x64, 0xec, 0x71, 0x3a, 0x34, 0x24, - 0x5c, 0xff, 0x7b, 0x19, 0x16, 0xb3, 0x73, 0x45, 0xe1, 0x56, 0xd6, 0x75, 0x32, 0x0b, 0xab, 0xf7, - 0xdf, 0x4e, 0x26, 0xdc, 0xfe, 0x68, 0xda, 0x9a, 0x85, 0x91, 0x77, 0x27, 0x13, 0x79, 0xa7, 0x4b, - 0x29, 0x0a, 0xc2, 0xc9, 0x80, 0x5b, 0xfd, 0xff, 0x0c, 0xb8, 0x6b, 0xb0, 0xb2, 0xeb, 0xf5, 0x8a, - 0x2e, 0x7a, 0xe6, 0x6e, 0xe8, 0x17, 0x60, 0x35, 0x87, 0x94, 0x37, 0xe0, 0xf6, 0x01, 0xcc, 0xa5, - 0x9a, 0x8e, 0x64, 0x05, 0x48, 0xe7, 0x70, 0xfb, 0xf0, 0x9b, 0x8e, 0xf9, 0xcd, 0xf3, 0xce, 0xc1, - 0xee, 0xe3, 0xbd, 0x27, 0x7b, 0xbb, 0x3b, 0x8b, 0x1f, 0x10, 0x02, 0xf3, 0x8a, 0xbe, 0xfb, 0x7c, - 0xfb, 0xd1, 0xb3, 0xdd, 0x9d, 0xc5, 0x12, 0x39, 0x0f, 0x0b, 0x8a, 0xb6, 0xb3, 0xd7, 0x91, 0xc4, - 0xf2, 0xd6, 0x7f, 0xab, 0x00, 0xfb, 0x96, 0x67, 0xf5, 0x29, 0x36, 0x6e, 0xba, 0xb0, 0x90, 0xf9, - 0x1b, 0x82, 0xdc, 0x9c, 0xf2, 0x17, 0x8b, 0xda, 0x46, 0xfb, 0xe3, 0xa9, 0x38, 0x75, 0x8d, 0x7f, - 0x05, 0xcd, 0xe4, 0xbf, 0x0c, 0x24, 0xf7, 0x1f, 0x4e, 0xc1, 0x5f, 0x13, 0xed, 0xeb, 0x67, 0x83, - 0x94, 0xe8, 0x5f, 0xc3, 0x5c, 0xaa, 0xeb, 0x4e, 0x72, 0x6c, 0x45, 0x0d, 0xfc, 0xf6, 0x8d, 0x29, - 0x28, 0x25, 0xdd, 0x84, 0xf9, 0x74, 0x37, 0x9e, 0x4c, 0x60, 0xcc, 0xb4, 0xf6, 0xdb, 0x37, 0xa7, - 0xc1, 0xd4, 0x02, 0x3f, 0x83, 0x59, 0xd5, 0xd8, 0x26, 0x97, 0xf2, 0xd6, 0x4c, 0xf6, 0xd0, 0xdb, - 0x97, 0x27, 0xce, 0x8f, 0x95, 0x4d, 0xf7, 0xca, 0xf3, 0xca, 0x16, 0x76, 0xe7, 0xf3, 0xca, 0x16, - 0xb7, 0xdc, 0x85, 0xad, 0x53, 0xfd, 0x6c, 0x52, 0x78, 0x44, 0xd9, 0x86, 0x7c, 0xde, 0xd6, 0xc5, - 0x4d, 0xf1, 0x01, 0x9c, 0xcb, 0xfd, 0xb3, 0x40, 0xd6, 0x72, 0xc1, 0x65, 0xc2, 0x3f, 0x20, 0xed, - 0x5b, 0xef, 0x80, 0x94, 0x2b, 0x6d, 0xfd, 0xab, 0x0c, 0x75, 0xd9, 0x4b, 0x3e, 0xda, 0x24, 0x4f, - 0xa1, 0x8a, 0x6f, 0x1b, 0x32, 0xa5, 0x1d, 0xdd, 0x9e, 0xd6, 0x5d, 0x26, 0x47, 0xa0, 0x25, 0xda, - 0xd4, 0x44, 0x2f, 0xec, 0x58, 0xa5, 0x7a, 0xe2, 0xed, 0x6b, 0x67, 0x62, 0x94, 0x61, 0x5e, 0x82, - 0x96, 0x28, 0xa9, 0xf2, 0x46, 0x2f, 0x2a, 0xd6, 0xf2, 0x46, 0x2f, 0xae, 0xca, 0x28, 0x2c, 0x66, - 0x93, 0x2f, 0xc9, 0x5d, 0xeb, 0x09, 0xf5, 0x4a, 0x7b, 0x6d, 0x3a, 0x50, 0x6d, 0xa1, 0x0b, 0x0b, - 0x99, 0x00, 0x97, 0x0f, 0x32, 0xc5, 0xb1, 0x32, 0x1f, 0x64, 0x26, 0x44, 0xca, 0x47, 0xd7, 0x5f, - 0xea, 0x7d, 0x87, 0x0f, 0xc2, 0xee, 0xba, 0xed, 0x0f, 0x37, 0x38, 0xb7, 0xba, 0x1b, 0x11, 0xe7, - 0x1d, 0x6b, 0xe4, 0x6c, 0x20, 0x77, 0xb7, 0x86, 0x7f, 0x4f, 0xdf, 0xfd, 0x5f, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xc2, 0x91, 0x53, 0x11, 0xdc, 0x1e, 0x00, 0x00, + // 2629 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xcd, 0x72, 0x1b, 0xc7, + 0x11, 0x36, 0x7e, 0x09, 0xf4, 0x82, 0x3f, 0x1a, 0xf1, 0x07, 0x82, 0x6c, 0x59, 0x5e, 0x59, 0x32, + 0x25, 0x47, 0xa4, 0x49, 0x45, 0x96, 0x14, 0x57, 0xd9, 0xa1, 0x44, 0x4a, 0x62, 0x24, 0x4a, 0xcc, + 0x82, 0x66, 0x12, 0x55, 0xaa, 0xb6, 0x16, 0x8b, 0x21, 0xb0, 0xa5, 0xc5, 0x2e, 0xbc, 0x33, 0x2b, + 0x91, 0xaa, 0x5c, 0x92, 0x54, 0x92, 0x63, 0xaa, 0x72, 0x8c, 0x2f, 0xb9, 0xe5, 0x11, 0x72, 0xca, + 0x23, 0xe4, 0x35, 0x72, 0xc9, 0x21, 0x8f, 0x90, 0xd4, 0xf4, 0xcc, 0x2e, 0xf6, 0x0f, 0xa4, 0xe4, + 0x72, 0x55, 0xaa, 0x72, 0xc2, 0x4e, 0xcf, 0x37, 0x3d, 0x3d, 0xdd, 0x3d, 0xdd, 0x3d, 0x33, 0x80, + 0xf3, 0x8e, 0xd7, 0xa7, 0xc7, 0xeb, 0x8c, 0x06, 0xaf, 0x1c, 0x9b, 0xae, 0x8d, 0x03, 0x9f, 0xfb, + 0x64, 0x8e, 0xba, 0x74, 0x3c, 0xb4, 0x3c, 0xbe, 0x86, 0xbd, 0x9d, 0x25, 0x8f, 0xbe, 0x66, 0x7d, + 0xdf, 0x5e, 0x57, 0xbf, 0x12, 0xa6, 0xff, 0xba, 0x04, 0xcb, 0x06, 0x1d, 0x38, 0x8c, 0xd3, 0xe0, + 0x81, 0x1b, 0x8a, 0x1f, 0x83, 0x7e, 0x13, 0x52, 0xc6, 0x09, 0x81, 0xaa, 0x67, 0x8d, 0x68, 0xbb, + 0x74, 0xb9, 0xb4, 0xda, 0x34, 0xf0, 0x9b, 0x74, 0xa0, 0x41, 0xbd, 0xfe, 0xd8, 0x77, 0x3c, 0xde, + 0x2e, 0x23, 0x3d, 0x6e, 0x93, 0x3b, 0x50, 0xb5, 0x42, 0x3e, 0x6c, 0x57, 0x2e, 0x97, 0x56, 0xb5, + 0xcd, 0x2b, 0x6b, 0x69, 0x01, 0xd6, 0x32, 0xb3, 0x6c, 0x85, 0x7c, 0x68, 0xe0, 0x00, 0xfd, 0xdb, + 0x12, 0x9c, 0x2f, 0xe8, 0x25, 0x0b, 0x50, 0x71, 0xac, 0x11, 0xce, 0xdf, 0x30, 0xc4, 0xa7, 0x98, + 0x3e, 0x64, 0x34, 0x40, 0xb1, 0xd4, 0xf4, 0x51, 0x5b, 0xf4, 0x8d, 0x2d, 0xc6, 0x5e, 0xfb, 0x41, + 0x1f, 0x45, 0x68, 0x1a, 0x71, 0x9b, 0x7c, 0x04, 0x2d, 0xc7, 0x63, 0xd4, 0x0e, 0x03, 0x6a, 0x72, + 0x97, 0xb5, 0xab, 0xc8, 0x52, 0x8b, 0x68, 0x07, 0x2e, 0x23, 0x2b, 0x30, 0x63, 0x5b, 0xa6, 0x4d, + 0x03, 0xde, 0xae, 0xe1, 0xe8, 0xba, 0x6d, 0x3d, 0xa0, 0x01, 0xd7, 0x2f, 0xc0, 0x4a, 0x4e, 0x41, + 0x6c, 0xec, 0x7b, 0x8c, 0xea, 0x37, 0x60, 0xce, 0xa0, 0xb8, 0xba, 0x48, 0x67, 0x6d, 0x98, 0xb1, + 0x25, 0x48, 0xa9, 0x2d, 0x6a, 0xea, 0x57, 0x61, 0x3e, 0xc6, 0xca, 0xe1, 0x45, 0x0a, 0xd6, 0x97, + 0xe0, 0xfc, 0x53, 0x87, 0x71, 0x35, 0x13, 0x53, 0x7c, 0xf5, 0x27, 0xb0, 0x98, 0x26, 0x2b, 0x16, + 0xb7, 0xa0, 0xa1, 0x26, 0x60, 0xed, 0xd2, 0xe5, 0xca, 0xaa, 0xb6, 0xb9, 0x92, 0xd5, 0x7b, 0x24, + 0x74, 0x0c, 0xd4, 0xff, 0x54, 0x82, 0x19, 0x45, 0x7d, 0x67, 0x23, 0x5f, 0x83, 0x79, 0x64, 0x6b, + 0x32, 0xca, 0x4d, 0xdb, 0x0f, 0x3d, 0x8e, 0xca, 0xae, 0x18, 0xb3, 0x48, 0xee, 0x52, 0xfe, 0x40, + 0x10, 0xc9, 0xba, 0x72, 0x86, 0x2a, 0x3a, 0xc3, 0xc5, 0x29, 0x42, 0x25, 0x9c, 0xe0, 0x0b, 0xd0, + 0xbe, 0xb3, 0xed, 0xf5, 0x1b, 0xb0, 0xb8, 0x4d, 0x5d, 0xca, 0xe9, 0xd9, 0x2e, 0xac, 0xaf, 0xc0, + 0x52, 0x06, 0xab, 0xac, 0xf9, 0x69, 0xd4, 0xb1, 0xab, 0x56, 0x72, 0x1a, 0x97, 0x36, 0x2c, 0x67, + 0xc1, 0x8a, 0xcd, 0x6f, 0x4b, 0xd0, 0xee, 0x52, 0x1e, 0xd1, 0xbb, 0xdc, 0xe2, 0x21, 0x3b, 0x6d, + 0x4f, 0x2d, 0x43, 0xdd, 0xb2, 0xb9, 0xf3, 0x4a, 0x2e, 0xab, 0x61, 0xa8, 0x96, 0x70, 0xda, 0x23, + 0x3f, 0xb0, 0xa9, 0xa9, 0x7a, 0x2b, 0xd2, 0x69, 0x91, 0xb6, 0x25, 0x21, 0x6d, 0x98, 0xa1, 0x9e, + 0xd5, 0x73, 0x69, 0x5f, 0xb9, 0x74, 0xd4, 0xd4, 0x2f, 0xc2, 0x85, 0x02, 0x21, 0x94, 0x88, 0xfb, + 0xb0, 0xb4, 0x6f, 0x05, 0xdc, 0xb1, 0xdc, 0x8c, 0xfb, 0x5e, 0x84, 0x66, 0x6c, 0x5d, 0x25, 0x63, + 0x23, 0xb2, 0x2b, 0x6e, 0x30, 0x9f, 0x39, 0xdc, 0xf1, 0x3d, 0x94, 0xb4, 0x62, 0xc4, 0x6d, 0xa1, + 0x8e, 0x2c, 0x47, 0x35, 0xd7, 0x5f, 0x4a, 0xd2, 0x75, 0x23, 0x51, 0xd8, 0x99, 0x5b, 0x85, 0x7c, + 0x08, 0x9a, 0xef, 0xb9, 0x27, 0x66, 0x4a, 0x2b, 0x20, 0x48, 0x6a, 0xd9, 0xb7, 0xa1, 0xce, 0x70, + 0x45, 0xa8, 0x93, 0xb9, 0xcd, 0x0f, 0xb2, 0xee, 0xb5, 0x23, 0xb5, 0xf0, 0xd0, 0x71, 0x85, 0x81, + 0x15, 0x58, 0x28, 0xda, 0x0e, 0x03, 0xe6, 0x07, 0xa8, 0x2c, 0xb1, 0xc3, 0xb1, 0xa5, 0x8f, 0x60, + 0x29, 0x23, 0xa1, 0xda, 0x5d, 0x77, 0x00, 0x62, 0x75, 0x44, 0xfb, 0xab, 0x9d, 0x9d, 0x2b, 0x76, + 0x80, 0x66, 0xa4, 0x29, 0x26, 0xf4, 0xe8, 0xd1, 0x63, 0x6e, 0x8e, 0xad, 0x41, 0xec, 0xac, 0x82, + 0xb0, 0x6f, 0x0d, 0xa8, 0xfe, 0xfb, 0x12, 0x34, 0xa2, 0x41, 0x85, 0x0e, 0x91, 0xd0, 0x4c, 0x39, + 0xad, 0x99, 0x84, 0xbd, 0x2b, 0x29, 0x7b, 0x27, 0x9c, 0xa8, 0x9a, 0x72, 0xa2, 0xa4, 0xd1, 0x6a, + 0x19, 0xa3, 0x3d, 0x03, 0xb2, 0x17, 0xba, 0xdc, 0xe9, 0x52, 0x2b, 0xb0, 0x87, 0x91, 0x5d, 0xee, + 0xc2, 0xcc, 0x37, 0x21, 0x0d, 0x1c, 0x1a, 0xad, 0xf8, 0x52, 0x76, 0xc5, 0x3f, 0x0d, 0x69, 0x70, + 0xa2, 0xe0, 0x87, 0x1b, 0x46, 0x04, 0xd7, 0xf7, 0xe1, 0x7c, 0x8a, 0x9f, 0xd2, 0xe2, 0x3d, 0x98, + 0x09, 0x28, 0x0b, 0xdd, 0x58, 0x85, 0x1f, 0x4e, 0x61, 0x28, 0xf1, 0x82, 0xa3, 0xc2, 0xeb, 0xbf, + 0xab, 0xc0, 0x5c, 0x7a, 0x36, 0x72, 0x05, 0x66, 0xfb, 0xbe, 0x1d, 0x8e, 0xa8, 0xc7, 0x4d, 0x7e, + 0x32, 0x8e, 0x34, 0xd7, 0x8a, 0x88, 0x07, 0x27, 0x63, 0x5c, 0xb5, 0x6b, 0x79, 0x83, 0x30, 0xa1, + 0xfe, 0xa8, 0x4d, 0x6e, 0x42, 0x4d, 0x08, 0x7c, 0xa2, 0xf2, 0xd4, 0x4a, 0xa1, 0x30, 0x87, 0x1b, + 0x86, 0x44, 0x09, 0xc5, 0x1e, 0x39, 0xd4, 0xed, 0x8b, 0xa4, 0x51, 0x11, 0x4e, 0x23, 0x5b, 0xe4, + 0x26, 0x54, 0x99, 0x8f, 0xc9, 0x42, 0x2c, 0xe9, 0x42, 0x96, 0x4b, 0xd7, 0x0f, 0xb8, 0xe3, 0x0d, + 0x0e, 0x37, 0x0c, 0x84, 0x09, 0x36, 0xcc, 0x0f, 0x03, 0x9b, 0xb6, 0xeb, 0xd2, 0x3e, 0xb2, 0x25, + 0xec, 0x7f, 0x14, 0xf8, 0xa3, 0xf6, 0x0c, 0xda, 0x06, 0xbf, 0x05, 0x8d, 0x39, 0x6f, 0x68, 0xbb, + 0x21, 0x69, 0xe2, 0x5b, 0x04, 0x03, 0x86, 0x6a, 0x35, 0xad, 0x23, 0xe1, 0x18, 0x4d, 0x14, 0x46, + 0x93, 0xb4, 0x2d, 0x41, 0x12, 0x9a, 0x71, 0x7d, 0xab, 0x6f, 0x46, 0x9a, 0x68, 0x03, 0xce, 0xd4, + 0x12, 0xc4, 0x6d, 0x45, 0x23, 0xef, 0x43, 0x93, 0x85, 0x3d, 0x66, 0x07, 0x4e, 0x8f, 0xb6, 0x35, + 0x04, 0x4c, 0x08, 0x28, 0xe5, 0xd0, 0x0a, 0x68, 0xbf, 0xdd, 0x52, 0x52, 0x62, 0x4b, 0xff, 0x67, + 0x15, 0x66, 0x94, 0x5e, 0xc8, 0x06, 0x54, 0x7b, 0xbe, 0xef, 0xa2, 0xde, 0x0b, 0x22, 0xfb, 0x7d, + 0xdf, 0x77, 0x15, 0xf4, 0xf1, 0x7b, 0x06, 0x42, 0xc9, 0x0f, 0xa1, 0x16, 0x58, 0x9e, 0xb2, 0x85, + 0xb6, 0xf9, 0x7e, 0xae, 0x34, 0x10, 0x9d, 0x93, 0x41, 0x12, 0x4c, 0xda, 0x50, 0xa7, 0xc7, 0x0e, + 0xe3, 0x72, 0x97, 0x37, 0x1f, 0xbf, 0x67, 0xa8, 0x36, 0xf9, 0x12, 0x9a, 0x23, 0x8b, 0x0b, 0x5d, + 0xb8, 0xae, 0xca, 0x30, 0x39, 0x9f, 0xda, 0x13, 0x80, 0x2d, 0x37, 0x21, 0x4b, 0x63, 0xa4, 0x48, + 0x62, 0x09, 0x9c, 0x06, 0x23, 0xdc, 0x10, 0x05, 0x4b, 0x38, 0xa0, 0xc1, 0x28, 0xb1, 0x04, 0x01, + 0x15, 0x4b, 0x10, 0xbf, 0x0c, 0xcd, 0x57, 0xb0, 0x04, 0x31, 0x86, 0x25, 0x96, 0x80, 0x60, 0x31, + 0x0a, 0x27, 0x45, 0xf3, 0x16, 0x8c, 0x42, 0x21, 0x13, 0xa3, 0x10, 0x4c, 0x1e, 0x41, 0x4b, 0x2e, + 0x6f, 0x3c, 0x0c, 0x2c, 0x26, 0xfd, 0x40, 0xdb, 0xd4, 0x0b, 0x07, 0xef, 0x23, 0x64, 0xc2, 0x42, + 0x1b, 0x4d, 0xa8, 0xe4, 0x0a, 0xb4, 0xd0, 0x89, 0x4d, 0xc6, 0x03, 0xc7, 0x1b, 0xb4, 0x9b, 0x4a, + 0x8f, 0x1a, 0x52, 0xbb, 0x48, 0x24, 0x77, 0xa0, 0x3e, 0x0e, 0xe8, 0x91, 0x73, 0x8c, 0xfe, 0xa2, + 0xe5, 0x83, 0xe9, 0x3e, 0xf6, 0x4e, 0xa6, 0x50, 0x70, 0xb2, 0x0d, 0xda, 0x48, 0x6c, 0x77, 0x53, + 0x2e, 0x51, 0xc3, 0xd1, 0x1f, 0xe5, 0xa4, 0x14, 0x90, 0xcc, 0x3a, 0x61, 0x14, 0x13, 0xef, 0xb7, + 0x00, 0x6c, 0xdf, 0xeb, 0x63, 0x44, 0x62, 0xfa, 0x6f, 0xca, 0xa0, 0x25, 0x3c, 0x88, 0x7c, 0x0a, + 0xd5, 0x51, 0xc8, 0xf8, 0xb4, 0xda, 0x26, 0xda, 0xab, 0x08, 0x22, 0x9b, 0xd0, 0x10, 0xbf, 0xa6, + 0xe7, 0x8b, 0xba, 0xe5, 0xd4, 0x01, 0x33, 0x02, 0xf8, 0xcc, 0x17, 0x75, 0x4a, 0x9d, 0x0d, 0xfd, + 0xd0, 0x15, 0x01, 0xf5, 0xd4, 0x11, 0x0a, 0x26, 0x06, 0x1c, 0x61, 0x5a, 0xc1, 0x78, 0x70, 0xda, + 0x00, 0x09, 0x23, 0x9f, 0xc1, 0xe2, 0xc8, 0xf1, 0x9c, 0x51, 0x38, 0x32, 0x25, 0x0b, 0xa5, 0x2f, + 0x19, 0x8d, 0x89, 0xea, 0xeb, 0x62, 0x17, 0xaa, 0x44, 0x1f, 0x42, 0x2b, 0xb9, 0x23, 0xc8, 0x22, + 0xd4, 0x30, 0xe8, 0xa8, 0x50, 0x27, 0x1b, 0x64, 0x0e, 0xca, 0x83, 0xa8, 0x3e, 0x2b, 0x0f, 0xb8, + 0xa8, 0x98, 0x06, 0x9c, 0xaa, 0xd2, 0x57, 0x7c, 0x0a, 0x84, 0xcb, 0x55, 0xae, 0x2b, 0xbb, 0x88, + 0x70, 0x39, 0x55, 0xe5, 0xad, 0xf8, 0xd4, 0xcf, 0xc1, 0x7c, 0x66, 0x9f, 0xe8, 0xcf, 0x41, 0x4b, + 0xf8, 0xff, 0x94, 0xb9, 0x17, 0xa1, 0xf6, 0xca, 0x72, 0xc3, 0x28, 0xb8, 0xca, 0x86, 0xa0, 0xf6, + 0x7c, 0x9f, 0xc9, 0x8a, 0xb0, 0x64, 0xc8, 0x86, 0x6e, 0x40, 0x2b, 0xb9, 0x39, 0xa6, 0x70, 0x5c, + 0x86, 0x3a, 0x32, 0x61, 0x68, 0xb9, 0xa6, 0xa1, 0x5a, 0x53, 0x78, 0xee, 0x43, 0x2b, 0xe9, 0x52, + 0xdf, 0x83, 0x94, 0x7f, 0x2f, 0xc3, 0xb9, 0x9c, 0xab, 0x26, 0x82, 0x7f, 0x29, 0x15, 0xfc, 0x09, + 0x54, 0x31, 0xf7, 0x48, 0xc6, 0xf8, 0x2d, 0xf8, 0x4e, 0xf2, 0x4a, 0x33, 0x4a, 0x1f, 0xf1, 0x6c, + 0xd5, 0xc4, 0x6c, 0xa2, 0xc2, 0x11, 0x81, 0x91, 0x5a, 0x9e, 0x69, 0x79, 0x7d, 0xb4, 0x48, 0xc3, + 0x00, 0x45, 0xda, 0xf2, 0xfa, 0x53, 0x9d, 0xa6, 0x8e, 0xbc, 0x0b, 0x9c, 0x46, 0xb0, 0xe4, 0x0e, + 0x35, 0x7b, 0x01, 0xb5, 0x5e, 0xd2, 0x00, 0x03, 0x4e, 0xd9, 0x00, 0xee, 0xd0, 0xfb, 0x92, 0x22, + 0xd2, 0x83, 0xdc, 0xb8, 0xa6, 0x4b, 0xbd, 0x01, 0x1f, 0xaa, 0xf4, 0xd2, 0x92, 0xc4, 0xa7, 0x48, + 0x23, 0x77, 0xa0, 0x79, 0x14, 0xbe, 0x79, 0xe3, 0x78, 0x94, 0x31, 0x0c, 0x17, 0x05, 0xa9, 0xed, + 0x61, 0x04, 0x30, 0x26, 0x58, 0xfd, 0x00, 0x9a, 0x31, 0x5d, 0x2c, 0x9a, 0xf6, 0x1d, 0xcc, 0xf7, + 0x62, 0x0a, 0xd9, 0x10, 0x51, 0xd7, 0x0a, 0xb9, 0xaf, 0x92, 0xc0, 0x07, 0x53, 0xd9, 0x6e, 0x85, + 0xdc, 0xc7, 0x43, 0x81, 0xaf, 0xdf, 0x86, 0xd9, 0x14, 0x19, 0x5d, 0xd8, 0x7f, 0xad, 0xf8, 0x8a, + 0x4f, 0x61, 0x8a, 0xa1, 0x33, 0x18, 0xaa, 0x8a, 0x14, 0xbf, 0xf5, 0x1f, 0x03, 0xc9, 0x07, 0xc7, + 0x77, 0x71, 0x12, 0xfd, 0x57, 0x30, 0x9b, 0x0a, 0x7b, 0xef, 0xe4, 0x61, 0xd7, 0x61, 0xc1, 0xb6, + 0x18, 0x35, 0xc5, 0xf1, 0xd2, 0x13, 0xb5, 0x56, 0x5c, 0xbc, 0xcf, 0x0b, 0xfa, 0xee, 0x84, 0x5c, + 0xec, 0x1e, 0xfa, 0x6d, 0x68, 0xc6, 0xf5, 0xc3, 0x94, 0x99, 0x09, 0x54, 0xfb, 0x94, 0xd9, 0xaa, + 0x38, 0xc6, 0x6f, 0xfd, 0x5f, 0x25, 0x98, 0xcf, 0x94, 0x52, 0xe8, 0xa9, 0xbe, 0xff, 0x52, 0x69, + 0x0c, 0xbf, 0x45, 0x75, 0xca, 0x9d, 0x11, 0xed, 0x9b, 0x7e, 0xc8, 0x15, 0x83, 0x06, 0x12, 0x9e, + 0x87, 0x9c, 0x7c, 0x26, 0x4b, 0x80, 0x3e, 0x53, 0xf5, 0x51, 0xae, 0xde, 0xed, 0x62, 0xaf, 0x8c, + 0x88, 0xe2, 0x8b, 0xdc, 0x10, 0x16, 0xe0, 0x4c, 0x25, 0xe2, 0xe5, 0x2c, 0xfe, 0xb1, 0xc3, 0x05, + 0x1a, 0x31, 0x64, 0x17, 0x5a, 0xaa, 0xda, 0x18, 0xc7, 0x25, 0xa9, 0xb6, 0x79, 0x35, 0x37, 0x47, + 0x02, 0x63, 0xd0, 0x23, 0x1a, 0x50, 0xcf, 0xa6, 0x46, 0x6a, 0xa8, 0x1e, 0x40, 0x23, 0x12, 0x45, + 0xe8, 0x88, 0xfb, 0xdc, 0x92, 0x45, 0x49, 0xcd, 0x90, 0x0d, 0x72, 0x09, 0x80, 0x85, 0xb6, 0x4d, + 0x19, 0x3b, 0x0a, 0x5d, 0x5c, 0x68, 0xcd, 0x48, 0x50, 0x44, 0x35, 0xcd, 0x5e, 0x3a, 0xe3, 0xb1, + 0xaa, 0xa6, 0x6b, 0x46, 0xd4, 0xc4, 0x7d, 0x6f, 0x39, 0xd1, 0xb1, 0xaa, 0x66, 0xa8, 0x96, 0x38, + 0xdb, 0xd5, 0xe5, 0x7a, 0xc8, 0x46, 0x72, 0xca, 0x82, 0x22, 0x42, 0xc0, 0x0e, 0x04, 0x40, 0x94, + 0x92, 0x52, 0x9e, 0x8b, 0xa2, 0x6c, 0x39, 0x36, 0x99, 0xed, 0x07, 0xd2, 0x63, 0xca, 0xa2, 0x26, + 0x39, 0xee, 0x8a, 0x36, 0xb9, 0xae, 0xb4, 0x28, 0xd3, 0xd0, 0x52, 0x01, 0xbb, 0x48, 0x89, 0xfa, + 0x57, 0xa0, 0x25, 0xb8, 0x4f, 0x9c, 0x50, 0xed, 0x36, 0xe9, 0x84, 0x1d, 0x68, 0x04, 0xd4, 0xb5, + 0xe2, 0xd3, 0x5a, 0xd3, 0x88, 0xdb, 0xfa, 0x9f, 0x2b, 0x50, 0x43, 0x86, 0x22, 0x45, 0x38, 0x91, + 0x67, 0x95, 0x1d, 0x74, 0xe8, 0xa4, 0x78, 0xb2, 0x41, 0xee, 0xc5, 0x61, 0x50, 0x4a, 0xf7, 0x51, + 0xa1, 0x74, 0x6b, 0x0f, 0x11, 0xb3, 0xe3, 0xf1, 0xe0, 0x24, 0x8e, 0x94, 0xf7, 0xe2, 0xba, 0xb7, + 0x7a, 0xda, 0xd0, 0x2e, 0x62, 0xd4, 0xd0, 0x49, 0x69, 0x1c, 0x57, 0xd8, 0x4d, 0x55, 0x46, 0xdf, + 0x84, 0x46, 0x5c, 0xde, 0xca, 0x4a, 0xec, 0xdc, 0x5a, 0x74, 0xa1, 0x15, 0xd5, 0xb8, 0x46, 0x0c, + 0xe9, 0xfc, 0x1c, 0xb4, 0x84, 0x50, 0x22, 0x7a, 0xbc, 0xa4, 0x27, 0x6a, 0xb9, 0xe2, 0x93, 0xdc, + 0x4a, 0x6e, 0xe0, 0xa2, 0xa0, 0x24, 0x46, 0x1f, 0x62, 0x2a, 0x12, 0x76, 0x44, 0xec, 0x8f, 0xca, + 0x77, 0x4b, 0x82, 0x73, 0x42, 0xe6, 0xef, 0x91, 0xb3, 0xfe, 0x09, 0xcc, 0xa6, 0xfa, 0x12, 0xa9, + 0xb1, 0x94, 0x4c, 0x8d, 0xfa, 0x2b, 0x58, 0x7e, 0x44, 0xf9, 0x43, 0xd7, 0xe2, 0xf1, 0xca, 0x27, + 0xb7, 0x0c, 0x61, 0x18, 0xdb, 0x15, 0xbf, 0x85, 0xb3, 0xbf, 0xa2, 0x01, 0x9b, 0x1c, 0xde, 0xa3, + 0x26, 0x16, 0xfd, 0x93, 0xd3, 0x74, 0x33, 0x79, 0x5c, 0x66, 0xdc, 0x0f, 0xe2, 0xbb, 0x05, 0xd5, + 0xd2, 0xff, 0x5d, 0x82, 0x95, 0xdc, 0xc4, 0xea, 0xac, 0xf7, 0x24, 0x95, 0x30, 0xb5, 0xcd, 0x5b, + 0xd9, 0x65, 0x4f, 0x19, 0x58, 0xe8, 0x3b, 0x49, 0x63, 0x97, 0xff, 0x87, 0xc6, 0xd6, 0xbf, 0x80, + 0xc5, 0x47, 0x94, 0xef, 0x59, 0xe3, 0xb1, 0xe3, 0x0d, 0xd8, 0xbb, 0x9d, 0x45, 0xf5, 0x17, 0xb0, + 0x94, 0x1a, 0x1c, 0x87, 0xe6, 0x2d, 0x80, 0x71, 0xe0, 0x8f, 0x69, 0xc0, 0x27, 0x67, 0xed, 0x7c, + 0xf9, 0x2c, 0xc7, 0xed, 0x4b, 0xa0, 0xa8, 0x2b, 0x13, 0x83, 0xf4, 0x3f, 0x94, 0xe0, 0x5c, 0x0e, + 0x51, 0x78, 0xa7, 0x50, 0x54, 0xb1, 0x10, 0xa8, 0x8e, 0x2d, 0x75, 0x61, 0xdb, 0x34, 0xf0, 0x9b, + 0x7c, 0x9e, 0x3a, 0xee, 0x16, 0x1c, 0xfe, 0xd5, 0x74, 0x52, 0x57, 0x1b, 0x91, 0xad, 0xf4, 0xbb, + 0x30, 0x97, 0xee, 0x79, 0x5b, 0x29, 0xf4, 0x7f, 0x94, 0x60, 0x65, 0xdf, 0x77, 0xdd, 0x74, 0xcc, + 0x97, 0x8e, 0xfc, 0x04, 0x66, 0x93, 0x31, 0x3f, 0xd2, 0xd2, 0x5b, 0xe6, 0x8b, 0xf4, 0x58, 0x72, + 0x09, 0x34, 0x11, 0x7e, 0x5f, 0x5b, 0x0e, 0x37, 0x47, 0x4c, 0xed, 0x02, 0x11, 0x91, 0x7f, 0x66, + 0x39, 0x7c, 0x8f, 0x91, 0x8f, 0x61, 0xae, 0x87, 0xc7, 0xae, 0x3e, 0x75, 0xad, 0x13, 0x01, 0x91, + 0x37, 0x9b, 0x2d, 0xa4, 0x6e, 0x0b, 0xe2, 0x1e, 0x13, 0x75, 0x96, 0xe7, 0x73, 0xe7, 0xe8, 0xc4, + 0xf4, 0x3d, 0xf7, 0x44, 0x6d, 0x0d, 0x90, 0xa4, 0xe7, 0x9e, 0x7b, 0xa2, 0x7f, 0x05, 0x4b, 0x85, + 0xe2, 0x24, 0x62, 0x6d, 0x05, 0x63, 0xed, 0xe4, 0x3a, 0x4a, 0x8a, 0x12, 0x5d, 0x47, 0xfd, 0xb1, + 0x04, 0xed, 0xbc, 0x42, 0xd4, 0x06, 0xfb, 0x12, 0xea, 0xf2, 0x72, 0x44, 0xa9, 0xe2, 0xda, 0x69, + 0xaa, 0x10, 0x5c, 0x0c, 0x44, 0x1b, 0x6a, 0x14, 0xb9, 0x05, 0x4b, 0xa1, 0xf7, 0xd2, 0xf3, 0x5f, + 0x7b, 0x66, 0x5a, 0xb3, 0xa2, 0xec, 0xae, 0x18, 0x8b, 0xaa, 0x33, 0xc9, 0x85, 0xe9, 0xdf, 0x96, + 0x60, 0xb9, 0x98, 0x6f, 0x2e, 0xa1, 0x97, 0xbe, 0x73, 0x42, 0x27, 0x9f, 0x43, 0xcd, 0xe1, 0x74, + 0xc4, 0xd4, 0xd9, 0xed, 0xf2, 0x69, 0x3c, 0x76, 0x39, 0x1d, 0x19, 0x12, 0xae, 0xff, 0xb5, 0x02, + 0x0b, 0xd9, 0xbe, 0xa2, 0xc4, 0x26, 0x2b, 0x68, 0x59, 0xef, 0xa8, 0x93, 0xf6, 0x76, 0x26, 0xb1, + 0xfd, 0xe0, 0xac, 0x39, 0x0b, 0xe3, 0xd4, 0x76, 0x26, 0xc7, 0x9d, 0xcd, 0xa5, 0x28, 0xdd, 0x25, + 0xa3, 0x5d, 0xed, 0xff, 0x33, 0xb5, 0xad, 0xc2, 0xf2, 0x8e, 0xd7, 0x2f, 0xda, 0xe8, 0x99, 0xbd, + 0xa1, 0x5f, 0x80, 0x95, 0x1c, 0x52, 0xee, 0x80, 0x1b, 0xfb, 0x30, 0x9b, 0xba, 0xde, 0x25, 0xcb, + 0x40, 0xba, 0x07, 0x5b, 0x07, 0x5f, 0x77, 0xcd, 0xaf, 0x9f, 0x75, 0xf7, 0x77, 0x1e, 0xec, 0x3e, + 0xdc, 0xdd, 0xd9, 0x5e, 0x78, 0x8f, 0x10, 0x98, 0x53, 0xf4, 0x9d, 0x67, 0x5b, 0xf7, 0x9f, 0xee, + 0x6c, 0x2f, 0x94, 0xc8, 0x79, 0x98, 0x57, 0xb4, 0xed, 0xdd, 0xae, 0x24, 0x56, 0x36, 0xff, 0x53, + 0x03, 0xd8, 0xb3, 0x3c, 0x6b, 0x40, 0xf1, 0x8a, 0xac, 0x07, 0xf3, 0x99, 0x07, 0x1f, 0x72, 0xed, + 0x8c, 0xc7, 0x2c, 0xb5, 0x8c, 0xce, 0x27, 0x67, 0xe2, 0xd4, 0x36, 0xfe, 0x05, 0xb4, 0x92, 0xef, + 0x39, 0x24, 0xf7, 0x5a, 0x56, 0xf0, 0x08, 0xd4, 0xf9, 0xf8, 0x74, 0x90, 0x62, 0xfd, 0x4b, 0x98, + 0x4d, 0xbd, 0x6f, 0x90, 0xdc, 0xb0, 0xa2, 0xa7, 0x92, 0xce, 0xd5, 0x33, 0x50, 0x8a, 0xbb, 0x09, + 0x73, 0xe9, 0x77, 0x0f, 0x32, 0x65, 0x60, 0xe6, 0x11, 0xa5, 0x73, 0xed, 0x2c, 0x98, 0x9a, 0xe0, + 0x27, 0x30, 0xa3, 0x9e, 0x10, 0xc8, 0xa5, 0xbc, 0x36, 0x93, 0xaf, 0x15, 0x9d, 0x0f, 0xa7, 0xf6, + 0x4f, 0x84, 0x4d, 0xbf, 0x4a, 0xe4, 0x85, 0x2d, 0x7c, 0x07, 0xc9, 0x0b, 0x5b, 0xfc, 0xb8, 0x21, + 0x74, 0x9d, 0x7a, 0x39, 0x20, 0x85, 0x26, 0xca, 0x3e, 0x7d, 0xe4, 0x75, 0x5d, 0xfc, 0xfc, 0x30, + 0x84, 0x73, 0xb9, 0x37, 0x1c, 0xb2, 0x9a, 0x0b, 0x2e, 0x53, 0xde, 0x9a, 0x3a, 0xd7, 0xdf, 0x02, + 0x29, 0x67, 0xda, 0xfc, 0x5b, 0x15, 0x1a, 0xf2, 0xd6, 0xfe, 0x70, 0x83, 0x3c, 0x86, 0x1a, 0x9e, + 0x22, 0xc9, 0x19, 0x17, 0xff, 0x9d, 0xb3, 0xee, 0xf1, 0xc9, 0x21, 0x68, 0x89, 0x07, 0x01, 0xa2, + 0x17, 0xde, 0x0d, 0xa6, 0x5e, 0x1f, 0x3a, 0x57, 0x4e, 0xc5, 0x28, 0xc5, 0xf4, 0x60, 0x3e, 0x53, + 0x47, 0xe6, 0x77, 0x68, 0x71, 0x69, 0x9c, 0xdf, 0xa1, 0xd3, 0x2a, 0xd9, 0x17, 0xa0, 0x25, 0xca, + 0xb6, 0xbc, 0x61, 0x8b, 0x0a, 0xc2, 0xbc, 0x61, 0x8b, 0x2b, 0x3f, 0x0a, 0x0b, 0xd9, 0x04, 0x4f, + 0x72, 0x82, 0x4d, 0xa9, 0x89, 0x3a, 0xab, 0x67, 0x03, 0x27, 0x6a, 0xca, 0x04, 0xd1, 0xbc, 0x9a, + 0x8a, 0xe3, 0x71, 0x5e, 0x4d, 0x53, 0xa2, 0xf1, 0xfd, 0x8f, 0x5f, 0xe8, 0x03, 0x87, 0x0f, 0xc3, + 0xde, 0x9a, 0xed, 0x8f, 0xd6, 0x39, 0xb7, 0x7a, 0xeb, 0xd1, 0xc8, 0x9b, 0xd6, 0xd8, 0x59, 0xc7, + 0xd1, 0xbd, 0x3a, 0xfe, 0xd9, 0xe0, 0xd6, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xcd, 0x3d, 0x48, + 0x56, 0xaa, 0x20, 0x00, 0x00, }