cloud.google.com/go/aiplatform@v1.106.0/apiv1/aiplatformpb/featurestore_service.pb.go (about) 1 // Copyright 2025 Google LLC 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 // Code generated by protoc-gen-go. DO NOT EDIT. 16 // versions: 17 // protoc-gen-go v1.35.2 18 // protoc v4.25.7 19 // source: google/cloud/aiplatform/v1/featurestore_service.proto 20 21 package aiplatformpb 22 23 import ( 24 longrunningpb "cloud.google.com/go/longrunning/autogen/longrunningpb" 25 _ "google.golang.org/genproto/googleapis/api/annotations" 26 interval "google.golang.org/genproto/googleapis/type/interval" 27 protoreflect "google.golang.org/protobuf/reflect/protoreflect" 28 protoimpl "google.golang.org/protobuf/runtime/protoimpl" 29 _ "google.golang.org/protobuf/types/known/emptypb" 30 fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" 31 timestamppb "google.golang.org/protobuf/types/known/timestamppb" 32 reflect "reflect" 33 sync "sync" 34 ) 35 36 const ( 37 // Verify that this generated code is sufficiently up-to-date. 38 _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) 39 // Verify that runtime/protoimpl is sufficiently up-to-date. 40 _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) 41 ) 42 43 // Request message for 44 // [FeaturestoreService.CreateFeaturestore][google.cloud.aiplatform.v1.FeaturestoreService.CreateFeaturestore]. 45 type CreateFeaturestoreRequest struct { 46 state protoimpl.MessageState 47 sizeCache protoimpl.SizeCache 48 unknownFields protoimpl.UnknownFields 49 50 // Required. The resource name of the Location to create Featurestores. 51 // Format: 52 // `projects/{project}/locations/{location}` 53 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 54 // Required. The Featurestore to create. 55 Featurestore *Featurestore `protobuf:"bytes,2,opt,name=featurestore,proto3" json:"featurestore,omitempty"` 56 // Required. The ID to use for this Featurestore, which will become the final 57 // component of the Featurestore's resource name. 58 // 59 // This value may be up to 60 characters, and valid characters are 60 // `[a-z0-9_]`. The first character cannot be a number. 61 // 62 // The value must be unique within the project and location. 63 FeaturestoreId string `protobuf:"bytes,3,opt,name=featurestore_id,json=featurestoreId,proto3" json:"featurestore_id,omitempty"` 64 } 65 66 func (x *CreateFeaturestoreRequest) Reset() { 67 *x = CreateFeaturestoreRequest{} 68 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[0] 69 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 70 ms.StoreMessageInfo(mi) 71 } 72 73 func (x *CreateFeaturestoreRequest) String() string { 74 return protoimpl.X.MessageStringOf(x) 75 } 76 77 func (*CreateFeaturestoreRequest) ProtoMessage() {} 78 79 func (x *CreateFeaturestoreRequest) ProtoReflect() protoreflect.Message { 80 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[0] 81 if x != nil { 82 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 83 if ms.LoadMessageInfo() == nil { 84 ms.StoreMessageInfo(mi) 85 } 86 return ms 87 } 88 return mi.MessageOf(x) 89 } 90 91 // Deprecated: Use CreateFeaturestoreRequest.ProtoReflect.Descriptor instead. 92 func (*CreateFeaturestoreRequest) Descriptor() ([]byte, []int) { 93 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{0} 94 } 95 96 func (x *CreateFeaturestoreRequest) GetParent() string { 97 if x != nil { 98 return x.Parent 99 } 100 return "" 101 } 102 103 func (x *CreateFeaturestoreRequest) GetFeaturestore() *Featurestore { 104 if x != nil { 105 return x.Featurestore 106 } 107 return nil 108 } 109 110 func (x *CreateFeaturestoreRequest) GetFeaturestoreId() string { 111 if x != nil { 112 return x.FeaturestoreId 113 } 114 return "" 115 } 116 117 // Request message for 118 // [FeaturestoreService.GetFeaturestore][google.cloud.aiplatform.v1.FeaturestoreService.GetFeaturestore]. 119 type GetFeaturestoreRequest struct { 120 state protoimpl.MessageState 121 sizeCache protoimpl.SizeCache 122 unknownFields protoimpl.UnknownFields 123 124 // Required. The name of the Featurestore resource. 125 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 126 } 127 128 func (x *GetFeaturestoreRequest) Reset() { 129 *x = GetFeaturestoreRequest{} 130 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[1] 131 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 132 ms.StoreMessageInfo(mi) 133 } 134 135 func (x *GetFeaturestoreRequest) String() string { 136 return protoimpl.X.MessageStringOf(x) 137 } 138 139 func (*GetFeaturestoreRequest) ProtoMessage() {} 140 141 func (x *GetFeaturestoreRequest) ProtoReflect() protoreflect.Message { 142 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[1] 143 if x != nil { 144 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 145 if ms.LoadMessageInfo() == nil { 146 ms.StoreMessageInfo(mi) 147 } 148 return ms 149 } 150 return mi.MessageOf(x) 151 } 152 153 // Deprecated: Use GetFeaturestoreRequest.ProtoReflect.Descriptor instead. 154 func (*GetFeaturestoreRequest) Descriptor() ([]byte, []int) { 155 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{1} 156 } 157 158 func (x *GetFeaturestoreRequest) GetName() string { 159 if x != nil { 160 return x.Name 161 } 162 return "" 163 } 164 165 // Request message for 166 // [FeaturestoreService.ListFeaturestores][google.cloud.aiplatform.v1.FeaturestoreService.ListFeaturestores]. 167 type ListFeaturestoresRequest struct { 168 state protoimpl.MessageState 169 sizeCache protoimpl.SizeCache 170 unknownFields protoimpl.UnknownFields 171 172 // Required. The resource name of the Location to list Featurestores. 173 // Format: 174 // `projects/{project}/locations/{location}` 175 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 176 // Lists the featurestores that match the filter expression. The following 177 // fields are supported: 178 // 179 // * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. 180 // Values must be 181 // 182 // in RFC 3339 format. 183 // 184 // * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. 185 // Values must be 186 // 187 // in RFC 3339 format. 188 // 189 // * `online_serving_config.fixed_node_count`: Supports `=`, `!=`, `<`, `>`, 190 // `<=`, and `>=` comparisons. 191 // * `labels`: Supports key-value equality and key presence. 192 // 193 // Examples: 194 // 195 // - `create_time > "2020-01-01" OR update_time > "2020-01-01"` 196 // Featurestores created or updated after 2020-01-01. 197 // - `labels.env = "prod"` 198 // Featurestores with label "env" set to "prod". 199 Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` 200 // The maximum number of Featurestores to return. The service may return fewer 201 // than this value. If unspecified, at most 100 Featurestores will be 202 // returned. The maximum value is 100; any value greater than 100 will be 203 // coerced to 100. 204 PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 205 // A page token, received from a previous 206 // [FeaturestoreService.ListFeaturestores][google.cloud.aiplatform.v1.FeaturestoreService.ListFeaturestores] 207 // call. Provide this to retrieve the subsequent page. 208 // 209 // When paginating, all other parameters provided to 210 // [FeaturestoreService.ListFeaturestores][google.cloud.aiplatform.v1.FeaturestoreService.ListFeaturestores] 211 // must match the call that provided the page token. 212 PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 213 // A comma-separated list of fields to order by, sorted in ascending order. 214 // Use "desc" after a field name for descending. 215 // Supported Fields: 216 // 217 // - `create_time` 218 // - `update_time` 219 // - `online_serving_config.fixed_node_count` 220 OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` 221 // Mask specifying which fields to read. 222 ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"` 223 } 224 225 func (x *ListFeaturestoresRequest) Reset() { 226 *x = ListFeaturestoresRequest{} 227 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[2] 228 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 229 ms.StoreMessageInfo(mi) 230 } 231 232 func (x *ListFeaturestoresRequest) String() string { 233 return protoimpl.X.MessageStringOf(x) 234 } 235 236 func (*ListFeaturestoresRequest) ProtoMessage() {} 237 238 func (x *ListFeaturestoresRequest) ProtoReflect() protoreflect.Message { 239 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[2] 240 if x != nil { 241 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 242 if ms.LoadMessageInfo() == nil { 243 ms.StoreMessageInfo(mi) 244 } 245 return ms 246 } 247 return mi.MessageOf(x) 248 } 249 250 // Deprecated: Use ListFeaturestoresRequest.ProtoReflect.Descriptor instead. 251 func (*ListFeaturestoresRequest) Descriptor() ([]byte, []int) { 252 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{2} 253 } 254 255 func (x *ListFeaturestoresRequest) GetParent() string { 256 if x != nil { 257 return x.Parent 258 } 259 return "" 260 } 261 262 func (x *ListFeaturestoresRequest) GetFilter() string { 263 if x != nil { 264 return x.Filter 265 } 266 return "" 267 } 268 269 func (x *ListFeaturestoresRequest) GetPageSize() int32 { 270 if x != nil { 271 return x.PageSize 272 } 273 return 0 274 } 275 276 func (x *ListFeaturestoresRequest) GetPageToken() string { 277 if x != nil { 278 return x.PageToken 279 } 280 return "" 281 } 282 283 func (x *ListFeaturestoresRequest) GetOrderBy() string { 284 if x != nil { 285 return x.OrderBy 286 } 287 return "" 288 } 289 290 func (x *ListFeaturestoresRequest) GetReadMask() *fieldmaskpb.FieldMask { 291 if x != nil { 292 return x.ReadMask 293 } 294 return nil 295 } 296 297 // Response message for 298 // [FeaturestoreService.ListFeaturestores][google.cloud.aiplatform.v1.FeaturestoreService.ListFeaturestores]. 299 type ListFeaturestoresResponse struct { 300 state protoimpl.MessageState 301 sizeCache protoimpl.SizeCache 302 unknownFields protoimpl.UnknownFields 303 304 // The Featurestores matching the request. 305 Featurestores []*Featurestore `protobuf:"bytes,1,rep,name=featurestores,proto3" json:"featurestores,omitempty"` 306 // A token, which can be sent as 307 // [ListFeaturestoresRequest.page_token][google.cloud.aiplatform.v1.ListFeaturestoresRequest.page_token] 308 // to retrieve the next page. If this field is omitted, there are no 309 // subsequent pages. 310 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 311 } 312 313 func (x *ListFeaturestoresResponse) Reset() { 314 *x = ListFeaturestoresResponse{} 315 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[3] 316 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 317 ms.StoreMessageInfo(mi) 318 } 319 320 func (x *ListFeaturestoresResponse) String() string { 321 return protoimpl.X.MessageStringOf(x) 322 } 323 324 func (*ListFeaturestoresResponse) ProtoMessage() {} 325 326 func (x *ListFeaturestoresResponse) ProtoReflect() protoreflect.Message { 327 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[3] 328 if x != nil { 329 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 330 if ms.LoadMessageInfo() == nil { 331 ms.StoreMessageInfo(mi) 332 } 333 return ms 334 } 335 return mi.MessageOf(x) 336 } 337 338 // Deprecated: Use ListFeaturestoresResponse.ProtoReflect.Descriptor instead. 339 func (*ListFeaturestoresResponse) Descriptor() ([]byte, []int) { 340 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{3} 341 } 342 343 func (x *ListFeaturestoresResponse) GetFeaturestores() []*Featurestore { 344 if x != nil { 345 return x.Featurestores 346 } 347 return nil 348 } 349 350 func (x *ListFeaturestoresResponse) GetNextPageToken() string { 351 if x != nil { 352 return x.NextPageToken 353 } 354 return "" 355 } 356 357 // Request message for 358 // [FeaturestoreService.UpdateFeaturestore][google.cloud.aiplatform.v1.FeaturestoreService.UpdateFeaturestore]. 359 type UpdateFeaturestoreRequest struct { 360 state protoimpl.MessageState 361 sizeCache protoimpl.SizeCache 362 unknownFields protoimpl.UnknownFields 363 364 // Required. The Featurestore's `name` field is used to identify the 365 // Featurestore to be updated. Format: 366 // `projects/{project}/locations/{location}/featurestores/{featurestore}` 367 Featurestore *Featurestore `protobuf:"bytes,1,opt,name=featurestore,proto3" json:"featurestore,omitempty"` 368 // Field mask is used to specify the fields to be overwritten in the 369 // Featurestore resource by the update. 370 // The fields specified in the update_mask are relative to the resource, not 371 // the full request. A field will be overwritten if it is in the mask. If the 372 // user does not provide a mask then only the non-empty fields present in the 373 // request will be overwritten. Set the update_mask to `*` to override all 374 // fields. 375 // 376 // Updatable fields: 377 // 378 // - `labels` 379 // - `online_serving_config.fixed_node_count` 380 // - `online_serving_config.scaling` 381 // - `online_storage_ttl_days` 382 UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` 383 } 384 385 func (x *UpdateFeaturestoreRequest) Reset() { 386 *x = UpdateFeaturestoreRequest{} 387 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[4] 388 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 389 ms.StoreMessageInfo(mi) 390 } 391 392 func (x *UpdateFeaturestoreRequest) String() string { 393 return protoimpl.X.MessageStringOf(x) 394 } 395 396 func (*UpdateFeaturestoreRequest) ProtoMessage() {} 397 398 func (x *UpdateFeaturestoreRequest) ProtoReflect() protoreflect.Message { 399 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[4] 400 if x != nil { 401 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 402 if ms.LoadMessageInfo() == nil { 403 ms.StoreMessageInfo(mi) 404 } 405 return ms 406 } 407 return mi.MessageOf(x) 408 } 409 410 // Deprecated: Use UpdateFeaturestoreRequest.ProtoReflect.Descriptor instead. 411 func (*UpdateFeaturestoreRequest) Descriptor() ([]byte, []int) { 412 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{4} 413 } 414 415 func (x *UpdateFeaturestoreRequest) GetFeaturestore() *Featurestore { 416 if x != nil { 417 return x.Featurestore 418 } 419 return nil 420 } 421 422 func (x *UpdateFeaturestoreRequest) GetUpdateMask() *fieldmaskpb.FieldMask { 423 if x != nil { 424 return x.UpdateMask 425 } 426 return nil 427 } 428 429 // Request message for 430 // [FeaturestoreService.DeleteFeaturestore][google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeaturestore]. 431 type DeleteFeaturestoreRequest struct { 432 state protoimpl.MessageState 433 sizeCache protoimpl.SizeCache 434 unknownFields protoimpl.UnknownFields 435 436 // Required. The name of the Featurestore to be deleted. 437 // Format: 438 // `projects/{project}/locations/{location}/featurestores/{featurestore}` 439 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 440 // If set to true, any EntityTypes and Features for this Featurestore will 441 // also be deleted. (Otherwise, the request will only work if the Featurestore 442 // has no EntityTypes.) 443 Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` 444 } 445 446 func (x *DeleteFeaturestoreRequest) Reset() { 447 *x = DeleteFeaturestoreRequest{} 448 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[5] 449 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 450 ms.StoreMessageInfo(mi) 451 } 452 453 func (x *DeleteFeaturestoreRequest) String() string { 454 return protoimpl.X.MessageStringOf(x) 455 } 456 457 func (*DeleteFeaturestoreRequest) ProtoMessage() {} 458 459 func (x *DeleteFeaturestoreRequest) ProtoReflect() protoreflect.Message { 460 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[5] 461 if x != nil { 462 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 463 if ms.LoadMessageInfo() == nil { 464 ms.StoreMessageInfo(mi) 465 } 466 return ms 467 } 468 return mi.MessageOf(x) 469 } 470 471 // Deprecated: Use DeleteFeaturestoreRequest.ProtoReflect.Descriptor instead. 472 func (*DeleteFeaturestoreRequest) Descriptor() ([]byte, []int) { 473 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{5} 474 } 475 476 func (x *DeleteFeaturestoreRequest) GetName() string { 477 if x != nil { 478 return x.Name 479 } 480 return "" 481 } 482 483 func (x *DeleteFeaturestoreRequest) GetForce() bool { 484 if x != nil { 485 return x.Force 486 } 487 return false 488 } 489 490 // Request message for 491 // [FeaturestoreService.ImportFeatureValues][google.cloud.aiplatform.v1.FeaturestoreService.ImportFeatureValues]. 492 type ImportFeatureValuesRequest struct { 493 state protoimpl.MessageState 494 sizeCache protoimpl.SizeCache 495 unknownFields protoimpl.UnknownFields 496 497 // Details about the source data, including the location of the storage and 498 // the format. 499 // 500 // Types that are assignable to Source: 501 // 502 // *ImportFeatureValuesRequest_AvroSource 503 // *ImportFeatureValuesRequest_BigquerySource 504 // *ImportFeatureValuesRequest_CsvSource 505 Source isImportFeatureValuesRequest_Source `protobuf_oneof:"source"` 506 // Source of Feature timestamp for all Feature values of each entity. 507 // Timestamps must be millisecond-aligned. 508 // 509 // Types that are assignable to FeatureTimeSource: 510 // 511 // *ImportFeatureValuesRequest_FeatureTimeField 512 // *ImportFeatureValuesRequest_FeatureTime 513 FeatureTimeSource isImportFeatureValuesRequest_FeatureTimeSource `protobuf_oneof:"feature_time_source"` 514 // Required. The resource name of the EntityType grouping the Features for 515 // which values are being imported. Format: 516 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entityType}` 517 EntityType string `protobuf:"bytes,1,opt,name=entity_type,json=entityType,proto3" json:"entity_type,omitempty"` 518 // Source column that holds entity IDs. If not provided, entity IDs are 519 // extracted from the column named entity_id. 520 EntityIdField string `protobuf:"bytes,5,opt,name=entity_id_field,json=entityIdField,proto3" json:"entity_id_field,omitempty"` 521 // Required. Specifications defining which Feature values to import from the 522 // entity. The request fails if no feature_specs are provided, and having 523 // multiple feature_specs for one Feature is not allowed. 524 FeatureSpecs []*ImportFeatureValuesRequest_FeatureSpec `protobuf:"bytes,8,rep,name=feature_specs,json=featureSpecs,proto3" json:"feature_specs,omitempty"` 525 // If set, data will not be imported for online serving. This 526 // is typically used for backfilling, where Feature generation timestamps are 527 // not in the timestamp range needed for online serving. 528 DisableOnlineServing bool `protobuf:"varint,9,opt,name=disable_online_serving,json=disableOnlineServing,proto3" json:"disable_online_serving,omitempty"` 529 // Specifies the number of workers that are used to write data to the 530 // Featurestore. Consider the online serving capacity that you require to 531 // achieve the desired import throughput without interfering with online 532 // serving. The value must be positive, and less than or equal to 100. 533 // If not set, defaults to using 1 worker. The low count ensures minimal 534 // impact on online serving performance. 535 WorkerCount int32 `protobuf:"varint,11,opt,name=worker_count,json=workerCount,proto3" json:"worker_count,omitempty"` 536 // If true, API doesn't start ingestion analysis pipeline. 537 DisableIngestionAnalysis bool `protobuf:"varint,12,opt,name=disable_ingestion_analysis,json=disableIngestionAnalysis,proto3" json:"disable_ingestion_analysis,omitempty"` 538 } 539 540 func (x *ImportFeatureValuesRequest) Reset() { 541 *x = ImportFeatureValuesRequest{} 542 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[6] 543 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 544 ms.StoreMessageInfo(mi) 545 } 546 547 func (x *ImportFeatureValuesRequest) String() string { 548 return protoimpl.X.MessageStringOf(x) 549 } 550 551 func (*ImportFeatureValuesRequest) ProtoMessage() {} 552 553 func (x *ImportFeatureValuesRequest) ProtoReflect() protoreflect.Message { 554 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[6] 555 if x != nil { 556 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 557 if ms.LoadMessageInfo() == nil { 558 ms.StoreMessageInfo(mi) 559 } 560 return ms 561 } 562 return mi.MessageOf(x) 563 } 564 565 // Deprecated: Use ImportFeatureValuesRequest.ProtoReflect.Descriptor instead. 566 func (*ImportFeatureValuesRequest) Descriptor() ([]byte, []int) { 567 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{6} 568 } 569 570 func (m *ImportFeatureValuesRequest) GetSource() isImportFeatureValuesRequest_Source { 571 if m != nil { 572 return m.Source 573 } 574 return nil 575 } 576 577 func (x *ImportFeatureValuesRequest) GetAvroSource() *AvroSource { 578 if x, ok := x.GetSource().(*ImportFeatureValuesRequest_AvroSource); ok { 579 return x.AvroSource 580 } 581 return nil 582 } 583 584 func (x *ImportFeatureValuesRequest) GetBigquerySource() *BigQuerySource { 585 if x, ok := x.GetSource().(*ImportFeatureValuesRequest_BigquerySource); ok { 586 return x.BigquerySource 587 } 588 return nil 589 } 590 591 func (x *ImportFeatureValuesRequest) GetCsvSource() *CsvSource { 592 if x, ok := x.GetSource().(*ImportFeatureValuesRequest_CsvSource); ok { 593 return x.CsvSource 594 } 595 return nil 596 } 597 598 func (m *ImportFeatureValuesRequest) GetFeatureTimeSource() isImportFeatureValuesRequest_FeatureTimeSource { 599 if m != nil { 600 return m.FeatureTimeSource 601 } 602 return nil 603 } 604 605 func (x *ImportFeatureValuesRequest) GetFeatureTimeField() string { 606 if x, ok := x.GetFeatureTimeSource().(*ImportFeatureValuesRequest_FeatureTimeField); ok { 607 return x.FeatureTimeField 608 } 609 return "" 610 } 611 612 func (x *ImportFeatureValuesRequest) GetFeatureTime() *timestamppb.Timestamp { 613 if x, ok := x.GetFeatureTimeSource().(*ImportFeatureValuesRequest_FeatureTime); ok { 614 return x.FeatureTime 615 } 616 return nil 617 } 618 619 func (x *ImportFeatureValuesRequest) GetEntityType() string { 620 if x != nil { 621 return x.EntityType 622 } 623 return "" 624 } 625 626 func (x *ImportFeatureValuesRequest) GetEntityIdField() string { 627 if x != nil { 628 return x.EntityIdField 629 } 630 return "" 631 } 632 633 func (x *ImportFeatureValuesRequest) GetFeatureSpecs() []*ImportFeatureValuesRequest_FeatureSpec { 634 if x != nil { 635 return x.FeatureSpecs 636 } 637 return nil 638 } 639 640 func (x *ImportFeatureValuesRequest) GetDisableOnlineServing() bool { 641 if x != nil { 642 return x.DisableOnlineServing 643 } 644 return false 645 } 646 647 func (x *ImportFeatureValuesRequest) GetWorkerCount() int32 { 648 if x != nil { 649 return x.WorkerCount 650 } 651 return 0 652 } 653 654 func (x *ImportFeatureValuesRequest) GetDisableIngestionAnalysis() bool { 655 if x != nil { 656 return x.DisableIngestionAnalysis 657 } 658 return false 659 } 660 661 type isImportFeatureValuesRequest_Source interface { 662 isImportFeatureValuesRequest_Source() 663 } 664 665 type ImportFeatureValuesRequest_AvroSource struct { 666 AvroSource *AvroSource `protobuf:"bytes,2,opt,name=avro_source,json=avroSource,proto3,oneof"` 667 } 668 669 type ImportFeatureValuesRequest_BigquerySource struct { 670 BigquerySource *BigQuerySource `protobuf:"bytes,3,opt,name=bigquery_source,json=bigquerySource,proto3,oneof"` 671 } 672 673 type ImportFeatureValuesRequest_CsvSource struct { 674 CsvSource *CsvSource `protobuf:"bytes,4,opt,name=csv_source,json=csvSource,proto3,oneof"` 675 } 676 677 func (*ImportFeatureValuesRequest_AvroSource) isImportFeatureValuesRequest_Source() {} 678 679 func (*ImportFeatureValuesRequest_BigquerySource) isImportFeatureValuesRequest_Source() {} 680 681 func (*ImportFeatureValuesRequest_CsvSource) isImportFeatureValuesRequest_Source() {} 682 683 type isImportFeatureValuesRequest_FeatureTimeSource interface { 684 isImportFeatureValuesRequest_FeatureTimeSource() 685 } 686 687 type ImportFeatureValuesRequest_FeatureTimeField struct { 688 // Source column that holds the Feature timestamp for all Feature 689 // values in each entity. 690 FeatureTimeField string `protobuf:"bytes,6,opt,name=feature_time_field,json=featureTimeField,proto3,oneof"` 691 } 692 693 type ImportFeatureValuesRequest_FeatureTime struct { 694 // Single Feature timestamp for all entities being imported. The 695 // timestamp must not have higher than millisecond precision. 696 FeatureTime *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=feature_time,json=featureTime,proto3,oneof"` 697 } 698 699 func (*ImportFeatureValuesRequest_FeatureTimeField) isImportFeatureValuesRequest_FeatureTimeSource() { 700 } 701 702 func (*ImportFeatureValuesRequest_FeatureTime) isImportFeatureValuesRequest_FeatureTimeSource() {} 703 704 // Response message for 705 // [FeaturestoreService.ImportFeatureValues][google.cloud.aiplatform.v1.FeaturestoreService.ImportFeatureValues]. 706 type ImportFeatureValuesResponse struct { 707 state protoimpl.MessageState 708 sizeCache protoimpl.SizeCache 709 unknownFields protoimpl.UnknownFields 710 711 // Number of entities that have been imported by the operation. 712 ImportedEntityCount int64 `protobuf:"varint,1,opt,name=imported_entity_count,json=importedEntityCount,proto3" json:"imported_entity_count,omitempty"` 713 // Number of Feature values that have been imported by the operation. 714 ImportedFeatureValueCount int64 `protobuf:"varint,2,opt,name=imported_feature_value_count,json=importedFeatureValueCount,proto3" json:"imported_feature_value_count,omitempty"` 715 // The number of rows in input source that weren't imported due to either 716 // * Not having any featureValues. 717 // * Having a null entityId. 718 // * Having a null timestamp. 719 // * Not being parsable (applicable for CSV sources). 720 InvalidRowCount int64 `protobuf:"varint,6,opt,name=invalid_row_count,json=invalidRowCount,proto3" json:"invalid_row_count,omitempty"` 721 // The number rows that weren't ingested due to having feature timestamps 722 // outside the retention boundary. 723 TimestampOutsideRetentionRowsCount int64 `protobuf:"varint,4,opt,name=timestamp_outside_retention_rows_count,json=timestampOutsideRetentionRowsCount,proto3" json:"timestamp_outside_retention_rows_count,omitempty"` 724 } 725 726 func (x *ImportFeatureValuesResponse) Reset() { 727 *x = ImportFeatureValuesResponse{} 728 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[7] 729 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 730 ms.StoreMessageInfo(mi) 731 } 732 733 func (x *ImportFeatureValuesResponse) String() string { 734 return protoimpl.X.MessageStringOf(x) 735 } 736 737 func (*ImportFeatureValuesResponse) ProtoMessage() {} 738 739 func (x *ImportFeatureValuesResponse) ProtoReflect() protoreflect.Message { 740 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[7] 741 if x != nil { 742 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 743 if ms.LoadMessageInfo() == nil { 744 ms.StoreMessageInfo(mi) 745 } 746 return ms 747 } 748 return mi.MessageOf(x) 749 } 750 751 // Deprecated: Use ImportFeatureValuesResponse.ProtoReflect.Descriptor instead. 752 func (*ImportFeatureValuesResponse) Descriptor() ([]byte, []int) { 753 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{7} 754 } 755 756 func (x *ImportFeatureValuesResponse) GetImportedEntityCount() int64 { 757 if x != nil { 758 return x.ImportedEntityCount 759 } 760 return 0 761 } 762 763 func (x *ImportFeatureValuesResponse) GetImportedFeatureValueCount() int64 { 764 if x != nil { 765 return x.ImportedFeatureValueCount 766 } 767 return 0 768 } 769 770 func (x *ImportFeatureValuesResponse) GetInvalidRowCount() int64 { 771 if x != nil { 772 return x.InvalidRowCount 773 } 774 return 0 775 } 776 777 func (x *ImportFeatureValuesResponse) GetTimestampOutsideRetentionRowsCount() int64 { 778 if x != nil { 779 return x.TimestampOutsideRetentionRowsCount 780 } 781 return 0 782 } 783 784 // Request message for 785 // [FeaturestoreService.BatchReadFeatureValues][google.cloud.aiplatform.v1.FeaturestoreService.BatchReadFeatureValues]. 786 type BatchReadFeatureValuesRequest struct { 787 state protoimpl.MessageState 788 sizeCache protoimpl.SizeCache 789 unknownFields protoimpl.UnknownFields 790 791 // Types that are assignable to ReadOption: 792 // 793 // *BatchReadFeatureValuesRequest_CsvReadInstances 794 // *BatchReadFeatureValuesRequest_BigqueryReadInstances 795 ReadOption isBatchReadFeatureValuesRequest_ReadOption `protobuf_oneof:"read_option"` 796 // Required. The resource name of the Featurestore from which to query Feature 797 // values. Format: 798 // `projects/{project}/locations/{location}/featurestores/{featurestore}` 799 Featurestore string `protobuf:"bytes,1,opt,name=featurestore,proto3" json:"featurestore,omitempty"` 800 // Required. Specifies output location and format. 801 Destination *FeatureValueDestination `protobuf:"bytes,4,opt,name=destination,proto3" json:"destination,omitempty"` 802 // When not empty, the specified fields in the *_read_instances source will be 803 // joined as-is in the output, in addition to those fields from the 804 // Featurestore Entity. 805 // 806 // For BigQuery source, the type of the pass-through values will be 807 // automatically inferred. For CSV source, the pass-through values will be 808 // passed as opaque bytes. 809 PassThroughFields []*BatchReadFeatureValuesRequest_PassThroughField `protobuf:"bytes,8,rep,name=pass_through_fields,json=passThroughFields,proto3" json:"pass_through_fields,omitempty"` 810 // Required. Specifies EntityType grouping Features to read values of and 811 // settings. 812 EntityTypeSpecs []*BatchReadFeatureValuesRequest_EntityTypeSpec `protobuf:"bytes,7,rep,name=entity_type_specs,json=entityTypeSpecs,proto3" json:"entity_type_specs,omitempty"` 813 // Optional. Excludes Feature values with feature generation timestamp before 814 // this timestamp. If not set, retrieve oldest values kept in Feature Store. 815 // Timestamp, if present, must not have higher than millisecond precision. 816 StartTime *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 817 } 818 819 func (x *BatchReadFeatureValuesRequest) Reset() { 820 *x = BatchReadFeatureValuesRequest{} 821 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[8] 822 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 823 ms.StoreMessageInfo(mi) 824 } 825 826 func (x *BatchReadFeatureValuesRequest) String() string { 827 return protoimpl.X.MessageStringOf(x) 828 } 829 830 func (*BatchReadFeatureValuesRequest) ProtoMessage() {} 831 832 func (x *BatchReadFeatureValuesRequest) ProtoReflect() protoreflect.Message { 833 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[8] 834 if x != nil { 835 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 836 if ms.LoadMessageInfo() == nil { 837 ms.StoreMessageInfo(mi) 838 } 839 return ms 840 } 841 return mi.MessageOf(x) 842 } 843 844 // Deprecated: Use BatchReadFeatureValuesRequest.ProtoReflect.Descriptor instead. 845 func (*BatchReadFeatureValuesRequest) Descriptor() ([]byte, []int) { 846 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{8} 847 } 848 849 func (m *BatchReadFeatureValuesRequest) GetReadOption() isBatchReadFeatureValuesRequest_ReadOption { 850 if m != nil { 851 return m.ReadOption 852 } 853 return nil 854 } 855 856 func (x *BatchReadFeatureValuesRequest) GetCsvReadInstances() *CsvSource { 857 if x, ok := x.GetReadOption().(*BatchReadFeatureValuesRequest_CsvReadInstances); ok { 858 return x.CsvReadInstances 859 } 860 return nil 861 } 862 863 func (x *BatchReadFeatureValuesRequest) GetBigqueryReadInstances() *BigQuerySource { 864 if x, ok := x.GetReadOption().(*BatchReadFeatureValuesRequest_BigqueryReadInstances); ok { 865 return x.BigqueryReadInstances 866 } 867 return nil 868 } 869 870 func (x *BatchReadFeatureValuesRequest) GetFeaturestore() string { 871 if x != nil { 872 return x.Featurestore 873 } 874 return "" 875 } 876 877 func (x *BatchReadFeatureValuesRequest) GetDestination() *FeatureValueDestination { 878 if x != nil { 879 return x.Destination 880 } 881 return nil 882 } 883 884 func (x *BatchReadFeatureValuesRequest) GetPassThroughFields() []*BatchReadFeatureValuesRequest_PassThroughField { 885 if x != nil { 886 return x.PassThroughFields 887 } 888 return nil 889 } 890 891 func (x *BatchReadFeatureValuesRequest) GetEntityTypeSpecs() []*BatchReadFeatureValuesRequest_EntityTypeSpec { 892 if x != nil { 893 return x.EntityTypeSpecs 894 } 895 return nil 896 } 897 898 func (x *BatchReadFeatureValuesRequest) GetStartTime() *timestamppb.Timestamp { 899 if x != nil { 900 return x.StartTime 901 } 902 return nil 903 } 904 905 type isBatchReadFeatureValuesRequest_ReadOption interface { 906 isBatchReadFeatureValuesRequest_ReadOption() 907 } 908 909 type BatchReadFeatureValuesRequest_CsvReadInstances struct { 910 // Each read instance consists of exactly one read timestamp and one or more 911 // entity IDs identifying entities of the corresponding EntityTypes whose 912 // Features are requested. 913 // 914 // Each output instance contains Feature values of requested entities 915 // concatenated together as of the read time. 916 // 917 // An example read instance may be `foo_entity_id, bar_entity_id, 918 // 2020-01-01T10:00:00.123Z`. 919 // 920 // An example output instance may be `foo_entity_id, bar_entity_id, 921 // 2020-01-01T10:00:00.123Z, foo_entity_feature1_value, 922 // bar_entity_feature2_value`. 923 // 924 // Timestamp in each read instance must be millisecond-aligned. 925 // 926 // `csv_read_instances` are read instances stored in a plain-text CSV file. 927 // The header should be: 928 // 929 // [ENTITY_TYPE_ID1], [ENTITY_TYPE_ID2], ..., timestamp 930 // 931 // The columns can be in any order. 932 // 933 // Values in the timestamp column must use the RFC 3339 format, e.g. 934 // `2012-07-30T10:43:17.123Z`. 935 CsvReadInstances *CsvSource `protobuf:"bytes,3,opt,name=csv_read_instances,json=csvReadInstances,proto3,oneof"` 936 } 937 938 type BatchReadFeatureValuesRequest_BigqueryReadInstances struct { 939 // Similar to csv_read_instances, but from BigQuery source. 940 BigqueryReadInstances *BigQuerySource `protobuf:"bytes,5,opt,name=bigquery_read_instances,json=bigqueryReadInstances,proto3,oneof"` 941 } 942 943 func (*BatchReadFeatureValuesRequest_CsvReadInstances) isBatchReadFeatureValuesRequest_ReadOption() {} 944 945 func (*BatchReadFeatureValuesRequest_BigqueryReadInstances) isBatchReadFeatureValuesRequest_ReadOption() { 946 } 947 948 // Request message for 949 // [FeaturestoreService.ExportFeatureValues][google.cloud.aiplatform.v1.FeaturestoreService.ExportFeatureValues]. 950 type ExportFeatureValuesRequest struct { 951 state protoimpl.MessageState 952 sizeCache protoimpl.SizeCache 953 unknownFields protoimpl.UnknownFields 954 955 // Required. The mode in which Feature values are exported. 956 // 957 // Types that are assignable to Mode: 958 // 959 // *ExportFeatureValuesRequest_SnapshotExport_ 960 // *ExportFeatureValuesRequest_FullExport_ 961 Mode isExportFeatureValuesRequest_Mode `protobuf_oneof:"mode"` 962 // Required. The resource name of the EntityType from which to export Feature 963 // values. Format: 964 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` 965 EntityType string `protobuf:"bytes,1,opt,name=entity_type,json=entityType,proto3" json:"entity_type,omitempty"` 966 // Required. Specifies destination location and format. 967 Destination *FeatureValueDestination `protobuf:"bytes,4,opt,name=destination,proto3" json:"destination,omitempty"` 968 // Required. Selects Features to export values of. 969 FeatureSelector *FeatureSelector `protobuf:"bytes,5,opt,name=feature_selector,json=featureSelector,proto3" json:"feature_selector,omitempty"` 970 // Per-Feature export settings. 971 Settings []*DestinationFeatureSetting `protobuf:"bytes,6,rep,name=settings,proto3" json:"settings,omitempty"` 972 } 973 974 func (x *ExportFeatureValuesRequest) Reset() { 975 *x = ExportFeatureValuesRequest{} 976 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[9] 977 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 978 ms.StoreMessageInfo(mi) 979 } 980 981 func (x *ExportFeatureValuesRequest) String() string { 982 return protoimpl.X.MessageStringOf(x) 983 } 984 985 func (*ExportFeatureValuesRequest) ProtoMessage() {} 986 987 func (x *ExportFeatureValuesRequest) ProtoReflect() protoreflect.Message { 988 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[9] 989 if x != nil { 990 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 991 if ms.LoadMessageInfo() == nil { 992 ms.StoreMessageInfo(mi) 993 } 994 return ms 995 } 996 return mi.MessageOf(x) 997 } 998 999 // Deprecated: Use ExportFeatureValuesRequest.ProtoReflect.Descriptor instead. 1000 func (*ExportFeatureValuesRequest) Descriptor() ([]byte, []int) { 1001 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{9} 1002 } 1003 1004 func (m *ExportFeatureValuesRequest) GetMode() isExportFeatureValuesRequest_Mode { 1005 if m != nil { 1006 return m.Mode 1007 } 1008 return nil 1009 } 1010 1011 func (x *ExportFeatureValuesRequest) GetSnapshotExport() *ExportFeatureValuesRequest_SnapshotExport { 1012 if x, ok := x.GetMode().(*ExportFeatureValuesRequest_SnapshotExport_); ok { 1013 return x.SnapshotExport 1014 } 1015 return nil 1016 } 1017 1018 func (x *ExportFeatureValuesRequest) GetFullExport() *ExportFeatureValuesRequest_FullExport { 1019 if x, ok := x.GetMode().(*ExportFeatureValuesRequest_FullExport_); ok { 1020 return x.FullExport 1021 } 1022 return nil 1023 } 1024 1025 func (x *ExportFeatureValuesRequest) GetEntityType() string { 1026 if x != nil { 1027 return x.EntityType 1028 } 1029 return "" 1030 } 1031 1032 func (x *ExportFeatureValuesRequest) GetDestination() *FeatureValueDestination { 1033 if x != nil { 1034 return x.Destination 1035 } 1036 return nil 1037 } 1038 1039 func (x *ExportFeatureValuesRequest) GetFeatureSelector() *FeatureSelector { 1040 if x != nil { 1041 return x.FeatureSelector 1042 } 1043 return nil 1044 } 1045 1046 func (x *ExportFeatureValuesRequest) GetSettings() []*DestinationFeatureSetting { 1047 if x != nil { 1048 return x.Settings 1049 } 1050 return nil 1051 } 1052 1053 type isExportFeatureValuesRequest_Mode interface { 1054 isExportFeatureValuesRequest_Mode() 1055 } 1056 1057 type ExportFeatureValuesRequest_SnapshotExport_ struct { 1058 // Exports the latest Feature values of all entities of the EntityType 1059 // within a time range. 1060 SnapshotExport *ExportFeatureValuesRequest_SnapshotExport `protobuf:"bytes,3,opt,name=snapshot_export,json=snapshotExport,proto3,oneof"` 1061 } 1062 1063 type ExportFeatureValuesRequest_FullExport_ struct { 1064 // Exports all historical values of all entities of the EntityType within a 1065 // time range 1066 FullExport *ExportFeatureValuesRequest_FullExport `protobuf:"bytes,7,opt,name=full_export,json=fullExport,proto3,oneof"` 1067 } 1068 1069 func (*ExportFeatureValuesRequest_SnapshotExport_) isExportFeatureValuesRequest_Mode() {} 1070 1071 func (*ExportFeatureValuesRequest_FullExport_) isExportFeatureValuesRequest_Mode() {} 1072 1073 type DestinationFeatureSetting struct { 1074 state protoimpl.MessageState 1075 sizeCache protoimpl.SizeCache 1076 unknownFields protoimpl.UnknownFields 1077 1078 // Required. The ID of the Feature to apply the setting to. 1079 FeatureId string `protobuf:"bytes,1,opt,name=feature_id,json=featureId,proto3" json:"feature_id,omitempty"` 1080 // Specify the field name in the export destination. If not specified, 1081 // Feature ID is used. 1082 DestinationField string `protobuf:"bytes,2,opt,name=destination_field,json=destinationField,proto3" json:"destination_field,omitempty"` 1083 } 1084 1085 func (x *DestinationFeatureSetting) Reset() { 1086 *x = DestinationFeatureSetting{} 1087 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[10] 1088 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1089 ms.StoreMessageInfo(mi) 1090 } 1091 1092 func (x *DestinationFeatureSetting) String() string { 1093 return protoimpl.X.MessageStringOf(x) 1094 } 1095 1096 func (*DestinationFeatureSetting) ProtoMessage() {} 1097 1098 func (x *DestinationFeatureSetting) ProtoReflect() protoreflect.Message { 1099 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[10] 1100 if x != nil { 1101 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1102 if ms.LoadMessageInfo() == nil { 1103 ms.StoreMessageInfo(mi) 1104 } 1105 return ms 1106 } 1107 return mi.MessageOf(x) 1108 } 1109 1110 // Deprecated: Use DestinationFeatureSetting.ProtoReflect.Descriptor instead. 1111 func (*DestinationFeatureSetting) Descriptor() ([]byte, []int) { 1112 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{10} 1113 } 1114 1115 func (x *DestinationFeatureSetting) GetFeatureId() string { 1116 if x != nil { 1117 return x.FeatureId 1118 } 1119 return "" 1120 } 1121 1122 func (x *DestinationFeatureSetting) GetDestinationField() string { 1123 if x != nil { 1124 return x.DestinationField 1125 } 1126 return "" 1127 } 1128 1129 // A destination location for Feature values and format. 1130 type FeatureValueDestination struct { 1131 state protoimpl.MessageState 1132 sizeCache protoimpl.SizeCache 1133 unknownFields protoimpl.UnknownFields 1134 1135 // Types that are assignable to Destination: 1136 // 1137 // *FeatureValueDestination_BigqueryDestination 1138 // *FeatureValueDestination_TfrecordDestination 1139 // *FeatureValueDestination_CsvDestination 1140 Destination isFeatureValueDestination_Destination `protobuf_oneof:"destination"` 1141 } 1142 1143 func (x *FeatureValueDestination) Reset() { 1144 *x = FeatureValueDestination{} 1145 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[11] 1146 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1147 ms.StoreMessageInfo(mi) 1148 } 1149 1150 func (x *FeatureValueDestination) String() string { 1151 return protoimpl.X.MessageStringOf(x) 1152 } 1153 1154 func (*FeatureValueDestination) ProtoMessage() {} 1155 1156 func (x *FeatureValueDestination) ProtoReflect() protoreflect.Message { 1157 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[11] 1158 if x != nil { 1159 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1160 if ms.LoadMessageInfo() == nil { 1161 ms.StoreMessageInfo(mi) 1162 } 1163 return ms 1164 } 1165 return mi.MessageOf(x) 1166 } 1167 1168 // Deprecated: Use FeatureValueDestination.ProtoReflect.Descriptor instead. 1169 func (*FeatureValueDestination) Descriptor() ([]byte, []int) { 1170 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{11} 1171 } 1172 1173 func (m *FeatureValueDestination) GetDestination() isFeatureValueDestination_Destination { 1174 if m != nil { 1175 return m.Destination 1176 } 1177 return nil 1178 } 1179 1180 func (x *FeatureValueDestination) GetBigqueryDestination() *BigQueryDestination { 1181 if x, ok := x.GetDestination().(*FeatureValueDestination_BigqueryDestination); ok { 1182 return x.BigqueryDestination 1183 } 1184 return nil 1185 } 1186 1187 func (x *FeatureValueDestination) GetTfrecordDestination() *TFRecordDestination { 1188 if x, ok := x.GetDestination().(*FeatureValueDestination_TfrecordDestination); ok { 1189 return x.TfrecordDestination 1190 } 1191 return nil 1192 } 1193 1194 func (x *FeatureValueDestination) GetCsvDestination() *CsvDestination { 1195 if x, ok := x.GetDestination().(*FeatureValueDestination_CsvDestination); ok { 1196 return x.CsvDestination 1197 } 1198 return nil 1199 } 1200 1201 type isFeatureValueDestination_Destination interface { 1202 isFeatureValueDestination_Destination() 1203 } 1204 1205 type FeatureValueDestination_BigqueryDestination struct { 1206 // Output in BigQuery format. 1207 // [BigQueryDestination.output_uri][google.cloud.aiplatform.v1.BigQueryDestination.output_uri] 1208 // in 1209 // [FeatureValueDestination.bigquery_destination][google.cloud.aiplatform.v1.FeatureValueDestination.bigquery_destination] 1210 // must refer to a table. 1211 BigqueryDestination *BigQueryDestination `protobuf:"bytes,1,opt,name=bigquery_destination,json=bigqueryDestination,proto3,oneof"` 1212 } 1213 1214 type FeatureValueDestination_TfrecordDestination struct { 1215 // Output in TFRecord format. 1216 // 1217 // Below are the mapping from Feature value type 1218 // in Featurestore to Feature value type in TFRecord: 1219 // 1220 // Value type in Featurestore | Value type in TFRecord 1221 // DOUBLE, DOUBLE_ARRAY | FLOAT_LIST 1222 // INT64, INT64_ARRAY | INT64_LIST 1223 // STRING, STRING_ARRAY, BYTES | BYTES_LIST 1224 // true -> byte_string("true"), false -> byte_string("false") 1225 // BOOL, BOOL_ARRAY (true, false) | BYTES_LIST 1226 TfrecordDestination *TFRecordDestination `protobuf:"bytes,2,opt,name=tfrecord_destination,json=tfrecordDestination,proto3,oneof"` 1227 } 1228 1229 type FeatureValueDestination_CsvDestination struct { 1230 // Output in CSV format. Array Feature value types are not allowed in CSV 1231 // format. 1232 CsvDestination *CsvDestination `protobuf:"bytes,3,opt,name=csv_destination,json=csvDestination,proto3,oneof"` 1233 } 1234 1235 func (*FeatureValueDestination_BigqueryDestination) isFeatureValueDestination_Destination() {} 1236 1237 func (*FeatureValueDestination_TfrecordDestination) isFeatureValueDestination_Destination() {} 1238 1239 func (*FeatureValueDestination_CsvDestination) isFeatureValueDestination_Destination() {} 1240 1241 // Response message for 1242 // [FeaturestoreService.ExportFeatureValues][google.cloud.aiplatform.v1.FeaturestoreService.ExportFeatureValues]. 1243 type ExportFeatureValuesResponse struct { 1244 state protoimpl.MessageState 1245 sizeCache protoimpl.SizeCache 1246 unknownFields protoimpl.UnknownFields 1247 } 1248 1249 func (x *ExportFeatureValuesResponse) Reset() { 1250 *x = ExportFeatureValuesResponse{} 1251 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[12] 1252 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1253 ms.StoreMessageInfo(mi) 1254 } 1255 1256 func (x *ExportFeatureValuesResponse) String() string { 1257 return protoimpl.X.MessageStringOf(x) 1258 } 1259 1260 func (*ExportFeatureValuesResponse) ProtoMessage() {} 1261 1262 func (x *ExportFeatureValuesResponse) ProtoReflect() protoreflect.Message { 1263 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[12] 1264 if x != nil { 1265 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1266 if ms.LoadMessageInfo() == nil { 1267 ms.StoreMessageInfo(mi) 1268 } 1269 return ms 1270 } 1271 return mi.MessageOf(x) 1272 } 1273 1274 // Deprecated: Use ExportFeatureValuesResponse.ProtoReflect.Descriptor instead. 1275 func (*ExportFeatureValuesResponse) Descriptor() ([]byte, []int) { 1276 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{12} 1277 } 1278 1279 // Response message for 1280 // [FeaturestoreService.BatchReadFeatureValues][google.cloud.aiplatform.v1.FeaturestoreService.BatchReadFeatureValues]. 1281 type BatchReadFeatureValuesResponse struct { 1282 state protoimpl.MessageState 1283 sizeCache protoimpl.SizeCache 1284 unknownFields protoimpl.UnknownFields 1285 } 1286 1287 func (x *BatchReadFeatureValuesResponse) Reset() { 1288 *x = BatchReadFeatureValuesResponse{} 1289 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[13] 1290 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1291 ms.StoreMessageInfo(mi) 1292 } 1293 1294 func (x *BatchReadFeatureValuesResponse) String() string { 1295 return protoimpl.X.MessageStringOf(x) 1296 } 1297 1298 func (*BatchReadFeatureValuesResponse) ProtoMessage() {} 1299 1300 func (x *BatchReadFeatureValuesResponse) ProtoReflect() protoreflect.Message { 1301 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[13] 1302 if x != nil { 1303 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1304 if ms.LoadMessageInfo() == nil { 1305 ms.StoreMessageInfo(mi) 1306 } 1307 return ms 1308 } 1309 return mi.MessageOf(x) 1310 } 1311 1312 // Deprecated: Use BatchReadFeatureValuesResponse.ProtoReflect.Descriptor instead. 1313 func (*BatchReadFeatureValuesResponse) Descriptor() ([]byte, []int) { 1314 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{13} 1315 } 1316 1317 // Request message for 1318 // [FeaturestoreService.CreateEntityType][google.cloud.aiplatform.v1.FeaturestoreService.CreateEntityType]. 1319 type CreateEntityTypeRequest struct { 1320 state protoimpl.MessageState 1321 sizeCache protoimpl.SizeCache 1322 unknownFields protoimpl.UnknownFields 1323 1324 // Required. The resource name of the Featurestore to create EntityTypes. 1325 // Format: 1326 // `projects/{project}/locations/{location}/featurestores/{featurestore}` 1327 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1328 // The EntityType to create. 1329 EntityType *EntityType `protobuf:"bytes,2,opt,name=entity_type,json=entityType,proto3" json:"entity_type,omitempty"` 1330 // Required. The ID to use for the EntityType, which will become the final 1331 // component of the EntityType's resource name. 1332 // 1333 // This value may be up to 60 characters, and valid characters are 1334 // `[a-z0-9_]`. The first character cannot be a number. 1335 // 1336 // The value must be unique within a featurestore. 1337 EntityTypeId string `protobuf:"bytes,3,opt,name=entity_type_id,json=entityTypeId,proto3" json:"entity_type_id,omitempty"` 1338 } 1339 1340 func (x *CreateEntityTypeRequest) Reset() { 1341 *x = CreateEntityTypeRequest{} 1342 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[14] 1343 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1344 ms.StoreMessageInfo(mi) 1345 } 1346 1347 func (x *CreateEntityTypeRequest) String() string { 1348 return protoimpl.X.MessageStringOf(x) 1349 } 1350 1351 func (*CreateEntityTypeRequest) ProtoMessage() {} 1352 1353 func (x *CreateEntityTypeRequest) ProtoReflect() protoreflect.Message { 1354 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[14] 1355 if x != nil { 1356 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1357 if ms.LoadMessageInfo() == nil { 1358 ms.StoreMessageInfo(mi) 1359 } 1360 return ms 1361 } 1362 return mi.MessageOf(x) 1363 } 1364 1365 // Deprecated: Use CreateEntityTypeRequest.ProtoReflect.Descriptor instead. 1366 func (*CreateEntityTypeRequest) Descriptor() ([]byte, []int) { 1367 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{14} 1368 } 1369 1370 func (x *CreateEntityTypeRequest) GetParent() string { 1371 if x != nil { 1372 return x.Parent 1373 } 1374 return "" 1375 } 1376 1377 func (x *CreateEntityTypeRequest) GetEntityType() *EntityType { 1378 if x != nil { 1379 return x.EntityType 1380 } 1381 return nil 1382 } 1383 1384 func (x *CreateEntityTypeRequest) GetEntityTypeId() string { 1385 if x != nil { 1386 return x.EntityTypeId 1387 } 1388 return "" 1389 } 1390 1391 // Request message for 1392 // [FeaturestoreService.GetEntityType][google.cloud.aiplatform.v1.FeaturestoreService.GetEntityType]. 1393 type GetEntityTypeRequest struct { 1394 state protoimpl.MessageState 1395 sizeCache protoimpl.SizeCache 1396 unknownFields protoimpl.UnknownFields 1397 1398 // Required. The name of the EntityType resource. 1399 // Format: 1400 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` 1401 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1402 } 1403 1404 func (x *GetEntityTypeRequest) Reset() { 1405 *x = GetEntityTypeRequest{} 1406 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[15] 1407 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1408 ms.StoreMessageInfo(mi) 1409 } 1410 1411 func (x *GetEntityTypeRequest) String() string { 1412 return protoimpl.X.MessageStringOf(x) 1413 } 1414 1415 func (*GetEntityTypeRequest) ProtoMessage() {} 1416 1417 func (x *GetEntityTypeRequest) ProtoReflect() protoreflect.Message { 1418 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[15] 1419 if x != nil { 1420 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1421 if ms.LoadMessageInfo() == nil { 1422 ms.StoreMessageInfo(mi) 1423 } 1424 return ms 1425 } 1426 return mi.MessageOf(x) 1427 } 1428 1429 // Deprecated: Use GetEntityTypeRequest.ProtoReflect.Descriptor instead. 1430 func (*GetEntityTypeRequest) Descriptor() ([]byte, []int) { 1431 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{15} 1432 } 1433 1434 func (x *GetEntityTypeRequest) GetName() string { 1435 if x != nil { 1436 return x.Name 1437 } 1438 return "" 1439 } 1440 1441 // Request message for 1442 // [FeaturestoreService.ListEntityTypes][google.cloud.aiplatform.v1.FeaturestoreService.ListEntityTypes]. 1443 type ListEntityTypesRequest struct { 1444 state protoimpl.MessageState 1445 sizeCache protoimpl.SizeCache 1446 unknownFields protoimpl.UnknownFields 1447 1448 // Required. The resource name of the Featurestore to list EntityTypes. 1449 // Format: 1450 // `projects/{project}/locations/{location}/featurestores/{featurestore}` 1451 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1452 // Lists the EntityTypes that match the filter expression. The following 1453 // filters are supported: 1454 // 1455 // * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. 1456 // Values must be in RFC 3339 format. 1457 // * `update_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. 1458 // Values must be in RFC 3339 format. 1459 // * `labels`: Supports key-value equality as well as key presence. 1460 // 1461 // Examples: 1462 // 1463 // - `create_time > \"2020-01-31T15:30:00.000000Z\" OR 1464 // update_time > \"2020-01-31T15:30:00.000000Z\"` --> EntityTypes created 1465 // or updated after 2020-01-31T15:30:00.000000Z. 1466 // - `labels.active = yes AND labels.env = prod` --> EntityTypes having both 1467 // (active: yes) and (env: prod) labels. 1468 // - `labels.env: *` --> Any EntityType which has a label with 'env' as the 1469 // key. 1470 Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` 1471 // The maximum number of EntityTypes to return. The service may return fewer 1472 // than this value. If unspecified, at most 1000 EntityTypes will be returned. 1473 // The maximum value is 1000; any value greater than 1000 will be coerced to 1474 // 1000. 1475 PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 1476 // A page token, received from a previous 1477 // [FeaturestoreService.ListEntityTypes][google.cloud.aiplatform.v1.FeaturestoreService.ListEntityTypes] 1478 // call. Provide this to retrieve the subsequent page. 1479 // 1480 // When paginating, all other parameters provided to 1481 // [FeaturestoreService.ListEntityTypes][google.cloud.aiplatform.v1.FeaturestoreService.ListEntityTypes] 1482 // must match the call that provided the page token. 1483 PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 1484 // A comma-separated list of fields to order by, sorted in ascending order. 1485 // Use "desc" after a field name for descending. 1486 // 1487 // Supported fields: 1488 // 1489 // - `entity_type_id` 1490 // - `create_time` 1491 // - `update_time` 1492 OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` 1493 // Mask specifying which fields to read. 1494 ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"` 1495 } 1496 1497 func (x *ListEntityTypesRequest) Reset() { 1498 *x = ListEntityTypesRequest{} 1499 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[16] 1500 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1501 ms.StoreMessageInfo(mi) 1502 } 1503 1504 func (x *ListEntityTypesRequest) String() string { 1505 return protoimpl.X.MessageStringOf(x) 1506 } 1507 1508 func (*ListEntityTypesRequest) ProtoMessage() {} 1509 1510 func (x *ListEntityTypesRequest) ProtoReflect() protoreflect.Message { 1511 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[16] 1512 if x != nil { 1513 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1514 if ms.LoadMessageInfo() == nil { 1515 ms.StoreMessageInfo(mi) 1516 } 1517 return ms 1518 } 1519 return mi.MessageOf(x) 1520 } 1521 1522 // Deprecated: Use ListEntityTypesRequest.ProtoReflect.Descriptor instead. 1523 func (*ListEntityTypesRequest) Descriptor() ([]byte, []int) { 1524 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{16} 1525 } 1526 1527 func (x *ListEntityTypesRequest) GetParent() string { 1528 if x != nil { 1529 return x.Parent 1530 } 1531 return "" 1532 } 1533 1534 func (x *ListEntityTypesRequest) GetFilter() string { 1535 if x != nil { 1536 return x.Filter 1537 } 1538 return "" 1539 } 1540 1541 func (x *ListEntityTypesRequest) GetPageSize() int32 { 1542 if x != nil { 1543 return x.PageSize 1544 } 1545 return 0 1546 } 1547 1548 func (x *ListEntityTypesRequest) GetPageToken() string { 1549 if x != nil { 1550 return x.PageToken 1551 } 1552 return "" 1553 } 1554 1555 func (x *ListEntityTypesRequest) GetOrderBy() string { 1556 if x != nil { 1557 return x.OrderBy 1558 } 1559 return "" 1560 } 1561 1562 func (x *ListEntityTypesRequest) GetReadMask() *fieldmaskpb.FieldMask { 1563 if x != nil { 1564 return x.ReadMask 1565 } 1566 return nil 1567 } 1568 1569 // Response message for 1570 // [FeaturestoreService.ListEntityTypes][google.cloud.aiplatform.v1.FeaturestoreService.ListEntityTypes]. 1571 type ListEntityTypesResponse struct { 1572 state protoimpl.MessageState 1573 sizeCache protoimpl.SizeCache 1574 unknownFields protoimpl.UnknownFields 1575 1576 // The EntityTypes matching the request. 1577 EntityTypes []*EntityType `protobuf:"bytes,1,rep,name=entity_types,json=entityTypes,proto3" json:"entity_types,omitempty"` 1578 // A token, which can be sent as 1579 // [ListEntityTypesRequest.page_token][google.cloud.aiplatform.v1.ListEntityTypesRequest.page_token] 1580 // to retrieve the next page. If this field is omitted, there are no 1581 // subsequent pages. 1582 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 1583 } 1584 1585 func (x *ListEntityTypesResponse) Reset() { 1586 *x = ListEntityTypesResponse{} 1587 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[17] 1588 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1589 ms.StoreMessageInfo(mi) 1590 } 1591 1592 func (x *ListEntityTypesResponse) String() string { 1593 return protoimpl.X.MessageStringOf(x) 1594 } 1595 1596 func (*ListEntityTypesResponse) ProtoMessage() {} 1597 1598 func (x *ListEntityTypesResponse) ProtoReflect() protoreflect.Message { 1599 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[17] 1600 if x != nil { 1601 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1602 if ms.LoadMessageInfo() == nil { 1603 ms.StoreMessageInfo(mi) 1604 } 1605 return ms 1606 } 1607 return mi.MessageOf(x) 1608 } 1609 1610 // Deprecated: Use ListEntityTypesResponse.ProtoReflect.Descriptor instead. 1611 func (*ListEntityTypesResponse) Descriptor() ([]byte, []int) { 1612 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{17} 1613 } 1614 1615 func (x *ListEntityTypesResponse) GetEntityTypes() []*EntityType { 1616 if x != nil { 1617 return x.EntityTypes 1618 } 1619 return nil 1620 } 1621 1622 func (x *ListEntityTypesResponse) GetNextPageToken() string { 1623 if x != nil { 1624 return x.NextPageToken 1625 } 1626 return "" 1627 } 1628 1629 // Request message for 1630 // [FeaturestoreService.UpdateEntityType][google.cloud.aiplatform.v1.FeaturestoreService.UpdateEntityType]. 1631 type UpdateEntityTypeRequest struct { 1632 state protoimpl.MessageState 1633 sizeCache protoimpl.SizeCache 1634 unknownFields protoimpl.UnknownFields 1635 1636 // Required. The EntityType's `name` field is used to identify the EntityType 1637 // to be updated. Format: 1638 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` 1639 EntityType *EntityType `protobuf:"bytes,1,opt,name=entity_type,json=entityType,proto3" json:"entity_type,omitempty"` 1640 // Field mask is used to specify the fields to be overwritten in the 1641 // EntityType resource by the update. 1642 // The fields specified in the update_mask are relative to the resource, not 1643 // the full request. A field will be overwritten if it is in the mask. If the 1644 // user does not provide a mask then only the non-empty fields present in the 1645 // request will be overwritten. Set the update_mask to `*` to override all 1646 // fields. 1647 // 1648 // Updatable fields: 1649 // 1650 // - `description` 1651 // - `labels` 1652 // - `monitoring_config.snapshot_analysis.disabled` 1653 // - `monitoring_config.snapshot_analysis.monitoring_interval_days` 1654 // - `monitoring_config.snapshot_analysis.staleness_days` 1655 // - `monitoring_config.import_features_analysis.state` 1656 // - `monitoring_config.import_features_analysis.anomaly_detection_baseline` 1657 // - `monitoring_config.numerical_threshold_config.value` 1658 // - `monitoring_config.categorical_threshold_config.value` 1659 // - `offline_storage_ttl_days` 1660 UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` 1661 } 1662 1663 func (x *UpdateEntityTypeRequest) Reset() { 1664 *x = UpdateEntityTypeRequest{} 1665 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[18] 1666 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1667 ms.StoreMessageInfo(mi) 1668 } 1669 1670 func (x *UpdateEntityTypeRequest) String() string { 1671 return protoimpl.X.MessageStringOf(x) 1672 } 1673 1674 func (*UpdateEntityTypeRequest) ProtoMessage() {} 1675 1676 func (x *UpdateEntityTypeRequest) ProtoReflect() protoreflect.Message { 1677 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[18] 1678 if x != nil { 1679 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1680 if ms.LoadMessageInfo() == nil { 1681 ms.StoreMessageInfo(mi) 1682 } 1683 return ms 1684 } 1685 return mi.MessageOf(x) 1686 } 1687 1688 // Deprecated: Use UpdateEntityTypeRequest.ProtoReflect.Descriptor instead. 1689 func (*UpdateEntityTypeRequest) Descriptor() ([]byte, []int) { 1690 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{18} 1691 } 1692 1693 func (x *UpdateEntityTypeRequest) GetEntityType() *EntityType { 1694 if x != nil { 1695 return x.EntityType 1696 } 1697 return nil 1698 } 1699 1700 func (x *UpdateEntityTypeRequest) GetUpdateMask() *fieldmaskpb.FieldMask { 1701 if x != nil { 1702 return x.UpdateMask 1703 } 1704 return nil 1705 } 1706 1707 // Request message for 1708 // [FeaturestoreService.DeleteEntityType][google.cloud.aiplatform.v1.FeaturestoreService.DeleteEntityType]. 1709 type DeleteEntityTypeRequest struct { 1710 state protoimpl.MessageState 1711 sizeCache protoimpl.SizeCache 1712 unknownFields protoimpl.UnknownFields 1713 1714 // Required. The name of the EntityType to be deleted. 1715 // Format: 1716 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` 1717 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1718 // If set to true, any Features for this EntityType will also be deleted. 1719 // (Otherwise, the request will only work if the EntityType has no Features.) 1720 Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` 1721 } 1722 1723 func (x *DeleteEntityTypeRequest) Reset() { 1724 *x = DeleteEntityTypeRequest{} 1725 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[19] 1726 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1727 ms.StoreMessageInfo(mi) 1728 } 1729 1730 func (x *DeleteEntityTypeRequest) String() string { 1731 return protoimpl.X.MessageStringOf(x) 1732 } 1733 1734 func (*DeleteEntityTypeRequest) ProtoMessage() {} 1735 1736 func (x *DeleteEntityTypeRequest) ProtoReflect() protoreflect.Message { 1737 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[19] 1738 if x != nil { 1739 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1740 if ms.LoadMessageInfo() == nil { 1741 ms.StoreMessageInfo(mi) 1742 } 1743 return ms 1744 } 1745 return mi.MessageOf(x) 1746 } 1747 1748 // Deprecated: Use DeleteEntityTypeRequest.ProtoReflect.Descriptor instead. 1749 func (*DeleteEntityTypeRequest) Descriptor() ([]byte, []int) { 1750 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{19} 1751 } 1752 1753 func (x *DeleteEntityTypeRequest) GetName() string { 1754 if x != nil { 1755 return x.Name 1756 } 1757 return "" 1758 } 1759 1760 func (x *DeleteEntityTypeRequest) GetForce() bool { 1761 if x != nil { 1762 return x.Force 1763 } 1764 return false 1765 } 1766 1767 // Request message for 1768 // [FeaturestoreService.CreateFeature][google.cloud.aiplatform.v1.FeaturestoreService.CreateFeature]. 1769 // Request message for 1770 // [FeatureRegistryService.CreateFeature][google.cloud.aiplatform.v1.FeatureRegistryService.CreateFeature]. 1771 type CreateFeatureRequest struct { 1772 state protoimpl.MessageState 1773 sizeCache protoimpl.SizeCache 1774 unknownFields protoimpl.UnknownFields 1775 1776 // Required. The resource name of the EntityType or FeatureGroup to create a 1777 // Feature. Format for entity_type as parent: 1778 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` 1779 // Format for feature_group as parent: 1780 // `projects/{project}/locations/{location}/featureGroups/{feature_group}` 1781 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1782 // Required. The Feature to create. 1783 Feature *Feature `protobuf:"bytes,2,opt,name=feature,proto3" json:"feature,omitempty"` 1784 // Required. The ID to use for the Feature, which will become the final 1785 // component of the Feature's resource name. 1786 // 1787 // This value may be up to 128 characters, and valid characters are 1788 // `[a-z0-9_]`. The first character cannot be a number. 1789 // 1790 // The value must be unique within an EntityType/FeatureGroup. 1791 FeatureId string `protobuf:"bytes,3,opt,name=feature_id,json=featureId,proto3" json:"feature_id,omitempty"` 1792 } 1793 1794 func (x *CreateFeatureRequest) Reset() { 1795 *x = CreateFeatureRequest{} 1796 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[20] 1797 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1798 ms.StoreMessageInfo(mi) 1799 } 1800 1801 func (x *CreateFeatureRequest) String() string { 1802 return protoimpl.X.MessageStringOf(x) 1803 } 1804 1805 func (*CreateFeatureRequest) ProtoMessage() {} 1806 1807 func (x *CreateFeatureRequest) ProtoReflect() protoreflect.Message { 1808 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[20] 1809 if x != nil { 1810 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1811 if ms.LoadMessageInfo() == nil { 1812 ms.StoreMessageInfo(mi) 1813 } 1814 return ms 1815 } 1816 return mi.MessageOf(x) 1817 } 1818 1819 // Deprecated: Use CreateFeatureRequest.ProtoReflect.Descriptor instead. 1820 func (*CreateFeatureRequest) Descriptor() ([]byte, []int) { 1821 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{20} 1822 } 1823 1824 func (x *CreateFeatureRequest) GetParent() string { 1825 if x != nil { 1826 return x.Parent 1827 } 1828 return "" 1829 } 1830 1831 func (x *CreateFeatureRequest) GetFeature() *Feature { 1832 if x != nil { 1833 return x.Feature 1834 } 1835 return nil 1836 } 1837 1838 func (x *CreateFeatureRequest) GetFeatureId() string { 1839 if x != nil { 1840 return x.FeatureId 1841 } 1842 return "" 1843 } 1844 1845 // Request message for 1846 // [FeaturestoreService.BatchCreateFeatures][google.cloud.aiplatform.v1.FeaturestoreService.BatchCreateFeatures]. 1847 // Request message for 1848 // [FeatureRegistryService.BatchCreateFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.BatchCreateFeatures]. 1849 type BatchCreateFeaturesRequest struct { 1850 state protoimpl.MessageState 1851 sizeCache protoimpl.SizeCache 1852 unknownFields protoimpl.UnknownFields 1853 1854 // Required. The resource name of the EntityType/FeatureGroup to create the 1855 // batch of Features under. Format: 1856 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` 1857 // `projects/{project}/locations/{location}/featureGroups/{feature_group}` 1858 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 1859 // Required. The request message specifying the Features to create. All 1860 // Features must be created under the same parent EntityType / FeatureGroup. 1861 // The `parent` field in each child request message can be omitted. If 1862 // `parent` is set in a child request, then the value must match the `parent` 1863 // value in this request message. 1864 Requests []*CreateFeatureRequest `protobuf:"bytes,2,rep,name=requests,proto3" json:"requests,omitempty"` 1865 } 1866 1867 func (x *BatchCreateFeaturesRequest) Reset() { 1868 *x = BatchCreateFeaturesRequest{} 1869 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[21] 1870 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1871 ms.StoreMessageInfo(mi) 1872 } 1873 1874 func (x *BatchCreateFeaturesRequest) String() string { 1875 return protoimpl.X.MessageStringOf(x) 1876 } 1877 1878 func (*BatchCreateFeaturesRequest) ProtoMessage() {} 1879 1880 func (x *BatchCreateFeaturesRequest) ProtoReflect() protoreflect.Message { 1881 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[21] 1882 if x != nil { 1883 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1884 if ms.LoadMessageInfo() == nil { 1885 ms.StoreMessageInfo(mi) 1886 } 1887 return ms 1888 } 1889 return mi.MessageOf(x) 1890 } 1891 1892 // Deprecated: Use BatchCreateFeaturesRequest.ProtoReflect.Descriptor instead. 1893 func (*BatchCreateFeaturesRequest) Descriptor() ([]byte, []int) { 1894 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{21} 1895 } 1896 1897 func (x *BatchCreateFeaturesRequest) GetParent() string { 1898 if x != nil { 1899 return x.Parent 1900 } 1901 return "" 1902 } 1903 1904 func (x *BatchCreateFeaturesRequest) GetRequests() []*CreateFeatureRequest { 1905 if x != nil { 1906 return x.Requests 1907 } 1908 return nil 1909 } 1910 1911 // Response message for 1912 // [FeaturestoreService.BatchCreateFeatures][google.cloud.aiplatform.v1.FeaturestoreService.BatchCreateFeatures]. 1913 type BatchCreateFeaturesResponse struct { 1914 state protoimpl.MessageState 1915 sizeCache protoimpl.SizeCache 1916 unknownFields protoimpl.UnknownFields 1917 1918 // The Features created. 1919 Features []*Feature `protobuf:"bytes,1,rep,name=features,proto3" json:"features,omitempty"` 1920 } 1921 1922 func (x *BatchCreateFeaturesResponse) Reset() { 1923 *x = BatchCreateFeaturesResponse{} 1924 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[22] 1925 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1926 ms.StoreMessageInfo(mi) 1927 } 1928 1929 func (x *BatchCreateFeaturesResponse) String() string { 1930 return protoimpl.X.MessageStringOf(x) 1931 } 1932 1933 func (*BatchCreateFeaturesResponse) ProtoMessage() {} 1934 1935 func (x *BatchCreateFeaturesResponse) ProtoReflect() protoreflect.Message { 1936 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[22] 1937 if x != nil { 1938 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1939 if ms.LoadMessageInfo() == nil { 1940 ms.StoreMessageInfo(mi) 1941 } 1942 return ms 1943 } 1944 return mi.MessageOf(x) 1945 } 1946 1947 // Deprecated: Use BatchCreateFeaturesResponse.ProtoReflect.Descriptor instead. 1948 func (*BatchCreateFeaturesResponse) Descriptor() ([]byte, []int) { 1949 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{22} 1950 } 1951 1952 func (x *BatchCreateFeaturesResponse) GetFeatures() []*Feature { 1953 if x != nil { 1954 return x.Features 1955 } 1956 return nil 1957 } 1958 1959 // Request message for 1960 // [FeaturestoreService.GetFeature][google.cloud.aiplatform.v1.FeaturestoreService.GetFeature]. 1961 // Request message for 1962 // [FeatureRegistryService.GetFeature][google.cloud.aiplatform.v1.FeatureRegistryService.GetFeature]. 1963 type GetFeatureRequest struct { 1964 state protoimpl.MessageState 1965 sizeCache protoimpl.SizeCache 1966 unknownFields protoimpl.UnknownFields 1967 1968 // Required. The name of the Feature resource. 1969 // Format for entity_type as parent: 1970 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` 1971 // Format for feature_group as parent: 1972 // `projects/{project}/locations/{location}/featureGroups/{feature_group}` 1973 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 1974 } 1975 1976 func (x *GetFeatureRequest) Reset() { 1977 *x = GetFeatureRequest{} 1978 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[23] 1979 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1980 ms.StoreMessageInfo(mi) 1981 } 1982 1983 func (x *GetFeatureRequest) String() string { 1984 return protoimpl.X.MessageStringOf(x) 1985 } 1986 1987 func (*GetFeatureRequest) ProtoMessage() {} 1988 1989 func (x *GetFeatureRequest) ProtoReflect() protoreflect.Message { 1990 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[23] 1991 if x != nil { 1992 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 1993 if ms.LoadMessageInfo() == nil { 1994 ms.StoreMessageInfo(mi) 1995 } 1996 return ms 1997 } 1998 return mi.MessageOf(x) 1999 } 2000 2001 // Deprecated: Use GetFeatureRequest.ProtoReflect.Descriptor instead. 2002 func (*GetFeatureRequest) Descriptor() ([]byte, []int) { 2003 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{23} 2004 } 2005 2006 func (x *GetFeatureRequest) GetName() string { 2007 if x != nil { 2008 return x.Name 2009 } 2010 return "" 2011 } 2012 2013 // Request message for 2014 // [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures]. 2015 // Request message for 2016 // [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures]. 2017 type ListFeaturesRequest struct { 2018 state protoimpl.MessageState 2019 sizeCache protoimpl.SizeCache 2020 unknownFields protoimpl.UnknownFields 2021 2022 // Required. The resource name of the Location to list Features. 2023 // Format for entity_type as parent: 2024 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` 2025 // Format for feature_group as parent: 2026 // `projects/{project}/locations/{location}/featureGroups/{feature_group}` 2027 Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` 2028 // Lists the Features that match the filter expression. The following 2029 // filters are supported: 2030 // 2031 // * `value_type`: Supports = and != comparisons. 2032 // * `create_time`: Supports =, !=, <, >, >=, and <= comparisons. Values must 2033 // be in RFC 3339 format. 2034 // * `update_time`: Supports =, !=, <, >, >=, and <= comparisons. Values must 2035 // be in RFC 3339 format. 2036 // * `labels`: Supports key-value equality as well as key presence. 2037 // 2038 // Examples: 2039 // 2040 // - `value_type = DOUBLE` --> Features whose type is DOUBLE. 2041 // - `create_time > \"2020-01-31T15:30:00.000000Z\" OR 2042 // update_time > \"2020-01-31T15:30:00.000000Z\"` --> EntityTypes created 2043 // or updated after 2020-01-31T15:30:00.000000Z. 2044 // - `labels.active = yes AND labels.env = prod` --> Features having both 2045 // (active: yes) and (env: prod) labels. 2046 // - `labels.env: *` --> Any Feature which has a label with 'env' as the 2047 // key. 2048 Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` 2049 // The maximum number of Features to return. The service may return fewer 2050 // than this value. If unspecified, at most 1000 Features will be returned. 2051 // The maximum value is 1000; any value greater than 1000 will be coerced to 2052 // 1000. 2053 PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 2054 // A page token, received from a previous 2055 // [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] 2056 // call or 2057 // [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] 2058 // call. Provide this to retrieve the subsequent page. 2059 // 2060 // When paginating, all other parameters provided to 2061 // [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] 2062 // or 2063 // [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] 2064 // must match the call that provided the page token. 2065 PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 2066 // A comma-separated list of fields to order by, sorted in ascending order. 2067 // Use "desc" after a field name for descending. 2068 // Supported fields: 2069 // 2070 // - `feature_id` 2071 // - `value_type` (Not supported for FeatureRegistry Feature) 2072 // - `create_time` 2073 // - `update_time` 2074 OrderBy string `protobuf:"bytes,5,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` 2075 // Mask specifying which fields to read. 2076 ReadMask *fieldmaskpb.FieldMask `protobuf:"bytes,6,opt,name=read_mask,json=readMask,proto3" json:"read_mask,omitempty"` 2077 // Only applicable for Vertex AI Feature Store (Legacy). 2078 // If set, return the most recent 2079 // [ListFeaturesRequest.latest_stats_count][google.cloud.aiplatform.v1.ListFeaturesRequest.latest_stats_count] 2080 // of stats for each Feature in response. Valid value is [0, 10]. If number of 2081 // stats exists < 2082 // [ListFeaturesRequest.latest_stats_count][google.cloud.aiplatform.v1.ListFeaturesRequest.latest_stats_count], 2083 // return all existing stats. 2084 LatestStatsCount int32 `protobuf:"varint,7,opt,name=latest_stats_count,json=latestStatsCount,proto3" json:"latest_stats_count,omitempty"` 2085 } 2086 2087 func (x *ListFeaturesRequest) Reset() { 2088 *x = ListFeaturesRequest{} 2089 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[24] 2090 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2091 ms.StoreMessageInfo(mi) 2092 } 2093 2094 func (x *ListFeaturesRequest) String() string { 2095 return protoimpl.X.MessageStringOf(x) 2096 } 2097 2098 func (*ListFeaturesRequest) ProtoMessage() {} 2099 2100 func (x *ListFeaturesRequest) ProtoReflect() protoreflect.Message { 2101 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[24] 2102 if x != nil { 2103 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2104 if ms.LoadMessageInfo() == nil { 2105 ms.StoreMessageInfo(mi) 2106 } 2107 return ms 2108 } 2109 return mi.MessageOf(x) 2110 } 2111 2112 // Deprecated: Use ListFeaturesRequest.ProtoReflect.Descriptor instead. 2113 func (*ListFeaturesRequest) Descriptor() ([]byte, []int) { 2114 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{24} 2115 } 2116 2117 func (x *ListFeaturesRequest) GetParent() string { 2118 if x != nil { 2119 return x.Parent 2120 } 2121 return "" 2122 } 2123 2124 func (x *ListFeaturesRequest) GetFilter() string { 2125 if x != nil { 2126 return x.Filter 2127 } 2128 return "" 2129 } 2130 2131 func (x *ListFeaturesRequest) GetPageSize() int32 { 2132 if x != nil { 2133 return x.PageSize 2134 } 2135 return 0 2136 } 2137 2138 func (x *ListFeaturesRequest) GetPageToken() string { 2139 if x != nil { 2140 return x.PageToken 2141 } 2142 return "" 2143 } 2144 2145 func (x *ListFeaturesRequest) GetOrderBy() string { 2146 if x != nil { 2147 return x.OrderBy 2148 } 2149 return "" 2150 } 2151 2152 func (x *ListFeaturesRequest) GetReadMask() *fieldmaskpb.FieldMask { 2153 if x != nil { 2154 return x.ReadMask 2155 } 2156 return nil 2157 } 2158 2159 func (x *ListFeaturesRequest) GetLatestStatsCount() int32 { 2160 if x != nil { 2161 return x.LatestStatsCount 2162 } 2163 return 0 2164 } 2165 2166 // Response message for 2167 // [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures]. 2168 // Response message for 2169 // [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures]. 2170 type ListFeaturesResponse struct { 2171 state protoimpl.MessageState 2172 sizeCache protoimpl.SizeCache 2173 unknownFields protoimpl.UnknownFields 2174 2175 // The Features matching the request. 2176 Features []*Feature `protobuf:"bytes,1,rep,name=features,proto3" json:"features,omitempty"` 2177 // A token, which can be sent as 2178 // [ListFeaturesRequest.page_token][google.cloud.aiplatform.v1.ListFeaturesRequest.page_token] 2179 // to retrieve the next page. If this field is omitted, there are no 2180 // subsequent pages. 2181 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 2182 } 2183 2184 func (x *ListFeaturesResponse) Reset() { 2185 *x = ListFeaturesResponse{} 2186 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[25] 2187 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2188 ms.StoreMessageInfo(mi) 2189 } 2190 2191 func (x *ListFeaturesResponse) String() string { 2192 return protoimpl.X.MessageStringOf(x) 2193 } 2194 2195 func (*ListFeaturesResponse) ProtoMessage() {} 2196 2197 func (x *ListFeaturesResponse) ProtoReflect() protoreflect.Message { 2198 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[25] 2199 if x != nil { 2200 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2201 if ms.LoadMessageInfo() == nil { 2202 ms.StoreMessageInfo(mi) 2203 } 2204 return ms 2205 } 2206 return mi.MessageOf(x) 2207 } 2208 2209 // Deprecated: Use ListFeaturesResponse.ProtoReflect.Descriptor instead. 2210 func (*ListFeaturesResponse) Descriptor() ([]byte, []int) { 2211 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{25} 2212 } 2213 2214 func (x *ListFeaturesResponse) GetFeatures() []*Feature { 2215 if x != nil { 2216 return x.Features 2217 } 2218 return nil 2219 } 2220 2221 func (x *ListFeaturesResponse) GetNextPageToken() string { 2222 if x != nil { 2223 return x.NextPageToken 2224 } 2225 return "" 2226 } 2227 2228 // Request message for 2229 // [FeaturestoreService.SearchFeatures][google.cloud.aiplatform.v1.FeaturestoreService.SearchFeatures]. 2230 type SearchFeaturesRequest struct { 2231 state protoimpl.MessageState 2232 sizeCache protoimpl.SizeCache 2233 unknownFields protoimpl.UnknownFields 2234 2235 // Required. The resource name of the Location to search Features. 2236 // Format: 2237 // `projects/{project}/locations/{location}` 2238 Location string `protobuf:"bytes,1,opt,name=location,proto3" json:"location,omitempty"` 2239 // Query string that is a conjunction of field-restricted queries and/or 2240 // field-restricted filters. Field-restricted queries and filters can be 2241 // combined using `AND` to form a conjunction. 2242 // 2243 // A field query is in the form FIELD:QUERY. This implicitly checks if QUERY 2244 // exists as a substring within Feature's FIELD. The QUERY 2245 // and the FIELD are converted to a sequence of words (i.e. tokens) for 2246 // comparison. This is done by: 2247 // 2248 // - Removing leading/trailing whitespace and tokenizing the search value. 2249 // Characters that are not one of alphanumeric `[a-zA-Z0-9]`, underscore 2250 // `_`, or asterisk `*` are treated as delimiters for tokens. `*` is treated 2251 // as a wildcard that matches characters within a token. 2252 // - Ignoring case. 2253 // - Prepending an asterisk to the first and appending an asterisk to the 2254 // last token in QUERY. 2255 // 2256 // A QUERY must be either a singular token or a phrase. A phrase is one or 2257 // multiple words enclosed in double quotation marks ("). With phrases, the 2258 // order of the words is important. Words in the phrase must be matching in 2259 // order and consecutively. 2260 // 2261 // Supported FIELDs for field-restricted queries: 2262 // 2263 // * `feature_id` 2264 // * `description` 2265 // * `entity_type_id` 2266 // 2267 // Examples: 2268 // 2269 // * `feature_id: foo` --> Matches a Feature with ID containing the substring 2270 // `foo` (eg. `foo`, `foofeature`, `barfoo`). 2271 // * `feature_id: foo*feature` --> Matches a Feature with ID containing the 2272 // substring `foo*feature` (eg. `foobarfeature`). 2273 // * `feature_id: foo AND description: bar` --> Matches a Feature with ID 2274 // containing the substring `foo` and description containing the substring 2275 // `bar`. 2276 // 2277 // Besides field queries, the following exact-match filters are 2278 // supported. The exact-match filters do not support wildcards. Unlike 2279 // field-restricted queries, exact-match filters are case-sensitive. 2280 // 2281 // * `feature_id`: Supports = comparisons. 2282 // * `description`: Supports = comparisons. Multi-token filters should be 2283 // enclosed in quotes. 2284 // * `entity_type_id`: Supports = comparisons. 2285 // * `value_type`: Supports = and != comparisons. 2286 // * `labels`: Supports key-value equality as well as key presence. 2287 // * `featurestore_id`: Supports = comparisons. 2288 // 2289 // Examples: 2290 // 2291 // * `description = "foo bar"` --> Any Feature with description exactly equal 2292 // to `foo bar` 2293 // - `value_type = DOUBLE` --> Features whose type is DOUBLE. 2294 // - `labels.active = yes AND labels.env = prod` --> Features having both 2295 // (active: yes) and (env: prod) labels. 2296 // - `labels.env: *` --> Any Feature which has a label with `env` as the 2297 // key. 2298 Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` 2299 // The maximum number of Features to return. The service may return fewer 2300 // than this value. If unspecified, at most 100 Features will be returned. 2301 // The maximum value is 100; any value greater than 100 will be coerced to 2302 // 100. 2303 PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` 2304 // A page token, received from a previous 2305 // [FeaturestoreService.SearchFeatures][google.cloud.aiplatform.v1.FeaturestoreService.SearchFeatures] 2306 // call. Provide this to retrieve the subsequent page. 2307 // 2308 // When paginating, all other parameters provided to 2309 // [FeaturestoreService.SearchFeatures][google.cloud.aiplatform.v1.FeaturestoreService.SearchFeatures], 2310 // except `page_size`, must match the call that provided the page token. 2311 PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` 2312 } 2313 2314 func (x *SearchFeaturesRequest) Reset() { 2315 *x = SearchFeaturesRequest{} 2316 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[26] 2317 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2318 ms.StoreMessageInfo(mi) 2319 } 2320 2321 func (x *SearchFeaturesRequest) String() string { 2322 return protoimpl.X.MessageStringOf(x) 2323 } 2324 2325 func (*SearchFeaturesRequest) ProtoMessage() {} 2326 2327 func (x *SearchFeaturesRequest) ProtoReflect() protoreflect.Message { 2328 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[26] 2329 if x != nil { 2330 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2331 if ms.LoadMessageInfo() == nil { 2332 ms.StoreMessageInfo(mi) 2333 } 2334 return ms 2335 } 2336 return mi.MessageOf(x) 2337 } 2338 2339 // Deprecated: Use SearchFeaturesRequest.ProtoReflect.Descriptor instead. 2340 func (*SearchFeaturesRequest) Descriptor() ([]byte, []int) { 2341 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{26} 2342 } 2343 2344 func (x *SearchFeaturesRequest) GetLocation() string { 2345 if x != nil { 2346 return x.Location 2347 } 2348 return "" 2349 } 2350 2351 func (x *SearchFeaturesRequest) GetQuery() string { 2352 if x != nil { 2353 return x.Query 2354 } 2355 return "" 2356 } 2357 2358 func (x *SearchFeaturesRequest) GetPageSize() int32 { 2359 if x != nil { 2360 return x.PageSize 2361 } 2362 return 0 2363 } 2364 2365 func (x *SearchFeaturesRequest) GetPageToken() string { 2366 if x != nil { 2367 return x.PageToken 2368 } 2369 return "" 2370 } 2371 2372 // Response message for 2373 // [FeaturestoreService.SearchFeatures][google.cloud.aiplatform.v1.FeaturestoreService.SearchFeatures]. 2374 type SearchFeaturesResponse struct { 2375 state protoimpl.MessageState 2376 sizeCache protoimpl.SizeCache 2377 unknownFields protoimpl.UnknownFields 2378 2379 // The Features matching the request. 2380 // 2381 // Fields returned: 2382 // 2383 // - `name` 2384 // - `description` 2385 // - `labels` 2386 // - `create_time` 2387 // - `update_time` 2388 Features []*Feature `protobuf:"bytes,1,rep,name=features,proto3" json:"features,omitempty"` 2389 // A token, which can be sent as 2390 // [SearchFeaturesRequest.page_token][google.cloud.aiplatform.v1.SearchFeaturesRequest.page_token] 2391 // to retrieve the next page. If this field is omitted, there are no 2392 // subsequent pages. 2393 NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` 2394 } 2395 2396 func (x *SearchFeaturesResponse) Reset() { 2397 *x = SearchFeaturesResponse{} 2398 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[27] 2399 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2400 ms.StoreMessageInfo(mi) 2401 } 2402 2403 func (x *SearchFeaturesResponse) String() string { 2404 return protoimpl.X.MessageStringOf(x) 2405 } 2406 2407 func (*SearchFeaturesResponse) ProtoMessage() {} 2408 2409 func (x *SearchFeaturesResponse) ProtoReflect() protoreflect.Message { 2410 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[27] 2411 if x != nil { 2412 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2413 if ms.LoadMessageInfo() == nil { 2414 ms.StoreMessageInfo(mi) 2415 } 2416 return ms 2417 } 2418 return mi.MessageOf(x) 2419 } 2420 2421 // Deprecated: Use SearchFeaturesResponse.ProtoReflect.Descriptor instead. 2422 func (*SearchFeaturesResponse) Descriptor() ([]byte, []int) { 2423 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{27} 2424 } 2425 2426 func (x *SearchFeaturesResponse) GetFeatures() []*Feature { 2427 if x != nil { 2428 return x.Features 2429 } 2430 return nil 2431 } 2432 2433 func (x *SearchFeaturesResponse) GetNextPageToken() string { 2434 if x != nil { 2435 return x.NextPageToken 2436 } 2437 return "" 2438 } 2439 2440 // Request message for 2441 // [FeaturestoreService.UpdateFeature][google.cloud.aiplatform.v1.FeaturestoreService.UpdateFeature]. 2442 // Request message for 2443 // [FeatureRegistryService.UpdateFeature][google.cloud.aiplatform.v1.FeatureRegistryService.UpdateFeature]. 2444 type UpdateFeatureRequest struct { 2445 state protoimpl.MessageState 2446 sizeCache protoimpl.SizeCache 2447 unknownFields protoimpl.UnknownFields 2448 2449 // Required. The Feature's `name` field is used to identify the Feature to be 2450 // updated. 2451 // Format: 2452 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` 2453 // `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` 2454 Feature *Feature `protobuf:"bytes,1,opt,name=feature,proto3" json:"feature,omitempty"` 2455 // Field mask is used to specify the fields to be overwritten in the 2456 // Features resource by the update. 2457 // The fields specified in the update_mask are relative to the resource, not 2458 // the full request. A field will be overwritten if it is in the mask. If the 2459 // user does not provide a mask then only the non-empty fields present in the 2460 // request will be overwritten. Set the update_mask to `*` to override all 2461 // fields. 2462 // 2463 // Updatable fields: 2464 // 2465 // - `description` 2466 // - `labels` 2467 // - `disable_monitoring` (Not supported for FeatureRegistryService Feature) 2468 // - `point_of_contact` (Not supported for FeaturestoreService FeatureStore) 2469 UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` 2470 } 2471 2472 func (x *UpdateFeatureRequest) Reset() { 2473 *x = UpdateFeatureRequest{} 2474 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[28] 2475 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2476 ms.StoreMessageInfo(mi) 2477 } 2478 2479 func (x *UpdateFeatureRequest) String() string { 2480 return protoimpl.X.MessageStringOf(x) 2481 } 2482 2483 func (*UpdateFeatureRequest) ProtoMessage() {} 2484 2485 func (x *UpdateFeatureRequest) ProtoReflect() protoreflect.Message { 2486 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[28] 2487 if x != nil { 2488 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2489 if ms.LoadMessageInfo() == nil { 2490 ms.StoreMessageInfo(mi) 2491 } 2492 return ms 2493 } 2494 return mi.MessageOf(x) 2495 } 2496 2497 // Deprecated: Use UpdateFeatureRequest.ProtoReflect.Descriptor instead. 2498 func (*UpdateFeatureRequest) Descriptor() ([]byte, []int) { 2499 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{28} 2500 } 2501 2502 func (x *UpdateFeatureRequest) GetFeature() *Feature { 2503 if x != nil { 2504 return x.Feature 2505 } 2506 return nil 2507 } 2508 2509 func (x *UpdateFeatureRequest) GetUpdateMask() *fieldmaskpb.FieldMask { 2510 if x != nil { 2511 return x.UpdateMask 2512 } 2513 return nil 2514 } 2515 2516 // Request message for 2517 // [FeaturestoreService.DeleteFeature][google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeature]. 2518 // Request message for 2519 // [FeatureRegistryService.DeleteFeature][google.cloud.aiplatform.v1.FeatureRegistryService.DeleteFeature]. 2520 type DeleteFeatureRequest struct { 2521 state protoimpl.MessageState 2522 sizeCache protoimpl.SizeCache 2523 unknownFields protoimpl.UnknownFields 2524 2525 // Required. The name of the Features to be deleted. 2526 // Format: 2527 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` 2528 // `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` 2529 Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` 2530 } 2531 2532 func (x *DeleteFeatureRequest) Reset() { 2533 *x = DeleteFeatureRequest{} 2534 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[29] 2535 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2536 ms.StoreMessageInfo(mi) 2537 } 2538 2539 func (x *DeleteFeatureRequest) String() string { 2540 return protoimpl.X.MessageStringOf(x) 2541 } 2542 2543 func (*DeleteFeatureRequest) ProtoMessage() {} 2544 2545 func (x *DeleteFeatureRequest) ProtoReflect() protoreflect.Message { 2546 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[29] 2547 if x != nil { 2548 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2549 if ms.LoadMessageInfo() == nil { 2550 ms.StoreMessageInfo(mi) 2551 } 2552 return ms 2553 } 2554 return mi.MessageOf(x) 2555 } 2556 2557 // Deprecated: Use DeleteFeatureRequest.ProtoReflect.Descriptor instead. 2558 func (*DeleteFeatureRequest) Descriptor() ([]byte, []int) { 2559 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{29} 2560 } 2561 2562 func (x *DeleteFeatureRequest) GetName() string { 2563 if x != nil { 2564 return x.Name 2565 } 2566 return "" 2567 } 2568 2569 // Details of operations that perform create Featurestore. 2570 type CreateFeaturestoreOperationMetadata struct { 2571 state protoimpl.MessageState 2572 sizeCache protoimpl.SizeCache 2573 unknownFields protoimpl.UnknownFields 2574 2575 // Operation metadata for Featurestore. 2576 GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` 2577 } 2578 2579 func (x *CreateFeaturestoreOperationMetadata) Reset() { 2580 *x = CreateFeaturestoreOperationMetadata{} 2581 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[30] 2582 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2583 ms.StoreMessageInfo(mi) 2584 } 2585 2586 func (x *CreateFeaturestoreOperationMetadata) String() string { 2587 return protoimpl.X.MessageStringOf(x) 2588 } 2589 2590 func (*CreateFeaturestoreOperationMetadata) ProtoMessage() {} 2591 2592 func (x *CreateFeaturestoreOperationMetadata) ProtoReflect() protoreflect.Message { 2593 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[30] 2594 if x != nil { 2595 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2596 if ms.LoadMessageInfo() == nil { 2597 ms.StoreMessageInfo(mi) 2598 } 2599 return ms 2600 } 2601 return mi.MessageOf(x) 2602 } 2603 2604 // Deprecated: Use CreateFeaturestoreOperationMetadata.ProtoReflect.Descriptor instead. 2605 func (*CreateFeaturestoreOperationMetadata) Descriptor() ([]byte, []int) { 2606 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{30} 2607 } 2608 2609 func (x *CreateFeaturestoreOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { 2610 if x != nil { 2611 return x.GenericMetadata 2612 } 2613 return nil 2614 } 2615 2616 // Details of operations that perform update Featurestore. 2617 type UpdateFeaturestoreOperationMetadata struct { 2618 state protoimpl.MessageState 2619 sizeCache protoimpl.SizeCache 2620 unknownFields protoimpl.UnknownFields 2621 2622 // Operation metadata for Featurestore. 2623 GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` 2624 } 2625 2626 func (x *UpdateFeaturestoreOperationMetadata) Reset() { 2627 *x = UpdateFeaturestoreOperationMetadata{} 2628 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[31] 2629 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2630 ms.StoreMessageInfo(mi) 2631 } 2632 2633 func (x *UpdateFeaturestoreOperationMetadata) String() string { 2634 return protoimpl.X.MessageStringOf(x) 2635 } 2636 2637 func (*UpdateFeaturestoreOperationMetadata) ProtoMessage() {} 2638 2639 func (x *UpdateFeaturestoreOperationMetadata) ProtoReflect() protoreflect.Message { 2640 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[31] 2641 if x != nil { 2642 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2643 if ms.LoadMessageInfo() == nil { 2644 ms.StoreMessageInfo(mi) 2645 } 2646 return ms 2647 } 2648 return mi.MessageOf(x) 2649 } 2650 2651 // Deprecated: Use UpdateFeaturestoreOperationMetadata.ProtoReflect.Descriptor instead. 2652 func (*UpdateFeaturestoreOperationMetadata) Descriptor() ([]byte, []int) { 2653 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{31} 2654 } 2655 2656 func (x *UpdateFeaturestoreOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { 2657 if x != nil { 2658 return x.GenericMetadata 2659 } 2660 return nil 2661 } 2662 2663 // Details of operations that perform import Feature values. 2664 type ImportFeatureValuesOperationMetadata struct { 2665 state protoimpl.MessageState 2666 sizeCache protoimpl.SizeCache 2667 unknownFields protoimpl.UnknownFields 2668 2669 // Operation metadata for Featurestore import Feature values. 2670 GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` 2671 // Number of entities that have been imported by the operation. 2672 ImportedEntityCount int64 `protobuf:"varint,2,opt,name=imported_entity_count,json=importedEntityCount,proto3" json:"imported_entity_count,omitempty"` 2673 // Number of Feature values that have been imported by the operation. 2674 ImportedFeatureValueCount int64 `protobuf:"varint,3,opt,name=imported_feature_value_count,json=importedFeatureValueCount,proto3" json:"imported_feature_value_count,omitempty"` 2675 // The source URI from where Feature values are imported. 2676 SourceUris []string `protobuf:"bytes,4,rep,name=source_uris,json=sourceUris,proto3" json:"source_uris,omitempty"` 2677 // The number of rows in input source that weren't imported due to either 2678 // * Not having any featureValues. 2679 // * Having a null entityId. 2680 // * Having a null timestamp. 2681 // * Not being parsable (applicable for CSV sources). 2682 InvalidRowCount int64 `protobuf:"varint,6,opt,name=invalid_row_count,json=invalidRowCount,proto3" json:"invalid_row_count,omitempty"` 2683 // The number rows that weren't ingested due to having timestamps outside the 2684 // retention boundary. 2685 TimestampOutsideRetentionRowsCount int64 `protobuf:"varint,7,opt,name=timestamp_outside_retention_rows_count,json=timestampOutsideRetentionRowsCount,proto3" json:"timestamp_outside_retention_rows_count,omitempty"` 2686 // List of ImportFeatureValues operations running under a single EntityType 2687 // that are blocking this operation. 2688 BlockingOperationIds []int64 `protobuf:"varint,8,rep,packed,name=blocking_operation_ids,json=blockingOperationIds,proto3" json:"blocking_operation_ids,omitempty"` 2689 } 2690 2691 func (x *ImportFeatureValuesOperationMetadata) Reset() { 2692 *x = ImportFeatureValuesOperationMetadata{} 2693 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[32] 2694 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2695 ms.StoreMessageInfo(mi) 2696 } 2697 2698 func (x *ImportFeatureValuesOperationMetadata) String() string { 2699 return protoimpl.X.MessageStringOf(x) 2700 } 2701 2702 func (*ImportFeatureValuesOperationMetadata) ProtoMessage() {} 2703 2704 func (x *ImportFeatureValuesOperationMetadata) ProtoReflect() protoreflect.Message { 2705 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[32] 2706 if x != nil { 2707 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2708 if ms.LoadMessageInfo() == nil { 2709 ms.StoreMessageInfo(mi) 2710 } 2711 return ms 2712 } 2713 return mi.MessageOf(x) 2714 } 2715 2716 // Deprecated: Use ImportFeatureValuesOperationMetadata.ProtoReflect.Descriptor instead. 2717 func (*ImportFeatureValuesOperationMetadata) Descriptor() ([]byte, []int) { 2718 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{32} 2719 } 2720 2721 func (x *ImportFeatureValuesOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { 2722 if x != nil { 2723 return x.GenericMetadata 2724 } 2725 return nil 2726 } 2727 2728 func (x *ImportFeatureValuesOperationMetadata) GetImportedEntityCount() int64 { 2729 if x != nil { 2730 return x.ImportedEntityCount 2731 } 2732 return 0 2733 } 2734 2735 func (x *ImportFeatureValuesOperationMetadata) GetImportedFeatureValueCount() int64 { 2736 if x != nil { 2737 return x.ImportedFeatureValueCount 2738 } 2739 return 0 2740 } 2741 2742 func (x *ImportFeatureValuesOperationMetadata) GetSourceUris() []string { 2743 if x != nil { 2744 return x.SourceUris 2745 } 2746 return nil 2747 } 2748 2749 func (x *ImportFeatureValuesOperationMetadata) GetInvalidRowCount() int64 { 2750 if x != nil { 2751 return x.InvalidRowCount 2752 } 2753 return 0 2754 } 2755 2756 func (x *ImportFeatureValuesOperationMetadata) GetTimestampOutsideRetentionRowsCount() int64 { 2757 if x != nil { 2758 return x.TimestampOutsideRetentionRowsCount 2759 } 2760 return 0 2761 } 2762 2763 func (x *ImportFeatureValuesOperationMetadata) GetBlockingOperationIds() []int64 { 2764 if x != nil { 2765 return x.BlockingOperationIds 2766 } 2767 return nil 2768 } 2769 2770 // Details of operations that exports Features values. 2771 type ExportFeatureValuesOperationMetadata struct { 2772 state protoimpl.MessageState 2773 sizeCache protoimpl.SizeCache 2774 unknownFields protoimpl.UnknownFields 2775 2776 // Operation metadata for Featurestore export Feature values. 2777 GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` 2778 } 2779 2780 func (x *ExportFeatureValuesOperationMetadata) Reset() { 2781 *x = ExportFeatureValuesOperationMetadata{} 2782 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[33] 2783 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2784 ms.StoreMessageInfo(mi) 2785 } 2786 2787 func (x *ExportFeatureValuesOperationMetadata) String() string { 2788 return protoimpl.X.MessageStringOf(x) 2789 } 2790 2791 func (*ExportFeatureValuesOperationMetadata) ProtoMessage() {} 2792 2793 func (x *ExportFeatureValuesOperationMetadata) ProtoReflect() protoreflect.Message { 2794 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[33] 2795 if x != nil { 2796 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2797 if ms.LoadMessageInfo() == nil { 2798 ms.StoreMessageInfo(mi) 2799 } 2800 return ms 2801 } 2802 return mi.MessageOf(x) 2803 } 2804 2805 // Deprecated: Use ExportFeatureValuesOperationMetadata.ProtoReflect.Descriptor instead. 2806 func (*ExportFeatureValuesOperationMetadata) Descriptor() ([]byte, []int) { 2807 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{33} 2808 } 2809 2810 func (x *ExportFeatureValuesOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { 2811 if x != nil { 2812 return x.GenericMetadata 2813 } 2814 return nil 2815 } 2816 2817 // Details of operations that batch reads Feature values. 2818 type BatchReadFeatureValuesOperationMetadata struct { 2819 state protoimpl.MessageState 2820 sizeCache protoimpl.SizeCache 2821 unknownFields protoimpl.UnknownFields 2822 2823 // Operation metadata for Featurestore batch read Features values. 2824 GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` 2825 } 2826 2827 func (x *BatchReadFeatureValuesOperationMetadata) Reset() { 2828 *x = BatchReadFeatureValuesOperationMetadata{} 2829 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[34] 2830 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2831 ms.StoreMessageInfo(mi) 2832 } 2833 2834 func (x *BatchReadFeatureValuesOperationMetadata) String() string { 2835 return protoimpl.X.MessageStringOf(x) 2836 } 2837 2838 func (*BatchReadFeatureValuesOperationMetadata) ProtoMessage() {} 2839 2840 func (x *BatchReadFeatureValuesOperationMetadata) ProtoReflect() protoreflect.Message { 2841 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[34] 2842 if x != nil { 2843 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2844 if ms.LoadMessageInfo() == nil { 2845 ms.StoreMessageInfo(mi) 2846 } 2847 return ms 2848 } 2849 return mi.MessageOf(x) 2850 } 2851 2852 // Deprecated: Use BatchReadFeatureValuesOperationMetadata.ProtoReflect.Descriptor instead. 2853 func (*BatchReadFeatureValuesOperationMetadata) Descriptor() ([]byte, []int) { 2854 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{34} 2855 } 2856 2857 func (x *BatchReadFeatureValuesOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { 2858 if x != nil { 2859 return x.GenericMetadata 2860 } 2861 return nil 2862 } 2863 2864 // Details of operations that delete Feature values. 2865 type DeleteFeatureValuesOperationMetadata struct { 2866 state protoimpl.MessageState 2867 sizeCache protoimpl.SizeCache 2868 unknownFields protoimpl.UnknownFields 2869 2870 // Operation metadata for Featurestore delete Features values. 2871 GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` 2872 } 2873 2874 func (x *DeleteFeatureValuesOperationMetadata) Reset() { 2875 *x = DeleteFeatureValuesOperationMetadata{} 2876 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[35] 2877 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2878 ms.StoreMessageInfo(mi) 2879 } 2880 2881 func (x *DeleteFeatureValuesOperationMetadata) String() string { 2882 return protoimpl.X.MessageStringOf(x) 2883 } 2884 2885 func (*DeleteFeatureValuesOperationMetadata) ProtoMessage() {} 2886 2887 func (x *DeleteFeatureValuesOperationMetadata) ProtoReflect() protoreflect.Message { 2888 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[35] 2889 if x != nil { 2890 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2891 if ms.LoadMessageInfo() == nil { 2892 ms.StoreMessageInfo(mi) 2893 } 2894 return ms 2895 } 2896 return mi.MessageOf(x) 2897 } 2898 2899 // Deprecated: Use DeleteFeatureValuesOperationMetadata.ProtoReflect.Descriptor instead. 2900 func (*DeleteFeatureValuesOperationMetadata) Descriptor() ([]byte, []int) { 2901 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{35} 2902 } 2903 2904 func (x *DeleteFeatureValuesOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { 2905 if x != nil { 2906 return x.GenericMetadata 2907 } 2908 return nil 2909 } 2910 2911 // Details of operations that perform create EntityType. 2912 type CreateEntityTypeOperationMetadata struct { 2913 state protoimpl.MessageState 2914 sizeCache protoimpl.SizeCache 2915 unknownFields protoimpl.UnknownFields 2916 2917 // Operation metadata for EntityType. 2918 GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` 2919 } 2920 2921 func (x *CreateEntityTypeOperationMetadata) Reset() { 2922 *x = CreateEntityTypeOperationMetadata{} 2923 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[36] 2924 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2925 ms.StoreMessageInfo(mi) 2926 } 2927 2928 func (x *CreateEntityTypeOperationMetadata) String() string { 2929 return protoimpl.X.MessageStringOf(x) 2930 } 2931 2932 func (*CreateEntityTypeOperationMetadata) ProtoMessage() {} 2933 2934 func (x *CreateEntityTypeOperationMetadata) ProtoReflect() protoreflect.Message { 2935 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[36] 2936 if x != nil { 2937 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2938 if ms.LoadMessageInfo() == nil { 2939 ms.StoreMessageInfo(mi) 2940 } 2941 return ms 2942 } 2943 return mi.MessageOf(x) 2944 } 2945 2946 // Deprecated: Use CreateEntityTypeOperationMetadata.ProtoReflect.Descriptor instead. 2947 func (*CreateEntityTypeOperationMetadata) Descriptor() ([]byte, []int) { 2948 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{36} 2949 } 2950 2951 func (x *CreateEntityTypeOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { 2952 if x != nil { 2953 return x.GenericMetadata 2954 } 2955 return nil 2956 } 2957 2958 // Details of operations that perform create Feature. 2959 type CreateFeatureOperationMetadata struct { 2960 state protoimpl.MessageState 2961 sizeCache protoimpl.SizeCache 2962 unknownFields protoimpl.UnknownFields 2963 2964 // Operation metadata for Feature. 2965 GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` 2966 } 2967 2968 func (x *CreateFeatureOperationMetadata) Reset() { 2969 *x = CreateFeatureOperationMetadata{} 2970 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[37] 2971 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2972 ms.StoreMessageInfo(mi) 2973 } 2974 2975 func (x *CreateFeatureOperationMetadata) String() string { 2976 return protoimpl.X.MessageStringOf(x) 2977 } 2978 2979 func (*CreateFeatureOperationMetadata) ProtoMessage() {} 2980 2981 func (x *CreateFeatureOperationMetadata) ProtoReflect() protoreflect.Message { 2982 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[37] 2983 if x != nil { 2984 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 2985 if ms.LoadMessageInfo() == nil { 2986 ms.StoreMessageInfo(mi) 2987 } 2988 return ms 2989 } 2990 return mi.MessageOf(x) 2991 } 2992 2993 // Deprecated: Use CreateFeatureOperationMetadata.ProtoReflect.Descriptor instead. 2994 func (*CreateFeatureOperationMetadata) Descriptor() ([]byte, []int) { 2995 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{37} 2996 } 2997 2998 func (x *CreateFeatureOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { 2999 if x != nil { 3000 return x.GenericMetadata 3001 } 3002 return nil 3003 } 3004 3005 // Details of operations that perform batch create Features. 3006 type BatchCreateFeaturesOperationMetadata struct { 3007 state protoimpl.MessageState 3008 sizeCache protoimpl.SizeCache 3009 unknownFields protoimpl.UnknownFields 3010 3011 // Operation metadata for Feature. 3012 GenericMetadata *GenericOperationMetadata `protobuf:"bytes,1,opt,name=generic_metadata,json=genericMetadata,proto3" json:"generic_metadata,omitempty"` 3013 } 3014 3015 func (x *BatchCreateFeaturesOperationMetadata) Reset() { 3016 *x = BatchCreateFeaturesOperationMetadata{} 3017 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[38] 3018 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3019 ms.StoreMessageInfo(mi) 3020 } 3021 3022 func (x *BatchCreateFeaturesOperationMetadata) String() string { 3023 return protoimpl.X.MessageStringOf(x) 3024 } 3025 3026 func (*BatchCreateFeaturesOperationMetadata) ProtoMessage() {} 3027 3028 func (x *BatchCreateFeaturesOperationMetadata) ProtoReflect() protoreflect.Message { 3029 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[38] 3030 if x != nil { 3031 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3032 if ms.LoadMessageInfo() == nil { 3033 ms.StoreMessageInfo(mi) 3034 } 3035 return ms 3036 } 3037 return mi.MessageOf(x) 3038 } 3039 3040 // Deprecated: Use BatchCreateFeaturesOperationMetadata.ProtoReflect.Descriptor instead. 3041 func (*BatchCreateFeaturesOperationMetadata) Descriptor() ([]byte, []int) { 3042 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{38} 3043 } 3044 3045 func (x *BatchCreateFeaturesOperationMetadata) GetGenericMetadata() *GenericOperationMetadata { 3046 if x != nil { 3047 return x.GenericMetadata 3048 } 3049 return nil 3050 } 3051 3052 // Request message for 3053 // [FeaturestoreService.DeleteFeatureValues][google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeatureValues]. 3054 type DeleteFeatureValuesRequest struct { 3055 state protoimpl.MessageState 3056 sizeCache protoimpl.SizeCache 3057 unknownFields protoimpl.UnknownFields 3058 3059 // Defines options to select feature values to be deleted. 3060 // 3061 // Types that are assignable to DeleteOption: 3062 // 3063 // *DeleteFeatureValuesRequest_SelectEntity_ 3064 // *DeleteFeatureValuesRequest_SelectTimeRangeAndFeature_ 3065 DeleteOption isDeleteFeatureValuesRequest_DeleteOption `protobuf_oneof:"DeleteOption"` 3066 // Required. The resource name of the EntityType grouping the Features for 3067 // which values are being deleted from. Format: 3068 // `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entityType}` 3069 EntityType string `protobuf:"bytes,1,opt,name=entity_type,json=entityType,proto3" json:"entity_type,omitempty"` 3070 } 3071 3072 func (x *DeleteFeatureValuesRequest) Reset() { 3073 *x = DeleteFeatureValuesRequest{} 3074 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[39] 3075 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3076 ms.StoreMessageInfo(mi) 3077 } 3078 3079 func (x *DeleteFeatureValuesRequest) String() string { 3080 return protoimpl.X.MessageStringOf(x) 3081 } 3082 3083 func (*DeleteFeatureValuesRequest) ProtoMessage() {} 3084 3085 func (x *DeleteFeatureValuesRequest) ProtoReflect() protoreflect.Message { 3086 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[39] 3087 if x != nil { 3088 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3089 if ms.LoadMessageInfo() == nil { 3090 ms.StoreMessageInfo(mi) 3091 } 3092 return ms 3093 } 3094 return mi.MessageOf(x) 3095 } 3096 3097 // Deprecated: Use DeleteFeatureValuesRequest.ProtoReflect.Descriptor instead. 3098 func (*DeleteFeatureValuesRequest) Descriptor() ([]byte, []int) { 3099 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{39} 3100 } 3101 3102 func (m *DeleteFeatureValuesRequest) GetDeleteOption() isDeleteFeatureValuesRequest_DeleteOption { 3103 if m != nil { 3104 return m.DeleteOption 3105 } 3106 return nil 3107 } 3108 3109 func (x *DeleteFeatureValuesRequest) GetSelectEntity() *DeleteFeatureValuesRequest_SelectEntity { 3110 if x, ok := x.GetDeleteOption().(*DeleteFeatureValuesRequest_SelectEntity_); ok { 3111 return x.SelectEntity 3112 } 3113 return nil 3114 } 3115 3116 func (x *DeleteFeatureValuesRequest) GetSelectTimeRangeAndFeature() *DeleteFeatureValuesRequest_SelectTimeRangeAndFeature { 3117 if x, ok := x.GetDeleteOption().(*DeleteFeatureValuesRequest_SelectTimeRangeAndFeature_); ok { 3118 return x.SelectTimeRangeAndFeature 3119 } 3120 return nil 3121 } 3122 3123 func (x *DeleteFeatureValuesRequest) GetEntityType() string { 3124 if x != nil { 3125 return x.EntityType 3126 } 3127 return "" 3128 } 3129 3130 type isDeleteFeatureValuesRequest_DeleteOption interface { 3131 isDeleteFeatureValuesRequest_DeleteOption() 3132 } 3133 3134 type DeleteFeatureValuesRequest_SelectEntity_ struct { 3135 // Select feature values to be deleted by specifying entities. 3136 SelectEntity *DeleteFeatureValuesRequest_SelectEntity `protobuf:"bytes,2,opt,name=select_entity,json=selectEntity,proto3,oneof"` 3137 } 3138 3139 type DeleteFeatureValuesRequest_SelectTimeRangeAndFeature_ struct { 3140 // Select feature values to be deleted by specifying time range and 3141 // features. 3142 SelectTimeRangeAndFeature *DeleteFeatureValuesRequest_SelectTimeRangeAndFeature `protobuf:"bytes,3,opt,name=select_time_range_and_feature,json=selectTimeRangeAndFeature,proto3,oneof"` 3143 } 3144 3145 func (*DeleteFeatureValuesRequest_SelectEntity_) isDeleteFeatureValuesRequest_DeleteOption() {} 3146 3147 func (*DeleteFeatureValuesRequest_SelectTimeRangeAndFeature_) isDeleteFeatureValuesRequest_DeleteOption() { 3148 } 3149 3150 // Response message for 3151 // [FeaturestoreService.DeleteFeatureValues][google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeatureValues]. 3152 type DeleteFeatureValuesResponse struct { 3153 state protoimpl.MessageState 3154 sizeCache protoimpl.SizeCache 3155 unknownFields protoimpl.UnknownFields 3156 3157 // Response based on which delete option is specified in the 3158 // request 3159 // 3160 // Types that are assignable to Response: 3161 // 3162 // *DeleteFeatureValuesResponse_SelectEntity_ 3163 // *DeleteFeatureValuesResponse_SelectTimeRangeAndFeature_ 3164 Response isDeleteFeatureValuesResponse_Response `protobuf_oneof:"response"` 3165 } 3166 3167 func (x *DeleteFeatureValuesResponse) Reset() { 3168 *x = DeleteFeatureValuesResponse{} 3169 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[40] 3170 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3171 ms.StoreMessageInfo(mi) 3172 } 3173 3174 func (x *DeleteFeatureValuesResponse) String() string { 3175 return protoimpl.X.MessageStringOf(x) 3176 } 3177 3178 func (*DeleteFeatureValuesResponse) ProtoMessage() {} 3179 3180 func (x *DeleteFeatureValuesResponse) ProtoReflect() protoreflect.Message { 3181 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[40] 3182 if x != nil { 3183 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3184 if ms.LoadMessageInfo() == nil { 3185 ms.StoreMessageInfo(mi) 3186 } 3187 return ms 3188 } 3189 return mi.MessageOf(x) 3190 } 3191 3192 // Deprecated: Use DeleteFeatureValuesResponse.ProtoReflect.Descriptor instead. 3193 func (*DeleteFeatureValuesResponse) Descriptor() ([]byte, []int) { 3194 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{40} 3195 } 3196 3197 func (m *DeleteFeatureValuesResponse) GetResponse() isDeleteFeatureValuesResponse_Response { 3198 if m != nil { 3199 return m.Response 3200 } 3201 return nil 3202 } 3203 3204 func (x *DeleteFeatureValuesResponse) GetSelectEntity() *DeleteFeatureValuesResponse_SelectEntity { 3205 if x, ok := x.GetResponse().(*DeleteFeatureValuesResponse_SelectEntity_); ok { 3206 return x.SelectEntity 3207 } 3208 return nil 3209 } 3210 3211 func (x *DeleteFeatureValuesResponse) GetSelectTimeRangeAndFeature() *DeleteFeatureValuesResponse_SelectTimeRangeAndFeature { 3212 if x, ok := x.GetResponse().(*DeleteFeatureValuesResponse_SelectTimeRangeAndFeature_); ok { 3213 return x.SelectTimeRangeAndFeature 3214 } 3215 return nil 3216 } 3217 3218 type isDeleteFeatureValuesResponse_Response interface { 3219 isDeleteFeatureValuesResponse_Response() 3220 } 3221 3222 type DeleteFeatureValuesResponse_SelectEntity_ struct { 3223 // Response for request specifying the entities to delete 3224 SelectEntity *DeleteFeatureValuesResponse_SelectEntity `protobuf:"bytes,1,opt,name=select_entity,json=selectEntity,proto3,oneof"` 3225 } 3226 3227 type DeleteFeatureValuesResponse_SelectTimeRangeAndFeature_ struct { 3228 // Response for request specifying time range and feature 3229 SelectTimeRangeAndFeature *DeleteFeatureValuesResponse_SelectTimeRangeAndFeature `protobuf:"bytes,2,opt,name=select_time_range_and_feature,json=selectTimeRangeAndFeature,proto3,oneof"` 3230 } 3231 3232 func (*DeleteFeatureValuesResponse_SelectEntity_) isDeleteFeatureValuesResponse_Response() {} 3233 3234 func (*DeleteFeatureValuesResponse_SelectTimeRangeAndFeature_) isDeleteFeatureValuesResponse_Response() { 3235 } 3236 3237 // Selector for entityId. Getting ids from the given source. 3238 type EntityIdSelector struct { 3239 state protoimpl.MessageState 3240 sizeCache protoimpl.SizeCache 3241 unknownFields protoimpl.UnknownFields 3242 3243 // Details about the source data, including the location of the storage and 3244 // the format. 3245 // 3246 // Types that are assignable to EntityIdsSource: 3247 // 3248 // *EntityIdSelector_CsvSource 3249 EntityIdsSource isEntityIdSelector_EntityIdsSource `protobuf_oneof:"EntityIdsSource"` 3250 // Source column that holds entity IDs. If not provided, entity IDs are 3251 // extracted from the column named entity_id. 3252 EntityIdField string `protobuf:"bytes,5,opt,name=entity_id_field,json=entityIdField,proto3" json:"entity_id_field,omitempty"` 3253 } 3254 3255 func (x *EntityIdSelector) Reset() { 3256 *x = EntityIdSelector{} 3257 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[41] 3258 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3259 ms.StoreMessageInfo(mi) 3260 } 3261 3262 func (x *EntityIdSelector) String() string { 3263 return protoimpl.X.MessageStringOf(x) 3264 } 3265 3266 func (*EntityIdSelector) ProtoMessage() {} 3267 3268 func (x *EntityIdSelector) ProtoReflect() protoreflect.Message { 3269 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[41] 3270 if x != nil { 3271 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3272 if ms.LoadMessageInfo() == nil { 3273 ms.StoreMessageInfo(mi) 3274 } 3275 return ms 3276 } 3277 return mi.MessageOf(x) 3278 } 3279 3280 // Deprecated: Use EntityIdSelector.ProtoReflect.Descriptor instead. 3281 func (*EntityIdSelector) Descriptor() ([]byte, []int) { 3282 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{41} 3283 } 3284 3285 func (m *EntityIdSelector) GetEntityIdsSource() isEntityIdSelector_EntityIdsSource { 3286 if m != nil { 3287 return m.EntityIdsSource 3288 } 3289 return nil 3290 } 3291 3292 func (x *EntityIdSelector) GetCsvSource() *CsvSource { 3293 if x, ok := x.GetEntityIdsSource().(*EntityIdSelector_CsvSource); ok { 3294 return x.CsvSource 3295 } 3296 return nil 3297 } 3298 3299 func (x *EntityIdSelector) GetEntityIdField() string { 3300 if x != nil { 3301 return x.EntityIdField 3302 } 3303 return "" 3304 } 3305 3306 type isEntityIdSelector_EntityIdsSource interface { 3307 isEntityIdSelector_EntityIdsSource() 3308 } 3309 3310 type EntityIdSelector_CsvSource struct { 3311 // Source of Csv 3312 CsvSource *CsvSource `protobuf:"bytes,3,opt,name=csv_source,json=csvSource,proto3,oneof"` 3313 } 3314 3315 func (*EntityIdSelector_CsvSource) isEntityIdSelector_EntityIdsSource() {} 3316 3317 // Defines the Feature value(s) to import. 3318 type ImportFeatureValuesRequest_FeatureSpec struct { 3319 state protoimpl.MessageState 3320 sizeCache protoimpl.SizeCache 3321 unknownFields protoimpl.UnknownFields 3322 3323 // Required. ID of the Feature to import values of. This Feature must exist 3324 // in the target EntityType, or the request will fail. 3325 Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` 3326 // Source column to get the Feature values from. If not set, uses the column 3327 // with the same name as the Feature ID. 3328 SourceField string `protobuf:"bytes,2,opt,name=source_field,json=sourceField,proto3" json:"source_field,omitempty"` 3329 } 3330 3331 func (x *ImportFeatureValuesRequest_FeatureSpec) Reset() { 3332 *x = ImportFeatureValuesRequest_FeatureSpec{} 3333 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[42] 3334 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3335 ms.StoreMessageInfo(mi) 3336 } 3337 3338 func (x *ImportFeatureValuesRequest_FeatureSpec) String() string { 3339 return protoimpl.X.MessageStringOf(x) 3340 } 3341 3342 func (*ImportFeatureValuesRequest_FeatureSpec) ProtoMessage() {} 3343 3344 func (x *ImportFeatureValuesRequest_FeatureSpec) ProtoReflect() protoreflect.Message { 3345 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[42] 3346 if x != nil { 3347 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3348 if ms.LoadMessageInfo() == nil { 3349 ms.StoreMessageInfo(mi) 3350 } 3351 return ms 3352 } 3353 return mi.MessageOf(x) 3354 } 3355 3356 // Deprecated: Use ImportFeatureValuesRequest_FeatureSpec.ProtoReflect.Descriptor instead. 3357 func (*ImportFeatureValuesRequest_FeatureSpec) Descriptor() ([]byte, []int) { 3358 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{6, 0} 3359 } 3360 3361 func (x *ImportFeatureValuesRequest_FeatureSpec) GetId() string { 3362 if x != nil { 3363 return x.Id 3364 } 3365 return "" 3366 } 3367 3368 func (x *ImportFeatureValuesRequest_FeatureSpec) GetSourceField() string { 3369 if x != nil { 3370 return x.SourceField 3371 } 3372 return "" 3373 } 3374 3375 // Describe pass-through fields in read_instance source. 3376 type BatchReadFeatureValuesRequest_PassThroughField struct { 3377 state protoimpl.MessageState 3378 sizeCache protoimpl.SizeCache 3379 unknownFields protoimpl.UnknownFields 3380 3381 // Required. The name of the field in the CSV header or the name of the 3382 // column in BigQuery table. The naming restriction is the same as 3383 // [Feature.name][google.cloud.aiplatform.v1.Feature.name]. 3384 FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"` 3385 } 3386 3387 func (x *BatchReadFeatureValuesRequest_PassThroughField) Reset() { 3388 *x = BatchReadFeatureValuesRequest_PassThroughField{} 3389 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[43] 3390 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3391 ms.StoreMessageInfo(mi) 3392 } 3393 3394 func (x *BatchReadFeatureValuesRequest_PassThroughField) String() string { 3395 return protoimpl.X.MessageStringOf(x) 3396 } 3397 3398 func (*BatchReadFeatureValuesRequest_PassThroughField) ProtoMessage() {} 3399 3400 func (x *BatchReadFeatureValuesRequest_PassThroughField) ProtoReflect() protoreflect.Message { 3401 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[43] 3402 if x != nil { 3403 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3404 if ms.LoadMessageInfo() == nil { 3405 ms.StoreMessageInfo(mi) 3406 } 3407 return ms 3408 } 3409 return mi.MessageOf(x) 3410 } 3411 3412 // Deprecated: Use BatchReadFeatureValuesRequest_PassThroughField.ProtoReflect.Descriptor instead. 3413 func (*BatchReadFeatureValuesRequest_PassThroughField) Descriptor() ([]byte, []int) { 3414 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{8, 0} 3415 } 3416 3417 func (x *BatchReadFeatureValuesRequest_PassThroughField) GetFieldName() string { 3418 if x != nil { 3419 return x.FieldName 3420 } 3421 return "" 3422 } 3423 3424 // Selects Features of an EntityType to read values of and specifies read 3425 // settings. 3426 type BatchReadFeatureValuesRequest_EntityTypeSpec struct { 3427 state protoimpl.MessageState 3428 sizeCache protoimpl.SizeCache 3429 unknownFields protoimpl.UnknownFields 3430 3431 // Required. ID of the EntityType to select Features. The EntityType id is 3432 // the 3433 // [entity_type_id][google.cloud.aiplatform.v1.CreateEntityTypeRequest.entity_type_id] 3434 // specified during EntityType creation. 3435 EntityTypeId string `protobuf:"bytes,1,opt,name=entity_type_id,json=entityTypeId,proto3" json:"entity_type_id,omitempty"` 3436 // Required. Selectors choosing which Feature values to read from the 3437 // EntityType. 3438 FeatureSelector *FeatureSelector `protobuf:"bytes,2,opt,name=feature_selector,json=featureSelector,proto3" json:"feature_selector,omitempty"` 3439 // Per-Feature settings for the batch read. 3440 Settings []*DestinationFeatureSetting `protobuf:"bytes,3,rep,name=settings,proto3" json:"settings,omitempty"` 3441 } 3442 3443 func (x *BatchReadFeatureValuesRequest_EntityTypeSpec) Reset() { 3444 *x = BatchReadFeatureValuesRequest_EntityTypeSpec{} 3445 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[44] 3446 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3447 ms.StoreMessageInfo(mi) 3448 } 3449 3450 func (x *BatchReadFeatureValuesRequest_EntityTypeSpec) String() string { 3451 return protoimpl.X.MessageStringOf(x) 3452 } 3453 3454 func (*BatchReadFeatureValuesRequest_EntityTypeSpec) ProtoMessage() {} 3455 3456 func (x *BatchReadFeatureValuesRequest_EntityTypeSpec) ProtoReflect() protoreflect.Message { 3457 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[44] 3458 if x != nil { 3459 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3460 if ms.LoadMessageInfo() == nil { 3461 ms.StoreMessageInfo(mi) 3462 } 3463 return ms 3464 } 3465 return mi.MessageOf(x) 3466 } 3467 3468 // Deprecated: Use BatchReadFeatureValuesRequest_EntityTypeSpec.ProtoReflect.Descriptor instead. 3469 func (*BatchReadFeatureValuesRequest_EntityTypeSpec) Descriptor() ([]byte, []int) { 3470 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{8, 1} 3471 } 3472 3473 func (x *BatchReadFeatureValuesRequest_EntityTypeSpec) GetEntityTypeId() string { 3474 if x != nil { 3475 return x.EntityTypeId 3476 } 3477 return "" 3478 } 3479 3480 func (x *BatchReadFeatureValuesRequest_EntityTypeSpec) GetFeatureSelector() *FeatureSelector { 3481 if x != nil { 3482 return x.FeatureSelector 3483 } 3484 return nil 3485 } 3486 3487 func (x *BatchReadFeatureValuesRequest_EntityTypeSpec) GetSettings() []*DestinationFeatureSetting { 3488 if x != nil { 3489 return x.Settings 3490 } 3491 return nil 3492 } 3493 3494 // Describes exporting the latest Feature values of all entities of the 3495 // EntityType between [start_time, snapshot_time]. 3496 type ExportFeatureValuesRequest_SnapshotExport struct { 3497 state protoimpl.MessageState 3498 sizeCache protoimpl.SizeCache 3499 unknownFields protoimpl.UnknownFields 3500 3501 // Exports Feature values as of this timestamp. If not set, 3502 // retrieve values as of now. Timestamp, if present, must not have higher 3503 // than millisecond precision. 3504 SnapshotTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=snapshot_time,json=snapshotTime,proto3" json:"snapshot_time,omitempty"` 3505 // Excludes Feature values with feature generation timestamp before this 3506 // timestamp. If not set, retrieve oldest values kept in Feature Store. 3507 // Timestamp, if present, must not have higher than millisecond precision. 3508 StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 3509 } 3510 3511 func (x *ExportFeatureValuesRequest_SnapshotExport) Reset() { 3512 *x = ExportFeatureValuesRequest_SnapshotExport{} 3513 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[45] 3514 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3515 ms.StoreMessageInfo(mi) 3516 } 3517 3518 func (x *ExportFeatureValuesRequest_SnapshotExport) String() string { 3519 return protoimpl.X.MessageStringOf(x) 3520 } 3521 3522 func (*ExportFeatureValuesRequest_SnapshotExport) ProtoMessage() {} 3523 3524 func (x *ExportFeatureValuesRequest_SnapshotExport) ProtoReflect() protoreflect.Message { 3525 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[45] 3526 if x != nil { 3527 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3528 if ms.LoadMessageInfo() == nil { 3529 ms.StoreMessageInfo(mi) 3530 } 3531 return ms 3532 } 3533 return mi.MessageOf(x) 3534 } 3535 3536 // Deprecated: Use ExportFeatureValuesRequest_SnapshotExport.ProtoReflect.Descriptor instead. 3537 func (*ExportFeatureValuesRequest_SnapshotExport) Descriptor() ([]byte, []int) { 3538 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{9, 0} 3539 } 3540 3541 func (x *ExportFeatureValuesRequest_SnapshotExport) GetSnapshotTime() *timestamppb.Timestamp { 3542 if x != nil { 3543 return x.SnapshotTime 3544 } 3545 return nil 3546 } 3547 3548 func (x *ExportFeatureValuesRequest_SnapshotExport) GetStartTime() *timestamppb.Timestamp { 3549 if x != nil { 3550 return x.StartTime 3551 } 3552 return nil 3553 } 3554 3555 // Describes exporting all historical Feature values of all entities of the 3556 // EntityType between [start_time, end_time]. 3557 type ExportFeatureValuesRequest_FullExport struct { 3558 state protoimpl.MessageState 3559 sizeCache protoimpl.SizeCache 3560 unknownFields protoimpl.UnknownFields 3561 3562 // Excludes Feature values with feature generation timestamp before this 3563 // timestamp. If not set, retrieve oldest values kept in Feature Store. 3564 // Timestamp, if present, must not have higher than millisecond precision. 3565 StartTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"` 3566 // Exports Feature values as of this timestamp. If not set, 3567 // retrieve values as of now. Timestamp, if present, must not have higher 3568 // than millisecond precision. 3569 EndTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` 3570 } 3571 3572 func (x *ExportFeatureValuesRequest_FullExport) Reset() { 3573 *x = ExportFeatureValuesRequest_FullExport{} 3574 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[46] 3575 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3576 ms.StoreMessageInfo(mi) 3577 } 3578 3579 func (x *ExportFeatureValuesRequest_FullExport) String() string { 3580 return protoimpl.X.MessageStringOf(x) 3581 } 3582 3583 func (*ExportFeatureValuesRequest_FullExport) ProtoMessage() {} 3584 3585 func (x *ExportFeatureValuesRequest_FullExport) ProtoReflect() protoreflect.Message { 3586 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[46] 3587 if x != nil { 3588 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3589 if ms.LoadMessageInfo() == nil { 3590 ms.StoreMessageInfo(mi) 3591 } 3592 return ms 3593 } 3594 return mi.MessageOf(x) 3595 } 3596 3597 // Deprecated: Use ExportFeatureValuesRequest_FullExport.ProtoReflect.Descriptor instead. 3598 func (*ExportFeatureValuesRequest_FullExport) Descriptor() ([]byte, []int) { 3599 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{9, 1} 3600 } 3601 3602 func (x *ExportFeatureValuesRequest_FullExport) GetStartTime() *timestamppb.Timestamp { 3603 if x != nil { 3604 return x.StartTime 3605 } 3606 return nil 3607 } 3608 3609 func (x *ExportFeatureValuesRequest_FullExport) GetEndTime() *timestamppb.Timestamp { 3610 if x != nil { 3611 return x.EndTime 3612 } 3613 return nil 3614 } 3615 3616 // Message to select entity. 3617 // If an entity id is selected, all the feature values corresponding to the 3618 // entity id will be deleted, including the entityId. 3619 type DeleteFeatureValuesRequest_SelectEntity struct { 3620 state protoimpl.MessageState 3621 sizeCache protoimpl.SizeCache 3622 unknownFields protoimpl.UnknownFields 3623 3624 // Required. Selectors choosing feature values of which entity id to be 3625 // deleted from the EntityType. 3626 EntityIdSelector *EntityIdSelector `protobuf:"bytes,1,opt,name=entity_id_selector,json=entityIdSelector,proto3" json:"entity_id_selector,omitempty"` 3627 } 3628 3629 func (x *DeleteFeatureValuesRequest_SelectEntity) Reset() { 3630 *x = DeleteFeatureValuesRequest_SelectEntity{} 3631 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[47] 3632 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3633 ms.StoreMessageInfo(mi) 3634 } 3635 3636 func (x *DeleteFeatureValuesRequest_SelectEntity) String() string { 3637 return protoimpl.X.MessageStringOf(x) 3638 } 3639 3640 func (*DeleteFeatureValuesRequest_SelectEntity) ProtoMessage() {} 3641 3642 func (x *DeleteFeatureValuesRequest_SelectEntity) ProtoReflect() protoreflect.Message { 3643 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[47] 3644 if x != nil { 3645 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3646 if ms.LoadMessageInfo() == nil { 3647 ms.StoreMessageInfo(mi) 3648 } 3649 return ms 3650 } 3651 return mi.MessageOf(x) 3652 } 3653 3654 // Deprecated: Use DeleteFeatureValuesRequest_SelectEntity.ProtoReflect.Descriptor instead. 3655 func (*DeleteFeatureValuesRequest_SelectEntity) Descriptor() ([]byte, []int) { 3656 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{39, 0} 3657 } 3658 3659 func (x *DeleteFeatureValuesRequest_SelectEntity) GetEntityIdSelector() *EntityIdSelector { 3660 if x != nil { 3661 return x.EntityIdSelector 3662 } 3663 return nil 3664 } 3665 3666 // Message to select time range and feature. 3667 // Values of the selected feature generated within an inclusive time range 3668 // will be deleted. Using this option permanently deletes the feature values 3669 // from the specified feature IDs within the specified time range. 3670 // This might include data from the online storage. If you want to retain 3671 // any deleted historical data in the online storage, you must re-ingest it. 3672 type DeleteFeatureValuesRequest_SelectTimeRangeAndFeature struct { 3673 state protoimpl.MessageState 3674 sizeCache protoimpl.SizeCache 3675 unknownFields protoimpl.UnknownFields 3676 3677 // Required. Select feature generated within a half-inclusive time range. 3678 // The time range is lower inclusive and upper exclusive. 3679 TimeRange *interval.Interval `protobuf:"bytes,1,opt,name=time_range,json=timeRange,proto3" json:"time_range,omitempty"` 3680 // Required. Selectors choosing which feature values to be deleted from the 3681 // EntityType. 3682 FeatureSelector *FeatureSelector `protobuf:"bytes,2,opt,name=feature_selector,json=featureSelector,proto3" json:"feature_selector,omitempty"` 3683 // If set, data will not be deleted from online storage. 3684 // When time range is older than the data in online storage, setting this to 3685 // be true will make the deletion have no impact on online serving. 3686 SkipOnlineStorageDelete bool `protobuf:"varint,3,opt,name=skip_online_storage_delete,json=skipOnlineStorageDelete,proto3" json:"skip_online_storage_delete,omitempty"` 3687 } 3688 3689 func (x *DeleteFeatureValuesRequest_SelectTimeRangeAndFeature) Reset() { 3690 *x = DeleteFeatureValuesRequest_SelectTimeRangeAndFeature{} 3691 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[48] 3692 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3693 ms.StoreMessageInfo(mi) 3694 } 3695 3696 func (x *DeleteFeatureValuesRequest_SelectTimeRangeAndFeature) String() string { 3697 return protoimpl.X.MessageStringOf(x) 3698 } 3699 3700 func (*DeleteFeatureValuesRequest_SelectTimeRangeAndFeature) ProtoMessage() {} 3701 3702 func (x *DeleteFeatureValuesRequest_SelectTimeRangeAndFeature) ProtoReflect() protoreflect.Message { 3703 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[48] 3704 if x != nil { 3705 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3706 if ms.LoadMessageInfo() == nil { 3707 ms.StoreMessageInfo(mi) 3708 } 3709 return ms 3710 } 3711 return mi.MessageOf(x) 3712 } 3713 3714 // Deprecated: Use DeleteFeatureValuesRequest_SelectTimeRangeAndFeature.ProtoReflect.Descriptor instead. 3715 func (*DeleteFeatureValuesRequest_SelectTimeRangeAndFeature) Descriptor() ([]byte, []int) { 3716 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{39, 1} 3717 } 3718 3719 func (x *DeleteFeatureValuesRequest_SelectTimeRangeAndFeature) GetTimeRange() *interval.Interval { 3720 if x != nil { 3721 return x.TimeRange 3722 } 3723 return nil 3724 } 3725 3726 func (x *DeleteFeatureValuesRequest_SelectTimeRangeAndFeature) GetFeatureSelector() *FeatureSelector { 3727 if x != nil { 3728 return x.FeatureSelector 3729 } 3730 return nil 3731 } 3732 3733 func (x *DeleteFeatureValuesRequest_SelectTimeRangeAndFeature) GetSkipOnlineStorageDelete() bool { 3734 if x != nil { 3735 return x.SkipOnlineStorageDelete 3736 } 3737 return false 3738 } 3739 3740 // Response message if the request uses the SelectEntity option. 3741 type DeleteFeatureValuesResponse_SelectEntity struct { 3742 state protoimpl.MessageState 3743 sizeCache protoimpl.SizeCache 3744 unknownFields protoimpl.UnknownFields 3745 3746 // The count of deleted entity rows in the offline storage. 3747 // Each row corresponds to the combination of an entity ID and a timestamp. 3748 // One entity ID can have multiple rows in the offline storage. 3749 OfflineStorageDeletedEntityRowCount int64 `protobuf:"varint,1,opt,name=offline_storage_deleted_entity_row_count,json=offlineStorageDeletedEntityRowCount,proto3" json:"offline_storage_deleted_entity_row_count,omitempty"` 3750 // The count of deleted entities in the online storage. 3751 // Each entity ID corresponds to one entity. 3752 OnlineStorageDeletedEntityCount int64 `protobuf:"varint,2,opt,name=online_storage_deleted_entity_count,json=onlineStorageDeletedEntityCount,proto3" json:"online_storage_deleted_entity_count,omitempty"` 3753 } 3754 3755 func (x *DeleteFeatureValuesResponse_SelectEntity) Reset() { 3756 *x = DeleteFeatureValuesResponse_SelectEntity{} 3757 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[49] 3758 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3759 ms.StoreMessageInfo(mi) 3760 } 3761 3762 func (x *DeleteFeatureValuesResponse_SelectEntity) String() string { 3763 return protoimpl.X.MessageStringOf(x) 3764 } 3765 3766 func (*DeleteFeatureValuesResponse_SelectEntity) ProtoMessage() {} 3767 3768 func (x *DeleteFeatureValuesResponse_SelectEntity) ProtoReflect() protoreflect.Message { 3769 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[49] 3770 if x != nil { 3771 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3772 if ms.LoadMessageInfo() == nil { 3773 ms.StoreMessageInfo(mi) 3774 } 3775 return ms 3776 } 3777 return mi.MessageOf(x) 3778 } 3779 3780 // Deprecated: Use DeleteFeatureValuesResponse_SelectEntity.ProtoReflect.Descriptor instead. 3781 func (*DeleteFeatureValuesResponse_SelectEntity) Descriptor() ([]byte, []int) { 3782 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{40, 0} 3783 } 3784 3785 func (x *DeleteFeatureValuesResponse_SelectEntity) GetOfflineStorageDeletedEntityRowCount() int64 { 3786 if x != nil { 3787 return x.OfflineStorageDeletedEntityRowCount 3788 } 3789 return 0 3790 } 3791 3792 func (x *DeleteFeatureValuesResponse_SelectEntity) GetOnlineStorageDeletedEntityCount() int64 { 3793 if x != nil { 3794 return x.OnlineStorageDeletedEntityCount 3795 } 3796 return 0 3797 } 3798 3799 // Response message if the request uses the SelectTimeRangeAndFeature option. 3800 type DeleteFeatureValuesResponse_SelectTimeRangeAndFeature struct { 3801 state protoimpl.MessageState 3802 sizeCache protoimpl.SizeCache 3803 unknownFields protoimpl.UnknownFields 3804 3805 // The count of the features or columns impacted. 3806 // This is the same as the feature count in the request. 3807 ImpactedFeatureCount int64 `protobuf:"varint,1,opt,name=impacted_feature_count,json=impactedFeatureCount,proto3" json:"impacted_feature_count,omitempty"` 3808 // The count of modified entity rows in the offline storage. 3809 // Each row corresponds to the combination of an entity ID and a timestamp. 3810 // One entity ID can have multiple rows in the offline storage. 3811 // Within each row, only the features specified in the request are 3812 // deleted. 3813 OfflineStorageModifiedEntityRowCount int64 `protobuf:"varint,2,opt,name=offline_storage_modified_entity_row_count,json=offlineStorageModifiedEntityRowCount,proto3" json:"offline_storage_modified_entity_row_count,omitempty"` 3814 // The count of modified entities in the online storage. 3815 // Each entity ID corresponds to one entity. 3816 // Within each entity, only the features specified in the request are 3817 // deleted. 3818 OnlineStorageModifiedEntityCount int64 `protobuf:"varint,3,opt,name=online_storage_modified_entity_count,json=onlineStorageModifiedEntityCount,proto3" json:"online_storage_modified_entity_count,omitempty"` 3819 } 3820 3821 func (x *DeleteFeatureValuesResponse_SelectTimeRangeAndFeature) Reset() { 3822 *x = DeleteFeatureValuesResponse_SelectTimeRangeAndFeature{} 3823 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[50] 3824 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3825 ms.StoreMessageInfo(mi) 3826 } 3827 3828 func (x *DeleteFeatureValuesResponse_SelectTimeRangeAndFeature) String() string { 3829 return protoimpl.X.MessageStringOf(x) 3830 } 3831 3832 func (*DeleteFeatureValuesResponse_SelectTimeRangeAndFeature) ProtoMessage() {} 3833 3834 func (x *DeleteFeatureValuesResponse_SelectTimeRangeAndFeature) ProtoReflect() protoreflect.Message { 3835 mi := &file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[50] 3836 if x != nil { 3837 ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) 3838 if ms.LoadMessageInfo() == nil { 3839 ms.StoreMessageInfo(mi) 3840 } 3841 return ms 3842 } 3843 return mi.MessageOf(x) 3844 } 3845 3846 // Deprecated: Use DeleteFeatureValuesResponse_SelectTimeRangeAndFeature.ProtoReflect.Descriptor instead. 3847 func (*DeleteFeatureValuesResponse_SelectTimeRangeAndFeature) Descriptor() ([]byte, []int) { 3848 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP(), []int{40, 1} 3849 } 3850 3851 func (x *DeleteFeatureValuesResponse_SelectTimeRangeAndFeature) GetImpactedFeatureCount() int64 { 3852 if x != nil { 3853 return x.ImpactedFeatureCount 3854 } 3855 return 0 3856 } 3857 3858 func (x *DeleteFeatureValuesResponse_SelectTimeRangeAndFeature) GetOfflineStorageModifiedEntityRowCount() int64 { 3859 if x != nil { 3860 return x.OfflineStorageModifiedEntityRowCount 3861 } 3862 return 0 3863 } 3864 3865 func (x *DeleteFeatureValuesResponse_SelectTimeRangeAndFeature) GetOnlineStorageModifiedEntityCount() int64 { 3866 if x != nil { 3867 return x.OnlineStorageModifiedEntityCount 3868 } 3869 return 0 3870 } 3871 3872 var File_google_cloud_aiplatform_v1_featurestore_service_proto protoreflect.FileDescriptor 3873 3874 var file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDesc = []byte{ 3875 0x0a, 0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 3876 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x65, 0x61, 3877 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 3878 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 3879 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 3880 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 3881 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 3882 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 3883 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 3884 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 3885 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 3886 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 3887 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 3888 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 3889 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x70, 3890 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x28, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 3891 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 3892 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x31, 3893 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 3894 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 3895 0x72, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 3896 0x6f, 0x1a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 3897 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x65, 3898 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 3899 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x61, 3900 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6f, 0x2e, 3901 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 3902 0x6f, 0x75, 0x64, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x76, 3903 0x31, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 3904 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 3905 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 3906 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 3907 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 3908 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 3909 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 3910 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 3911 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 3912 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 3913 0x79, 0x70, 0x65, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 3914 0x74, 0x6f, 0x22, 0xe4, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 3915 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 3916 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 3917 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x12, 0x26, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 3918 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 3919 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 3920 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x51, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 3921 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 3922 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 3923 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 3924 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x66, 3925 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x0f, 0x66, 3926 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 3927 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x66, 0x65, 0x61, 0x74, 0x75, 3928 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x16, 0x47, 0x65, 0x74, 3929 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 3930 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 3931 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x61, 0x69, 0x70, 0x6c, 0x61, 3932 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 3933 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 3934 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x8a, 0x02, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 3935 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 3936 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 3937 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x12, 0x26, 0x61, 0x69, 3938 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 3939 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 3940 0x74, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 3941 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 3942 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 3943 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 3944 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 3945 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 3946 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 3947 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x37, 0x0a, 0x09, 0x72, 3948 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 3949 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 3950 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 3951 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x93, 0x01, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 3952 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 3953 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 3954 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 3955 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 3956 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 3957 0x6f, 0x72, 0x65, 0x52, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 3958 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 3959 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 3960 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xab, 0x01, 0x0a, 0x19, 0x55, 3961 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 3962 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 3963 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 3964 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 3965 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 3966 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x66, 3967 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 3968 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 3969 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 3970 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 3971 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x75, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 3972 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 3973 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 3974 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x61, 0x69, 0x70, 3975 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 3976 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 3977 0x6f, 0x72, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 3978 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 3979 0xdb, 0x06, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 3980 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x49, 3981 0x0a, 0x0b, 0x61, 0x76, 0x72, 0x6f, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 3982 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 3983 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 3984 0x2e, 0x41, 0x76, 0x72, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x61, 3985 0x76, 0x72, 0x6f, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x0f, 0x62, 0x69, 0x67, 3986 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 3987 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 3988 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 3989 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 3990 0x52, 0x0e, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 3991 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x73, 0x76, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 3992 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 3993 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 3994 0x31, 0x2e, 0x43, 0x73, 0x76, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x63, 3995 0x73, 0x76, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x66, 0x65, 0x61, 0x74, 3996 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x06, 3997 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 3998 0x69, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x3f, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 3999 0x75, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 4000 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 4001 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x48, 0x01, 0x52, 0x0b, 0x66, 0x65, 4002 0x61, 0x74, 0x75, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4d, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 4003 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 4004 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 4005 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 4006 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, 0x6e, 4007 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x65, 0x6e, 0x74, 0x69, 4008 0x74, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 4009 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 4010 0x12, 0x6c, 0x0a, 0x0d, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 4011 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4012 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 4013 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 4014 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 4015 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 4016 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x34, 4017 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 4018 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 4019 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x72, 4020 0x76, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 4021 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 4022 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x1a, 0x64, 0x69, 0x73, 0x61, 0x62, 4023 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x61, 0x6e, 0x61, 4024 0x6c, 0x79, 0x73, 0x69, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x64, 0x69, 0x73, 4025 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x6e, 0x61, 4026 0x6c, 0x79, 0x73, 0x69, 0x73, 0x1a, 0x45, 0x0a, 0x0b, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4027 0x53, 0x70, 0x65, 0x63, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 4028 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 4029 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 4030 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x08, 0x0a, 0x06, 4031 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x15, 0x0a, 0x13, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 4032 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x92, 0x02, 4033 0x0a, 0x1b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 4034 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 4035 0x15, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 4036 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x69, 0x6d, 4037 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 4038 0x74, 0x12, 0x3f, 0x0a, 0x1c, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x65, 4039 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 4040 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 4041 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 4042 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x72, 0x6f, 4043 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 4044 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x52, 4045 0x0a, 0x26, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6f, 0x75, 0x74, 0x73, 4046 0x69, 0x64, 0x65, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 4047 0x77, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x22, 4048 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 4049 0x52, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x75, 4050 0x6e, 0x74, 0x22, 0xf8, 0x07, 0x0a, 0x1d, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 4051 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 4052 0x75, 0x65, 0x73, 0x74, 0x12, 0x55, 0x0a, 0x12, 0x63, 0x73, 0x76, 0x5f, 0x72, 0x65, 0x61, 0x64, 4053 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 4054 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 4055 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x73, 4056 0x76, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x10, 0x63, 0x73, 0x76, 0x52, 0x65, 4057 0x61, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x64, 0x0a, 0x17, 0x62, 4058 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x69, 0x6e, 0x73, 4059 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 4060 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 4061 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 0x75, 0x65, 4062 0x72, 0x79, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x15, 0x62, 0x69, 0x67, 0x71, 4063 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x61, 0x64, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 4064 0x73, 0x12, 0x52, 0x0a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 4065 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 4066 0x26, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4067 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 4068 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4069 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x5a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 4070 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 4071 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 4072 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 4073 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 4074 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 4075 0x6e, 0x12, 0x7a, 0x0a, 0x13, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x68, 0x72, 0x6f, 0x75, 0x67, 4076 0x68, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 4077 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4078 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 4079 0x68, 0x52, 0x65, 0x61, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 4080 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x54, 0x68, 4081 0x72, 0x6f, 0x75, 0x67, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x11, 0x70, 0x61, 0x73, 0x73, 4082 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x79, 0x0a, 4083 0x11, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 4084 0x63, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4085 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 4086 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x46, 4087 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 4088 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 4089 0x65, 0x63, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 4090 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x3e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 4091 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 4092 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 4093 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x73, 4094 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x36, 0x0a, 0x10, 0x50, 0x61, 0x73, 0x73, 4095 0x54, 0x68, 0x72, 0x6f, 0x75, 0x67, 0x68, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x22, 0x0a, 0x0a, 4096 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 4097 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 4098 0x1a, 0xeb, 0x01, 0x0a, 0x0e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x53, 4099 0x70, 0x65, 0x63, 0x12, 0x29, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 4100 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 4101 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x12, 0x5b, 4102 0x0a, 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 4103 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4104 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 4105 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6c, 4106 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 4107 0x75, 0x72, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x51, 0x0a, 0x08, 0x73, 4108 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 4109 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 4110 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 0x69, 4111 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 4112 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x0d, 4113 0x0a, 0x0b, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe6, 0x06, 4114 0x0a, 0x1a, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 4115 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x70, 0x0a, 0x0f, 4116 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 4117 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 4118 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 4119 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4120 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x6e, 4121 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0e, 4122 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x64, 4123 0x0a, 0x0b, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 4124 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 4125 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 4126 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 4127 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x75, 0x6c, 0x6c, 4128 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x66, 0x75, 0x6c, 0x6c, 0x45, 0x78, 4129 0x70, 0x6f, 0x72, 0x74, 0x12, 0x4d, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 4130 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 4131 0x26, 0x0a, 0x24, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 4132 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 4133 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 4134 0x79, 0x70, 0x65, 0x12, 0x5a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 4135 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4136 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 4137 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 4138 0x75, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x03, 0xe0, 4139 0x41, 0x02, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 4140 0x5b, 0x0a, 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 4141 0x74, 0x6f, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4142 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 4143 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 4144 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x66, 0x65, 0x61, 4145 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x51, 0x0a, 0x08, 4146 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 4147 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4148 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x73, 0x74, 4149 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 4150 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 4151 0x8c, 0x01, 0x0a, 0x0e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x45, 0x78, 0x70, 0x6f, 4152 0x72, 0x74, 0x12, 0x3f, 0x0a, 0x0d, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x5f, 0x74, 4153 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4154 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 4155 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x73, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x54, 4156 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 4157 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4158 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 4159 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x7e, 4160 0x0a, 0x0a, 0x46, 0x75, 0x6c, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x0a, 4161 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 4162 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 4163 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74, 4164 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 4165 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4166 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 4167 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x06, 4168 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x6c, 0x0a, 0x19, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 4169 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x74, 4170 0x69, 0x6e, 0x67, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 4171 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x66, 0x65, 4172 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x64, 0x65, 0x73, 0x74, 0x69, 4173 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 4174 0x28, 0x09, 0x52, 0x10, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 4175 0x69, 0x65, 0x6c, 0x64, 0x22, 0xcb, 0x02, 0x0a, 0x17, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4176 0x56, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 4177 0x12, 0x64, 0x0a, 0x14, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x64, 0x65, 0x73, 4178 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 4179 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4180 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x67, 0x51, 4181 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 4182 0x00, 0x52, 0x13, 0x62, 0x69, 0x67, 0x71, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 4183 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x64, 0x0a, 0x14, 0x74, 0x66, 0x72, 0x65, 0x63, 0x6f, 4184 0x72, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 4185 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 4186 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 4187 0x31, 0x2e, 0x54, 0x46, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 4188 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x13, 0x74, 0x66, 0x72, 0x65, 0x63, 0x6f, 0x72, 4189 0x64, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x0f, 4190 0x63, 0x73, 0x76, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 4191 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 4192 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 4193 0x76, 0x31, 0x2e, 0x43, 0x73, 0x76, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 4194 0x6e, 0x48, 0x00, 0x52, 0x0e, 0x63, 0x73, 0x76, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 4195 0x69, 0x6f, 0x6e, 0x42, 0x0d, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 4196 0x6f, 0x6e, 0x22, 0x1d, 0x0a, 0x1b, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 4197 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 4198 0x65, 0x22, 0x20, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x46, 0x65, 4199 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 4200 0x6e, 0x73, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 4201 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 4202 0x46, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 4203 0x2e, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 4204 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 4205 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 4206 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 4207 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 4208 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 4209 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 4210 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 4211 0x12, 0x29, 0x0a, 0x0e, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 4212 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x65, 4213 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x14, 0x47, 4214 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 4215 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 4216 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x61, 0x69, 0x70, 0x6c, 0x61, 4217 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 4218 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 4219 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x86, 0x02, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 4220 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 4221 0x12, 0x44, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 4222 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x12, 0x24, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 4223 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 4224 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 4225 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 4226 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 4227 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 4228 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 4229 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 4230 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 4231 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 4232 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x37, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 4233 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4234 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 4235 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x72, 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x8c, 4236 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 4237 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x49, 0x0a, 0x0c, 0x65, 0x6e, 4238 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 4239 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 4240 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 4241 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 4242 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 4243 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 4244 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa4, 0x01, 4245 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 4246 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4c, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 4247 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 4248 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4249 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 4250 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x65, 0x6e, 0x74, 4251 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 4252 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 4253 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 4254 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 4255 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x71, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 4256 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 4257 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 4258 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 4259 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 4260 0x2f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 4261 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 4262 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 4263 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 4264 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 4265 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x12, 0x21, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 4266 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 4267 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 4268 0x65, 0x6e, 0x74, 0x12, 0x42, 0x0a, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 4269 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 4270 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 4271 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 4272 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x65, 0x61, 0x74, 0x75, 4273 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 4274 0x52, 0x09, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x49, 0x64, 0x22, 0xb2, 0x01, 0x0a, 0x1a, 4275 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 4276 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 4277 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 4278 0x41, 0x23, 0x12, 0x21, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 4279 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 4280 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x51, 0x0a, 4281 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 4282 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 4283 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 4284 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 4285 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 4286 0x22, 0x5e, 0x0a, 0x1b, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 4287 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 4288 0x3f, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 4289 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 4290 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 4291 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4292 0x22, 0x52, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 4293 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 4294 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x61, 0x69, 0x70, 4295 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 4296 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x04, 4297 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xae, 0x02, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 4298 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 4299 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 4300 0x02, 0xfa, 0x41, 0x23, 0x12, 0x21, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 4301 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 4302 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 4303 0x16, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 4304 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 4305 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 4306 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 4307 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 4308 0x6b, 0x65, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 4309 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x37, 4310 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 4311 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 4312 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x08, 0x72, 4313 0x65, 0x61, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x2c, 0x0a, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73, 4314 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 4315 0x01, 0x28, 0x05, 0x52, 0x10, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 4316 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x7f, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 4317 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 4318 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 4319 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 4320 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 4321 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x26, 4322 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 4323 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 4324 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb0, 0x01, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 4325 0x68, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 4326 0x12, 0x45, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 4327 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 4328 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 4329 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 4330 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 4331 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1b, 0x0a, 4332 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 4333 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 4334 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 4335 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x81, 0x01, 0x0a, 0x16, 0x53, 0x65, 4336 0x61, 0x72, 0x63, 0x68, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 4337 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x08, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4338 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4339 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 4340 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, 0x61, 4341 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 4342 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 4343 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x97, 0x01, 4344 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 4345 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x42, 0x0a, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 4346 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4347 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 4348 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x42, 0x03, 0xe0, 0x41, 4349 0x02, 0x52, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 4350 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 4351 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 4352 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 4353 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x55, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 4354 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 4355 0x3d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 4356 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 4357 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 4358 0x2f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x86, 4359 0x01, 0x0a, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4360 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 4361 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5f, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 4362 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 4363 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 4364 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 4365 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 4366 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 4367 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x86, 0x01, 0x0a, 0x23, 0x55, 0x70, 0x64, 0x61, 4368 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, 4369 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 4370 0x5f, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 4371 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4372 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 4373 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 4374 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 4375 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 4376 0x22, 0xd3, 0x03, 0x0a, 0x24, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 4377 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 4378 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5f, 0x0a, 0x10, 0x67, 0x65, 0x6e, 4379 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 4380 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 4381 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 4382 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 4383 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 4384 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x6d, 4385 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 4386 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x69, 0x6d, 0x70, 0x6f, 0x72, 4387 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3f, 4388 0x0a, 0x1c, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 4389 0x72, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 4390 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x46, 0x65, 4391 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 4392 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x73, 0x18, 0x04, 4393 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x55, 0x72, 0x69, 0x73, 4394 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 4395 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x69, 0x6e, 0x76, 4396 0x61, 0x6c, 0x69, 0x64, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x26, 4397 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6f, 0x75, 0x74, 0x73, 0x69, 0x64, 4398 0x65, 0x5f, 0x72, 0x65, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x6f, 0x77, 0x73, 4399 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x22, 0x74, 0x69, 4400 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4f, 0x75, 0x74, 0x73, 0x69, 0x64, 0x65, 0x52, 0x65, 4401 0x74, 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x6f, 0x77, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 4402 0x12, 0x34, 0x0a, 0x16, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x65, 4403 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x03, 4404 0x52, 0x14, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 4405 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x24, 0x45, 0x78, 0x70, 0x6f, 0x72, 4406 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x4f, 0x70, 4407 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 4408 0x5f, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 4409 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4410 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 4411 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 4412 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 4413 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 4414 0x22, 0x8a, 0x01, 0x0a, 0x27, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x46, 0x65, 4415 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 4416 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5f, 0x0a, 0x10, 4417 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 4418 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4419 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 4420 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 4421 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x67, 0x65, 4422 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x87, 0x01, 4423 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 4424 0x61, 0x6c, 0x75, 0x65, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 4425 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5f, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 4426 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 4427 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 4428 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 4429 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 4430 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 4431 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x84, 0x01, 0x0a, 0x21, 0x43, 0x72, 0x65, 0x61, 4432 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x70, 0x65, 0x72, 4433 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5f, 0x0a, 4434 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 4435 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4436 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 4437 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x65, 0x72, 4438 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x67, 4439 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x81, 4440 0x01, 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4441 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 4442 0x61, 0x12, 0x5f, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 4443 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 4444 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 4445 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 4446 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 4447 0x61, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 4448 0x74, 0x61, 0x22, 0x87, 0x01, 0x0a, 0x24, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 4449 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 4450 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x5f, 0x0a, 0x10, 0x67, 4451 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 4452 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 4453 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 4454 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 4455 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x0f, 0x67, 0x65, 0x6e, 4456 0x65, 0x72, 0x69, 0x63, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe2, 0x05, 0x0a, 4457 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 4458 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6a, 0x0a, 0x0d, 0x73, 4459 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 4460 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 4461 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 4462 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 4463 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 4464 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 4465 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x94, 0x01, 0x0a, 0x1d, 0x73, 0x65, 0x6c, 0x65, 4466 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x6e, 4467 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 4468 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 4469 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 4470 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 4471 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x69, 4472 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 4473 0x65, 0x48, 0x00, 0x52, 0x19, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 4474 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x4d, 4475 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 4476 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x61, 0x69, 0x70, 4477 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 4478 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 4479 0x65, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x6f, 0x0a, 4480 0x0c, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x5f, 0x0a, 4481 0x12, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 4482 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4483 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 4484 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x53, 4485 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x65, 0x6e, 4486 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0xf0, 4487 0x01, 0x0a, 0x19, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 4488 0x67, 0x65, 0x41, 0x6e, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x39, 0x0a, 0x0a, 4489 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 4490 0x32, 0x15, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x49, 4491 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x09, 0x74, 0x69, 4492 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x5b, 0x0a, 0x10, 0x66, 0x65, 0x61, 0x74, 0x75, 4493 0x72, 0x65, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 4494 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 4495 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 4496 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x42, 0x03, 4497 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x6c, 0x65, 4498 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3b, 0x0a, 0x1a, 0x73, 0x6b, 0x69, 0x70, 0x5f, 0x6f, 0x6e, 0x6c, 4499 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 4500 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x73, 0x6b, 0x69, 0x70, 0x4f, 0x6e, 4501 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 4502 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 4503 0x6e, 0x22, 0xe1, 0x05, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 4504 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 4505 0x65, 0x12, 0x6b, 0x0a, 0x0d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 4506 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4507 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 4508 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 4509 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 4510 0x65, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x00, 4511 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x95, 4512 0x01, 0x0a, 0x1d, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 4513 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4514 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4515 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 4516 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 4517 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 4518 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 4519 0x6e, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x19, 0x73, 0x65, 0x6c, 4520 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x41, 0x6e, 0x64, 0x46, 4521 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x1a, 0xb3, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x6c, 0x65, 0x63, 4522 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x55, 0x0a, 0x28, 0x6f, 0x66, 0x66, 0x6c, 0x69, 4523 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 4524 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 4525 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x23, 0x6f, 0x66, 0x66, 0x6c, 0x69, 4526 0x6e, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 4527 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4c, 4528 0x0a, 0x23, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 4529 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 4530 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1f, 0x6f, 0x6e, 0x6c, 4531 0x69, 0x6e, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 4532 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xfa, 0x01, 0x0a, 4533 0x19, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 4534 0x41, 0x6e, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x69, 0x6d, 4535 0x70, 0x61, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x63, 4536 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x69, 0x6d, 0x70, 0x61, 4537 0x63, 0x74, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 4538 0x12, 0x57, 0x0a, 0x29, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 4539 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 4540 0x69, 0x74, 0x79, 0x5f, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 4541 0x01, 0x28, 0x03, 0x52, 0x24, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x6f, 0x72, 4542 0x61, 0x67, 0x65, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x69, 0x74, 4543 0x79, 0x52, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4e, 0x0a, 0x24, 0x6f, 0x6e, 0x6c, 4544 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 4545 0x66, 0x69, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 4546 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x20, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 4547 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x45, 0x6e, 4548 0x74, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 4549 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x10, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 4550 0x49, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x0a, 0x63, 0x73, 4551 0x76, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 4552 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4553 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x73, 0x76, 0x53, 4554 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x63, 0x73, 0x76, 0x53, 0x6f, 0x75, 0x72, 4555 0x63, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x5f, 4556 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x74, 4557 0x69, 0x74, 0x79, 0x49, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x11, 0x0a, 0x0f, 0x45, 0x6e, 4558 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x32, 0xe6, 0x29, 4559 0x0a, 0x13, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x65, 4560 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa6, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 4561 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x35, 0x2e, 0x67, 4562 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 4563 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 4564 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 4565 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 4566 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 4567 0x6f, 0x6e, 0x22, 0xb9, 0x01, 0xca, 0x41, 0x33, 0x0a, 0x0c, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 4568 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x23, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 4569 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 4570 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x13, 0x70, 0x61, 4571 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 4572 0x65, 0xda, 0x41, 0x23, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x65, 0x61, 0x74, 0x75, 4573 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4574 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x0c, 0x66, 4575 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x22, 0x31, 0x2f, 0x76, 0x31, 4576 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 4577 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 4578 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0xb1, 4579 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 4580 0x72, 0x65, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 4581 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 4582 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 4583 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4584 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 4585 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 4586 0x22, 0x40, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 4587 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 4588 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 4589 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 4590 0x2a, 0x7d, 0x12, 0xc4, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 4591 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4592 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 4593 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 4594 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 4595 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4596 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 4597 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 4598 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 4599 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 4600 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 4601 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x65, 0x61, 0x74, 4602 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x92, 0x02, 0x0a, 0x12, 0x55, 0x70, 4603 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 4604 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 4605 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 4606 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 4607 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4608 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 4609 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa5, 0x01, 0xca, 0x41, 0x33, 0x0a, 0x0c, 0x46, 0x65, 4610 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x23, 0x55, 0x70, 0x64, 0x61, 4611 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4f, 0x70, 4612 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 4613 0x41, 0x18, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, 0x75, 4614 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 4615 0x3a, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x32, 0x3e, 4616 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 4617 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 4618 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 4619 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xed, 4620 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4621 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 4622 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 4623 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4624 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 4625 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 4626 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x80, 0x01, 0xca, 0x41, 4627 0x30, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 4628 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 4629 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 4630 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xda, 0x41, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 4631 0x66, 0x6f, 0x72, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x76, 0x31, 4632 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 4633 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 4634 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xa8, 4635 0x02, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 4636 0x79, 0x70, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 4637 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 4638 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 4639 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4640 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 4641 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xbf, 0x01, 0xca, 0x41, 0x2f, 0x0a, 0x0a, 0x45, 4642 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x43, 0x72, 0x65, 0x61, 0x74, 4643 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 4644 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x12, 0x70, 4645 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 4646 0x65, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x65, 0x6e, 0x74, 0x69, 0x74, 4647 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 4648 0x70, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x3a, 0x0b, 0x65, 0x6e, 0x74, 4649 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 4650 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 4651 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 4652 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 4653 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0xb9, 0x01, 0x0a, 0x0d, 0x47, 0x65, 4654 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 4655 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 4656 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 4657 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 4658 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 4659 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 4660 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4e, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 4661 0xe4, 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 4662 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 4663 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 4664 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 4665 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xcc, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 4666 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4667 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 4668 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 4669 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 4670 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 4671 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 4672 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 4673 0x73, 0x65, 0x22, 0x50, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 0xe4, 4674 0x93, 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 4675 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 4676 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4677 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 4678 0x79, 0x70, 0x65, 0x73, 0x12, 0xeb, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 4679 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 4680 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 4681 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 4682 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 4683 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4684 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 4685 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x22, 0x7a, 0xda, 0x41, 0x17, 0x65, 0x6e, 0x74, 0x69, 0x74, 4686 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 4687 0x73, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5a, 0x3a, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 4688 0x5f, 0x74, 0x79, 0x70, 0x65, 0x32, 0x4b, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x69, 4689 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 4690 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 4691 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 4692 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 4693 0x2a, 0x7d, 0x12, 0xf7, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 4694 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4695 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 4696 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x74, 4697 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 4698 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 4699 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8e, 0x01, 0xca, 0x41, 4700 0x30, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 4701 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 4702 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 4703 0x61, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xda, 0x41, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 4704 0x66, 0x6f, 0x72, 0x63, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x2a, 0x3f, 0x2f, 0x76, 0x31, 4705 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 4706 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 4707 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 4708 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0x97, 0x02, 0x0a, 4709 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x30, 4710 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4711 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 4712 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 4713 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 4714 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 4715 0xb4, 0x01, 0xca, 0x41, 0x29, 0x0a, 0x07, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1e, 4716 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x4f, 0x70, 0x65, 4717 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 4718 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0xda, 4719 0x41, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4720 0x2c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 4721 0x55, 0x3a, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 4722 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 4723 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 4724 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 4725 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x65, 4726 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0xa8, 0x02, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x63, 0x68, 4727 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x36, 4728 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4729 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 4730 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 4731 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4732 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 4733 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x01, 0xca, 0x41, 0x43, 0x0a, 0x1b, 0x42, 0x61, 0x74, 4734 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4735 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x42, 0x61, 0x74, 0x63, 0x68, 0x43, 4736 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x4f, 0x70, 0x65, 4737 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 4738 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 4739 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x3a, 0x01, 0x2a, 0x22, 0x56, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 4740 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 4741 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 4742 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 4743 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x65, 0x61, 4744 0x74, 0x75, 0x72, 0x65, 0x73, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 4745 0x65, 0x12, 0xbb, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4746 0x12, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 4747 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 4748 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 4749 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 4750 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x65, 0x61, 4751 0x74, 0x75, 0x72, 0x65, 0x22, 0x59, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 4752 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 4753 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 4754 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 4755 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 4756 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 4757 0xce, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4758 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 4759 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 4760 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 4761 0x74, 0x1a, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 4762 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 4763 0x69, 0x73, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 4764 0x6e, 0x73, 0x65, 0x22, 0x5b, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x82, 0xd3, 4765 0xe4, 0x93, 0x02, 0x4c, 0x12, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 4766 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 4767 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4768 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 4769 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4770 0x12, 0xe1, 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 4771 0x72, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 4772 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 4773 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 4774 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 4775 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 4776 0x31, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x22, 0x79, 0xda, 0x41, 0x13, 0x66, 0x65, 4777 0x61, 0x74, 0x75, 0x72, 0x65, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 4778 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5d, 0x3a, 0x07, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4779 0x32, 0x52, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x2e, 0x6e, 4780 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 4781 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 4782 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 4783 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4784 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xef, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 4785 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4786 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 4787 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 4788 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4789 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 4790 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8c, 0x01, 0xca, 0x41, 0x30, 0x0a, 0x15, 0x67, 4791 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 4792 0x6d, 0x70, 0x74, 0x79, 0x12, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 4793 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x04, 4794 0x6e, 0x61, 0x6d, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4c, 0x2a, 0x4a, 0x2f, 0x76, 0x31, 0x2f, 4795 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 4796 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 4797 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 4798 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 4799 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x12, 0xa8, 0x02, 0x0a, 0x13, 0x49, 0x6d, 0x70, 0x6f, 0x72, 4800 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x36, 4801 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 4802 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 4803 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 4804 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 4805 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 4806 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x01, 0xca, 0x41, 0x43, 0x0a, 0x1b, 0x49, 0x6d, 0x70, 4807 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 4808 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 4809 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x4f, 0x70, 0x65, 4810 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 4811 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x82, 0xd3, 0xe4, 0x93, 4812 0x02, 0x5f, 0x3a, 0x01, 0x2a, 0x22, 0x5a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x69, 4813 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 4814 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 4815 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 4816 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x69, 0x6d, 4817 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 4818 0x73, 0x12, 0xab, 0x02, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x46, 4819 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x39, 0x2e, 0x67, 4820 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 4821 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x52, 4822 0x65, 0x61, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 4823 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4824 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 4825 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb6, 0x01, 0xca, 0x41, 0x49, 0x0a, 0x1e, 0x42, 0x61, 4826 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 4827 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x42, 0x61, 4828 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 4829 0x6c, 0x75, 0x65, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 4830 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x0c, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4831 0x74, 0x6f, 0x72, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x3a, 0x01, 0x2a, 0x22, 0x50, 0x2f, 4832 0x76, 0x31, 0x2f, 0x7b, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 4833 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 4834 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4835 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 4836 0x61, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 4837 0xa8, 0x02, 0x0a, 0x13, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 4838 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 4839 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 4840 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 4841 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 4842 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 4843 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 4844 0x01, 0xca, 0x41, 0x43, 0x0a, 0x1b, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 4845 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 4846 0x65, 0x12, 0x24, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 4847 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 4848 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xda, 0x41, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 4849 0x5f, 0x74, 0x79, 0x70, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x3a, 0x01, 0x2a, 0x22, 0x5a, 4850 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 4851 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 4852 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 4853 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 4854 0x70, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x46, 0x65, 0x61, 4855 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0xa8, 0x02, 0x0a, 0x13, 0x44, 4856 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 4857 0x65, 0x73, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 4858 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 4859 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 4860 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 4861 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 4862 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb9, 0x01, 0xca, 0x41, 0x43, 0x0a, 4863 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 4864 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x44, 0x65, 4865 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 4866 0x73, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 4867 0x74, 0x61, 0xda, 0x41, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 4868 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5f, 0x3a, 0x01, 0x2a, 0x22, 0x5a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 4869 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 4870 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 4871 0x2f, 0x2a, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 4872 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x2a, 4873 0x7d, 0x3a, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x56, 4874 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0xdf, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 4875 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 4876 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 4877 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 0x65, 0x61, 0x74, 4878 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 4879 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 0x61, 4880 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 4881 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 4882 0x66, 0xda, 0x41, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0xda, 0x41, 0x0e, 0x6c, 4883 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x82, 0xd3, 0xe4, 4884 0x93, 0x02, 0x44, 0x12, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 4885 0x6f, 0x6e, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 4886 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x66, 0x65, 0x61, 0x74, 0x75, 4887 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x46, 4888 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x4d, 0xca, 0x41, 0x19, 0x61, 0x69, 0x70, 0x6c, 4889 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 4890 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 4891 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 4892 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 4893 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42, 0xd6, 0x01, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 4894 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x61, 0x69, 0x70, 0x6c, 4895 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x18, 0x46, 0x65, 0x61, 0x74, 0x75, 4896 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 4897 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 4898 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x61, 0x69, 0x70, 0x6c, 0x61, 4899 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x2f, 0x61, 0x69, 0x70, 0x6c, 4900 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x70, 0x62, 0x3b, 0x61, 0x69, 0x70, 0x6c, 0x61, 0x74, 0x66, 4901 0x6f, 0x72, 0x6d, 0x70, 0x62, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x43, 4902 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 4903 0x56, 0x31, 0xca, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 4904 0x64, 0x5c, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5c, 0x56, 0x31, 0xea, 4905 0x02, 0x1d, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 4906 0x3a, 0x41, 0x49, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 4907 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 4908 } 4909 4910 var ( 4911 file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescOnce sync.Once 4912 file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescData = file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDesc 4913 ) 4914 4915 func file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescGZIP() []byte { 4916 file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescOnce.Do(func() { 4917 file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescData) 4918 }) 4919 return file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDescData 4920 } 4921 4922 var file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes = make([]protoimpl.MessageInfo, 51) 4923 var file_google_cloud_aiplatform_v1_featurestore_service_proto_goTypes = []any{ 4924 (*CreateFeaturestoreRequest)(nil), // 0: google.cloud.aiplatform.v1.CreateFeaturestoreRequest 4925 (*GetFeaturestoreRequest)(nil), // 1: google.cloud.aiplatform.v1.GetFeaturestoreRequest 4926 (*ListFeaturestoresRequest)(nil), // 2: google.cloud.aiplatform.v1.ListFeaturestoresRequest 4927 (*ListFeaturestoresResponse)(nil), // 3: google.cloud.aiplatform.v1.ListFeaturestoresResponse 4928 (*UpdateFeaturestoreRequest)(nil), // 4: google.cloud.aiplatform.v1.UpdateFeaturestoreRequest 4929 (*DeleteFeaturestoreRequest)(nil), // 5: google.cloud.aiplatform.v1.DeleteFeaturestoreRequest 4930 (*ImportFeatureValuesRequest)(nil), // 6: google.cloud.aiplatform.v1.ImportFeatureValuesRequest 4931 (*ImportFeatureValuesResponse)(nil), // 7: google.cloud.aiplatform.v1.ImportFeatureValuesResponse 4932 (*BatchReadFeatureValuesRequest)(nil), // 8: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest 4933 (*ExportFeatureValuesRequest)(nil), // 9: google.cloud.aiplatform.v1.ExportFeatureValuesRequest 4934 (*DestinationFeatureSetting)(nil), // 10: google.cloud.aiplatform.v1.DestinationFeatureSetting 4935 (*FeatureValueDestination)(nil), // 11: google.cloud.aiplatform.v1.FeatureValueDestination 4936 (*ExportFeatureValuesResponse)(nil), // 12: google.cloud.aiplatform.v1.ExportFeatureValuesResponse 4937 (*BatchReadFeatureValuesResponse)(nil), // 13: google.cloud.aiplatform.v1.BatchReadFeatureValuesResponse 4938 (*CreateEntityTypeRequest)(nil), // 14: google.cloud.aiplatform.v1.CreateEntityTypeRequest 4939 (*GetEntityTypeRequest)(nil), // 15: google.cloud.aiplatform.v1.GetEntityTypeRequest 4940 (*ListEntityTypesRequest)(nil), // 16: google.cloud.aiplatform.v1.ListEntityTypesRequest 4941 (*ListEntityTypesResponse)(nil), // 17: google.cloud.aiplatform.v1.ListEntityTypesResponse 4942 (*UpdateEntityTypeRequest)(nil), // 18: google.cloud.aiplatform.v1.UpdateEntityTypeRequest 4943 (*DeleteEntityTypeRequest)(nil), // 19: google.cloud.aiplatform.v1.DeleteEntityTypeRequest 4944 (*CreateFeatureRequest)(nil), // 20: google.cloud.aiplatform.v1.CreateFeatureRequest 4945 (*BatchCreateFeaturesRequest)(nil), // 21: google.cloud.aiplatform.v1.BatchCreateFeaturesRequest 4946 (*BatchCreateFeaturesResponse)(nil), // 22: google.cloud.aiplatform.v1.BatchCreateFeaturesResponse 4947 (*GetFeatureRequest)(nil), // 23: google.cloud.aiplatform.v1.GetFeatureRequest 4948 (*ListFeaturesRequest)(nil), // 24: google.cloud.aiplatform.v1.ListFeaturesRequest 4949 (*ListFeaturesResponse)(nil), // 25: google.cloud.aiplatform.v1.ListFeaturesResponse 4950 (*SearchFeaturesRequest)(nil), // 26: google.cloud.aiplatform.v1.SearchFeaturesRequest 4951 (*SearchFeaturesResponse)(nil), // 27: google.cloud.aiplatform.v1.SearchFeaturesResponse 4952 (*UpdateFeatureRequest)(nil), // 28: google.cloud.aiplatform.v1.UpdateFeatureRequest 4953 (*DeleteFeatureRequest)(nil), // 29: google.cloud.aiplatform.v1.DeleteFeatureRequest 4954 (*CreateFeaturestoreOperationMetadata)(nil), // 30: google.cloud.aiplatform.v1.CreateFeaturestoreOperationMetadata 4955 (*UpdateFeaturestoreOperationMetadata)(nil), // 31: google.cloud.aiplatform.v1.UpdateFeaturestoreOperationMetadata 4956 (*ImportFeatureValuesOperationMetadata)(nil), // 32: google.cloud.aiplatform.v1.ImportFeatureValuesOperationMetadata 4957 (*ExportFeatureValuesOperationMetadata)(nil), // 33: google.cloud.aiplatform.v1.ExportFeatureValuesOperationMetadata 4958 (*BatchReadFeatureValuesOperationMetadata)(nil), // 34: google.cloud.aiplatform.v1.BatchReadFeatureValuesOperationMetadata 4959 (*DeleteFeatureValuesOperationMetadata)(nil), // 35: google.cloud.aiplatform.v1.DeleteFeatureValuesOperationMetadata 4960 (*CreateEntityTypeOperationMetadata)(nil), // 36: google.cloud.aiplatform.v1.CreateEntityTypeOperationMetadata 4961 (*CreateFeatureOperationMetadata)(nil), // 37: google.cloud.aiplatform.v1.CreateFeatureOperationMetadata 4962 (*BatchCreateFeaturesOperationMetadata)(nil), // 38: google.cloud.aiplatform.v1.BatchCreateFeaturesOperationMetadata 4963 (*DeleteFeatureValuesRequest)(nil), // 39: google.cloud.aiplatform.v1.DeleteFeatureValuesRequest 4964 (*DeleteFeatureValuesResponse)(nil), // 40: google.cloud.aiplatform.v1.DeleteFeatureValuesResponse 4965 (*EntityIdSelector)(nil), // 41: google.cloud.aiplatform.v1.EntityIdSelector 4966 (*ImportFeatureValuesRequest_FeatureSpec)(nil), // 42: google.cloud.aiplatform.v1.ImportFeatureValuesRequest.FeatureSpec 4967 (*BatchReadFeatureValuesRequest_PassThroughField)(nil), // 43: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.PassThroughField 4968 (*BatchReadFeatureValuesRequest_EntityTypeSpec)(nil), // 44: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.EntityTypeSpec 4969 (*ExportFeatureValuesRequest_SnapshotExport)(nil), // 45: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.SnapshotExport 4970 (*ExportFeatureValuesRequest_FullExport)(nil), // 46: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.FullExport 4971 (*DeleteFeatureValuesRequest_SelectEntity)(nil), // 47: google.cloud.aiplatform.v1.DeleteFeatureValuesRequest.SelectEntity 4972 (*DeleteFeatureValuesRequest_SelectTimeRangeAndFeature)(nil), // 48: google.cloud.aiplatform.v1.DeleteFeatureValuesRequest.SelectTimeRangeAndFeature 4973 (*DeleteFeatureValuesResponse_SelectEntity)(nil), // 49: google.cloud.aiplatform.v1.DeleteFeatureValuesResponse.SelectEntity 4974 (*DeleteFeatureValuesResponse_SelectTimeRangeAndFeature)(nil), // 50: google.cloud.aiplatform.v1.DeleteFeatureValuesResponse.SelectTimeRangeAndFeature 4975 (*Featurestore)(nil), // 51: google.cloud.aiplatform.v1.Featurestore 4976 (*fieldmaskpb.FieldMask)(nil), // 52: google.protobuf.FieldMask 4977 (*AvroSource)(nil), // 53: google.cloud.aiplatform.v1.AvroSource 4978 (*BigQuerySource)(nil), // 54: google.cloud.aiplatform.v1.BigQuerySource 4979 (*CsvSource)(nil), // 55: google.cloud.aiplatform.v1.CsvSource 4980 (*timestamppb.Timestamp)(nil), // 56: google.protobuf.Timestamp 4981 (*FeatureSelector)(nil), // 57: google.cloud.aiplatform.v1.FeatureSelector 4982 (*BigQueryDestination)(nil), // 58: google.cloud.aiplatform.v1.BigQueryDestination 4983 (*TFRecordDestination)(nil), // 59: google.cloud.aiplatform.v1.TFRecordDestination 4984 (*CsvDestination)(nil), // 60: google.cloud.aiplatform.v1.CsvDestination 4985 (*EntityType)(nil), // 61: google.cloud.aiplatform.v1.EntityType 4986 (*Feature)(nil), // 62: google.cloud.aiplatform.v1.Feature 4987 (*GenericOperationMetadata)(nil), // 63: google.cloud.aiplatform.v1.GenericOperationMetadata 4988 (*interval.Interval)(nil), // 64: google.type.Interval 4989 (*longrunningpb.Operation)(nil), // 65: google.longrunning.Operation 4990 } 4991 var file_google_cloud_aiplatform_v1_featurestore_service_proto_depIdxs = []int32{ 4992 51, // 0: google.cloud.aiplatform.v1.CreateFeaturestoreRequest.featurestore:type_name -> google.cloud.aiplatform.v1.Featurestore 4993 52, // 1: google.cloud.aiplatform.v1.ListFeaturestoresRequest.read_mask:type_name -> google.protobuf.FieldMask 4994 51, // 2: google.cloud.aiplatform.v1.ListFeaturestoresResponse.featurestores:type_name -> google.cloud.aiplatform.v1.Featurestore 4995 51, // 3: google.cloud.aiplatform.v1.UpdateFeaturestoreRequest.featurestore:type_name -> google.cloud.aiplatform.v1.Featurestore 4996 52, // 4: google.cloud.aiplatform.v1.UpdateFeaturestoreRequest.update_mask:type_name -> google.protobuf.FieldMask 4997 53, // 5: google.cloud.aiplatform.v1.ImportFeatureValuesRequest.avro_source:type_name -> google.cloud.aiplatform.v1.AvroSource 4998 54, // 6: google.cloud.aiplatform.v1.ImportFeatureValuesRequest.bigquery_source:type_name -> google.cloud.aiplatform.v1.BigQuerySource 4999 55, // 7: google.cloud.aiplatform.v1.ImportFeatureValuesRequest.csv_source:type_name -> google.cloud.aiplatform.v1.CsvSource 5000 56, // 8: google.cloud.aiplatform.v1.ImportFeatureValuesRequest.feature_time:type_name -> google.protobuf.Timestamp 5001 42, // 9: google.cloud.aiplatform.v1.ImportFeatureValuesRequest.feature_specs:type_name -> google.cloud.aiplatform.v1.ImportFeatureValuesRequest.FeatureSpec 5002 55, // 10: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.csv_read_instances:type_name -> google.cloud.aiplatform.v1.CsvSource 5003 54, // 11: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.bigquery_read_instances:type_name -> google.cloud.aiplatform.v1.BigQuerySource 5004 11, // 12: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.destination:type_name -> google.cloud.aiplatform.v1.FeatureValueDestination 5005 43, // 13: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.pass_through_fields:type_name -> google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.PassThroughField 5006 44, // 14: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.entity_type_specs:type_name -> google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.EntityTypeSpec 5007 56, // 15: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.start_time:type_name -> google.protobuf.Timestamp 5008 45, // 16: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.snapshot_export:type_name -> google.cloud.aiplatform.v1.ExportFeatureValuesRequest.SnapshotExport 5009 46, // 17: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.full_export:type_name -> google.cloud.aiplatform.v1.ExportFeatureValuesRequest.FullExport 5010 11, // 18: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.destination:type_name -> google.cloud.aiplatform.v1.FeatureValueDestination 5011 57, // 19: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.feature_selector:type_name -> google.cloud.aiplatform.v1.FeatureSelector 5012 10, // 20: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.settings:type_name -> google.cloud.aiplatform.v1.DestinationFeatureSetting 5013 58, // 21: google.cloud.aiplatform.v1.FeatureValueDestination.bigquery_destination:type_name -> google.cloud.aiplatform.v1.BigQueryDestination 5014 59, // 22: google.cloud.aiplatform.v1.FeatureValueDestination.tfrecord_destination:type_name -> google.cloud.aiplatform.v1.TFRecordDestination 5015 60, // 23: google.cloud.aiplatform.v1.FeatureValueDestination.csv_destination:type_name -> google.cloud.aiplatform.v1.CsvDestination 5016 61, // 24: google.cloud.aiplatform.v1.CreateEntityTypeRequest.entity_type:type_name -> google.cloud.aiplatform.v1.EntityType 5017 52, // 25: google.cloud.aiplatform.v1.ListEntityTypesRequest.read_mask:type_name -> google.protobuf.FieldMask 5018 61, // 26: google.cloud.aiplatform.v1.ListEntityTypesResponse.entity_types:type_name -> google.cloud.aiplatform.v1.EntityType 5019 61, // 27: google.cloud.aiplatform.v1.UpdateEntityTypeRequest.entity_type:type_name -> google.cloud.aiplatform.v1.EntityType 5020 52, // 28: google.cloud.aiplatform.v1.UpdateEntityTypeRequest.update_mask:type_name -> google.protobuf.FieldMask 5021 62, // 29: google.cloud.aiplatform.v1.CreateFeatureRequest.feature:type_name -> google.cloud.aiplatform.v1.Feature 5022 20, // 30: google.cloud.aiplatform.v1.BatchCreateFeaturesRequest.requests:type_name -> google.cloud.aiplatform.v1.CreateFeatureRequest 5023 62, // 31: google.cloud.aiplatform.v1.BatchCreateFeaturesResponse.features:type_name -> google.cloud.aiplatform.v1.Feature 5024 52, // 32: google.cloud.aiplatform.v1.ListFeaturesRequest.read_mask:type_name -> google.protobuf.FieldMask 5025 62, // 33: google.cloud.aiplatform.v1.ListFeaturesResponse.features:type_name -> google.cloud.aiplatform.v1.Feature 5026 62, // 34: google.cloud.aiplatform.v1.SearchFeaturesResponse.features:type_name -> google.cloud.aiplatform.v1.Feature 5027 62, // 35: google.cloud.aiplatform.v1.UpdateFeatureRequest.feature:type_name -> google.cloud.aiplatform.v1.Feature 5028 52, // 36: google.cloud.aiplatform.v1.UpdateFeatureRequest.update_mask:type_name -> google.protobuf.FieldMask 5029 63, // 37: google.cloud.aiplatform.v1.CreateFeaturestoreOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata 5030 63, // 38: google.cloud.aiplatform.v1.UpdateFeaturestoreOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata 5031 63, // 39: google.cloud.aiplatform.v1.ImportFeatureValuesOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata 5032 63, // 40: google.cloud.aiplatform.v1.ExportFeatureValuesOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata 5033 63, // 41: google.cloud.aiplatform.v1.BatchReadFeatureValuesOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata 5034 63, // 42: google.cloud.aiplatform.v1.DeleteFeatureValuesOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata 5035 63, // 43: google.cloud.aiplatform.v1.CreateEntityTypeOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata 5036 63, // 44: google.cloud.aiplatform.v1.CreateFeatureOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata 5037 63, // 45: google.cloud.aiplatform.v1.BatchCreateFeaturesOperationMetadata.generic_metadata:type_name -> google.cloud.aiplatform.v1.GenericOperationMetadata 5038 47, // 46: google.cloud.aiplatform.v1.DeleteFeatureValuesRequest.select_entity:type_name -> google.cloud.aiplatform.v1.DeleteFeatureValuesRequest.SelectEntity 5039 48, // 47: google.cloud.aiplatform.v1.DeleteFeatureValuesRequest.select_time_range_and_feature:type_name -> google.cloud.aiplatform.v1.DeleteFeatureValuesRequest.SelectTimeRangeAndFeature 5040 49, // 48: google.cloud.aiplatform.v1.DeleteFeatureValuesResponse.select_entity:type_name -> google.cloud.aiplatform.v1.DeleteFeatureValuesResponse.SelectEntity 5041 50, // 49: google.cloud.aiplatform.v1.DeleteFeatureValuesResponse.select_time_range_and_feature:type_name -> google.cloud.aiplatform.v1.DeleteFeatureValuesResponse.SelectTimeRangeAndFeature 5042 55, // 50: google.cloud.aiplatform.v1.EntityIdSelector.csv_source:type_name -> google.cloud.aiplatform.v1.CsvSource 5043 57, // 51: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.EntityTypeSpec.feature_selector:type_name -> google.cloud.aiplatform.v1.FeatureSelector 5044 10, // 52: google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest.EntityTypeSpec.settings:type_name -> google.cloud.aiplatform.v1.DestinationFeatureSetting 5045 56, // 53: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.SnapshotExport.snapshot_time:type_name -> google.protobuf.Timestamp 5046 56, // 54: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.SnapshotExport.start_time:type_name -> google.protobuf.Timestamp 5047 56, // 55: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.FullExport.start_time:type_name -> google.protobuf.Timestamp 5048 56, // 56: google.cloud.aiplatform.v1.ExportFeatureValuesRequest.FullExport.end_time:type_name -> google.protobuf.Timestamp 5049 41, // 57: google.cloud.aiplatform.v1.DeleteFeatureValuesRequest.SelectEntity.entity_id_selector:type_name -> google.cloud.aiplatform.v1.EntityIdSelector 5050 64, // 58: google.cloud.aiplatform.v1.DeleteFeatureValuesRequest.SelectTimeRangeAndFeature.time_range:type_name -> google.type.Interval 5051 57, // 59: google.cloud.aiplatform.v1.DeleteFeatureValuesRequest.SelectTimeRangeAndFeature.feature_selector:type_name -> google.cloud.aiplatform.v1.FeatureSelector 5052 0, // 60: google.cloud.aiplatform.v1.FeaturestoreService.CreateFeaturestore:input_type -> google.cloud.aiplatform.v1.CreateFeaturestoreRequest 5053 1, // 61: google.cloud.aiplatform.v1.FeaturestoreService.GetFeaturestore:input_type -> google.cloud.aiplatform.v1.GetFeaturestoreRequest 5054 2, // 62: google.cloud.aiplatform.v1.FeaturestoreService.ListFeaturestores:input_type -> google.cloud.aiplatform.v1.ListFeaturestoresRequest 5055 4, // 63: google.cloud.aiplatform.v1.FeaturestoreService.UpdateFeaturestore:input_type -> google.cloud.aiplatform.v1.UpdateFeaturestoreRequest 5056 5, // 64: google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeaturestore:input_type -> google.cloud.aiplatform.v1.DeleteFeaturestoreRequest 5057 14, // 65: google.cloud.aiplatform.v1.FeaturestoreService.CreateEntityType:input_type -> google.cloud.aiplatform.v1.CreateEntityTypeRequest 5058 15, // 66: google.cloud.aiplatform.v1.FeaturestoreService.GetEntityType:input_type -> google.cloud.aiplatform.v1.GetEntityTypeRequest 5059 16, // 67: google.cloud.aiplatform.v1.FeaturestoreService.ListEntityTypes:input_type -> google.cloud.aiplatform.v1.ListEntityTypesRequest 5060 18, // 68: google.cloud.aiplatform.v1.FeaturestoreService.UpdateEntityType:input_type -> google.cloud.aiplatform.v1.UpdateEntityTypeRequest 5061 19, // 69: google.cloud.aiplatform.v1.FeaturestoreService.DeleteEntityType:input_type -> google.cloud.aiplatform.v1.DeleteEntityTypeRequest 5062 20, // 70: google.cloud.aiplatform.v1.FeaturestoreService.CreateFeature:input_type -> google.cloud.aiplatform.v1.CreateFeatureRequest 5063 21, // 71: google.cloud.aiplatform.v1.FeaturestoreService.BatchCreateFeatures:input_type -> google.cloud.aiplatform.v1.BatchCreateFeaturesRequest 5064 23, // 72: google.cloud.aiplatform.v1.FeaturestoreService.GetFeature:input_type -> google.cloud.aiplatform.v1.GetFeatureRequest 5065 24, // 73: google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures:input_type -> google.cloud.aiplatform.v1.ListFeaturesRequest 5066 28, // 74: google.cloud.aiplatform.v1.FeaturestoreService.UpdateFeature:input_type -> google.cloud.aiplatform.v1.UpdateFeatureRequest 5067 29, // 75: google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeature:input_type -> google.cloud.aiplatform.v1.DeleteFeatureRequest 5068 6, // 76: google.cloud.aiplatform.v1.FeaturestoreService.ImportFeatureValues:input_type -> google.cloud.aiplatform.v1.ImportFeatureValuesRequest 5069 8, // 77: google.cloud.aiplatform.v1.FeaturestoreService.BatchReadFeatureValues:input_type -> google.cloud.aiplatform.v1.BatchReadFeatureValuesRequest 5070 9, // 78: google.cloud.aiplatform.v1.FeaturestoreService.ExportFeatureValues:input_type -> google.cloud.aiplatform.v1.ExportFeatureValuesRequest 5071 39, // 79: google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeatureValues:input_type -> google.cloud.aiplatform.v1.DeleteFeatureValuesRequest 5072 26, // 80: google.cloud.aiplatform.v1.FeaturestoreService.SearchFeatures:input_type -> google.cloud.aiplatform.v1.SearchFeaturesRequest 5073 65, // 81: google.cloud.aiplatform.v1.FeaturestoreService.CreateFeaturestore:output_type -> google.longrunning.Operation 5074 51, // 82: google.cloud.aiplatform.v1.FeaturestoreService.GetFeaturestore:output_type -> google.cloud.aiplatform.v1.Featurestore 5075 3, // 83: google.cloud.aiplatform.v1.FeaturestoreService.ListFeaturestores:output_type -> google.cloud.aiplatform.v1.ListFeaturestoresResponse 5076 65, // 84: google.cloud.aiplatform.v1.FeaturestoreService.UpdateFeaturestore:output_type -> google.longrunning.Operation 5077 65, // 85: google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeaturestore:output_type -> google.longrunning.Operation 5078 65, // 86: google.cloud.aiplatform.v1.FeaturestoreService.CreateEntityType:output_type -> google.longrunning.Operation 5079 61, // 87: google.cloud.aiplatform.v1.FeaturestoreService.GetEntityType:output_type -> google.cloud.aiplatform.v1.EntityType 5080 17, // 88: google.cloud.aiplatform.v1.FeaturestoreService.ListEntityTypes:output_type -> google.cloud.aiplatform.v1.ListEntityTypesResponse 5081 61, // 89: google.cloud.aiplatform.v1.FeaturestoreService.UpdateEntityType:output_type -> google.cloud.aiplatform.v1.EntityType 5082 65, // 90: google.cloud.aiplatform.v1.FeaturestoreService.DeleteEntityType:output_type -> google.longrunning.Operation 5083 65, // 91: google.cloud.aiplatform.v1.FeaturestoreService.CreateFeature:output_type -> google.longrunning.Operation 5084 65, // 92: google.cloud.aiplatform.v1.FeaturestoreService.BatchCreateFeatures:output_type -> google.longrunning.Operation 5085 62, // 93: google.cloud.aiplatform.v1.FeaturestoreService.GetFeature:output_type -> google.cloud.aiplatform.v1.Feature 5086 25, // 94: google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures:output_type -> google.cloud.aiplatform.v1.ListFeaturesResponse 5087 62, // 95: google.cloud.aiplatform.v1.FeaturestoreService.UpdateFeature:output_type -> google.cloud.aiplatform.v1.Feature 5088 65, // 96: google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeature:output_type -> google.longrunning.Operation 5089 65, // 97: google.cloud.aiplatform.v1.FeaturestoreService.ImportFeatureValues:output_type -> google.longrunning.Operation 5090 65, // 98: google.cloud.aiplatform.v1.FeaturestoreService.BatchReadFeatureValues:output_type -> google.longrunning.Operation 5091 65, // 99: google.cloud.aiplatform.v1.FeaturestoreService.ExportFeatureValues:output_type -> google.longrunning.Operation 5092 65, // 100: google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeatureValues:output_type -> google.longrunning.Operation 5093 27, // 101: google.cloud.aiplatform.v1.FeaturestoreService.SearchFeatures:output_type -> google.cloud.aiplatform.v1.SearchFeaturesResponse 5094 81, // [81:102] is the sub-list for method output_type 5095 60, // [60:81] is the sub-list for method input_type 5096 60, // [60:60] is the sub-list for extension type_name 5097 60, // [60:60] is the sub-list for extension extendee 5098 0, // [0:60] is the sub-list for field type_name 5099 } 5100 5101 func init() { file_google_cloud_aiplatform_v1_featurestore_service_proto_init() } 5102 func file_google_cloud_aiplatform_v1_featurestore_service_proto_init() { 5103 if File_google_cloud_aiplatform_v1_featurestore_service_proto != nil { 5104 return 5105 } 5106 file_google_cloud_aiplatform_v1_entity_type_proto_init() 5107 file_google_cloud_aiplatform_v1_feature_proto_init() 5108 file_google_cloud_aiplatform_v1_feature_selector_proto_init() 5109 file_google_cloud_aiplatform_v1_featurestore_proto_init() 5110 file_google_cloud_aiplatform_v1_io_proto_init() 5111 file_google_cloud_aiplatform_v1_operation_proto_init() 5112 file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[6].OneofWrappers = []any{ 5113 (*ImportFeatureValuesRequest_AvroSource)(nil), 5114 (*ImportFeatureValuesRequest_BigquerySource)(nil), 5115 (*ImportFeatureValuesRequest_CsvSource)(nil), 5116 (*ImportFeatureValuesRequest_FeatureTimeField)(nil), 5117 (*ImportFeatureValuesRequest_FeatureTime)(nil), 5118 } 5119 file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[8].OneofWrappers = []any{ 5120 (*BatchReadFeatureValuesRequest_CsvReadInstances)(nil), 5121 (*BatchReadFeatureValuesRequest_BigqueryReadInstances)(nil), 5122 } 5123 file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[9].OneofWrappers = []any{ 5124 (*ExportFeatureValuesRequest_SnapshotExport_)(nil), 5125 (*ExportFeatureValuesRequest_FullExport_)(nil), 5126 } 5127 file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[11].OneofWrappers = []any{ 5128 (*FeatureValueDestination_BigqueryDestination)(nil), 5129 (*FeatureValueDestination_TfrecordDestination)(nil), 5130 (*FeatureValueDestination_CsvDestination)(nil), 5131 } 5132 file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[39].OneofWrappers = []any{ 5133 (*DeleteFeatureValuesRequest_SelectEntity_)(nil), 5134 (*DeleteFeatureValuesRequest_SelectTimeRangeAndFeature_)(nil), 5135 } 5136 file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[40].OneofWrappers = []any{ 5137 (*DeleteFeatureValuesResponse_SelectEntity_)(nil), 5138 (*DeleteFeatureValuesResponse_SelectTimeRangeAndFeature_)(nil), 5139 } 5140 file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes[41].OneofWrappers = []any{ 5141 (*EntityIdSelector_CsvSource)(nil), 5142 } 5143 type x struct{} 5144 out := protoimpl.TypeBuilder{ 5145 File: protoimpl.DescBuilder{ 5146 GoPackagePath: reflect.TypeOf(x{}).PkgPath(), 5147 RawDescriptor: file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDesc, 5148 NumEnums: 0, 5149 NumMessages: 51, 5150 NumExtensions: 0, 5151 NumServices: 1, 5152 }, 5153 GoTypes: file_google_cloud_aiplatform_v1_featurestore_service_proto_goTypes, 5154 DependencyIndexes: file_google_cloud_aiplatform_v1_featurestore_service_proto_depIdxs, 5155 MessageInfos: file_google_cloud_aiplatform_v1_featurestore_service_proto_msgTypes, 5156 }.Build() 5157 File_google_cloud_aiplatform_v1_featurestore_service_proto = out.File 5158 file_google_cloud_aiplatform_v1_featurestore_service_proto_rawDesc = nil 5159 file_google_cloud_aiplatform_v1_featurestore_service_proto_goTypes = nil 5160 file_google_cloud_aiplatform_v1_featurestore_service_proto_depIdxs = nil 5161 }