| // Copyright 2019 Google LLC. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| |
| // Code generated by protoc-gen-go. DO NOT EDIT. |
| // versions: |
| // protoc-gen-go v1.22.0 |
| // protoc v3.12.2 |
| // source: google/cloud/vision/v1p3beta1/product_search_service.proto |
| |
| package vision |
| |
| import ( |
| context "context" |
| reflect "reflect" |
| sync "sync" |
| |
| proto "github.com/golang/protobuf/proto" |
| empty "github.com/golang/protobuf/ptypes/empty" |
| timestamp "github.com/golang/protobuf/ptypes/timestamp" |
| _ "google.golang.org/genproto/googleapis/api/annotations" |
| longrunning "google.golang.org/genproto/googleapis/longrunning" |
| status "google.golang.org/genproto/googleapis/rpc/status" |
| field_mask "google.golang.org/genproto/protobuf/field_mask" |
| grpc "google.golang.org/grpc" |
| codes "google.golang.org/grpc/codes" |
| status1 "google.golang.org/grpc/status" |
| protoreflect "google.golang.org/protobuf/reflect/protoreflect" |
| protoimpl "google.golang.org/protobuf/runtime/protoimpl" |
| ) |
| |
| const ( |
| // Verify that this generated code is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) |
| // Verify that runtime/protoimpl is sufficiently up-to-date. |
| _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) |
| ) |
| |
| // This is a compile-time assertion that a sufficiently up-to-date version |
| // of the legacy proto package is being used. |
| const _ = proto.ProtoPackageIsVersion4 |
| |
| // Enumerates the possible states that the batch request can be in. |
| type BatchOperationMetadata_State int32 |
| |
| const ( |
| // Invalid. |
| BatchOperationMetadata_STATE_UNSPECIFIED BatchOperationMetadata_State = 0 |
| // Request is actively being processed. |
| BatchOperationMetadata_PROCESSING BatchOperationMetadata_State = 1 |
| // The request is done and at least one item has been successfully |
| // processed. |
| BatchOperationMetadata_SUCCESSFUL BatchOperationMetadata_State = 2 |
| // The request is done and no item has been successfully processed. |
| BatchOperationMetadata_FAILED BatchOperationMetadata_State = 3 |
| // The request is done after the longrunning.Operations.CancelOperation has |
| // been called by the user. Any records that were processed before the |
| // cancel command are output as specified in the request. |
| BatchOperationMetadata_CANCELLED BatchOperationMetadata_State = 4 |
| ) |
| |
| // Enum value maps for BatchOperationMetadata_State. |
| var ( |
| BatchOperationMetadata_State_name = map[int32]string{ |
| 0: "STATE_UNSPECIFIED", |
| 1: "PROCESSING", |
| 2: "SUCCESSFUL", |
| 3: "FAILED", |
| 4: "CANCELLED", |
| } |
| BatchOperationMetadata_State_value = map[string]int32{ |
| "STATE_UNSPECIFIED": 0, |
| "PROCESSING": 1, |
| "SUCCESSFUL": 2, |
| "FAILED": 3, |
| "CANCELLED": 4, |
| } |
| ) |
| |
| func (x BatchOperationMetadata_State) Enum() *BatchOperationMetadata_State { |
| p := new(BatchOperationMetadata_State) |
| *p = x |
| return p |
| } |
| |
| func (x BatchOperationMetadata_State) String() string { |
| return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) |
| } |
| |
| func (BatchOperationMetadata_State) Descriptor() protoreflect.EnumDescriptor { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes[0].Descriptor() |
| } |
| |
| func (BatchOperationMetadata_State) Type() protoreflect.EnumType { |
| return &file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes[0] |
| } |
| |
| func (x BatchOperationMetadata_State) Number() protoreflect.EnumNumber { |
| return protoreflect.EnumNumber(x) |
| } |
| |
| // Deprecated: Use BatchOperationMetadata_State.Descriptor instead. |
| func (BatchOperationMetadata_State) EnumDescriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{28, 0} |
| } |
| |
| // A Product contains ReferenceImages. |
| type Product struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The resource name of the product. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. |
| // |
| // This field is ignored when creating a product. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // The user-provided name for this Product. Must not be empty. Must be at most |
| // 4096 characters long. |
| DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` |
| // User-provided metadata to be stored with this product. Must be at most 4096 |
| // characters long. |
| Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` |
| // Immutable. The category for the product identified by the reference image. This should |
| // be either "homegoods-v2", "apparel-v2", or "toys-v2". The legacy categories |
| // "homegoods", "apparel", and "toys" are still supported, but these should |
| // not be used for new products. |
| ProductCategory string `protobuf:"bytes,4,opt,name=product_category,json=productCategory,proto3" json:"product_category,omitempty"` |
| // Key-value pairs that can be attached to a product. At query time, |
| // constraints can be specified based on the product_labels. |
| // |
| // Note that integer values can be provided as strings, e.g. "1199". Only |
| // strings with integer values can match a range-based restriction which is |
| // to be supported soon. |
| // |
| // Multiple values can be assigned to the same key. One product may have up to |
| // 100 product_labels. |
| ProductLabels []*Product_KeyValue `protobuf:"bytes,5,rep,name=product_labels,json=productLabels,proto3" json:"product_labels,omitempty"` |
| } |
| |
| func (x *Product) Reset() { |
| *x = Product{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[0] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Product) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Product) ProtoMessage() {} |
| |
| func (x *Product) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[0] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Product.ProtoReflect.Descriptor instead. |
| func (*Product) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{0} |
| } |
| |
| func (x *Product) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *Product) GetDisplayName() string { |
| if x != nil { |
| return x.DisplayName |
| } |
| return "" |
| } |
| |
| func (x *Product) GetDescription() string { |
| if x != nil { |
| return x.Description |
| } |
| return "" |
| } |
| |
| func (x *Product) GetProductCategory() string { |
| if x != nil { |
| return x.ProductCategory |
| } |
| return "" |
| } |
| |
| func (x *Product) GetProductLabels() []*Product_KeyValue { |
| if x != nil { |
| return x.ProductLabels |
| } |
| return nil |
| } |
| |
| // A ProductSet contains Products. A ProductSet can contain a maximum of 1 |
| // million reference images. If the limit is exceeded, periodic indexing will |
| // fail. |
| type ProductSet struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The resource name of the ProductSet. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`. |
| // |
| // This field is ignored when creating a ProductSet. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // The user-provided name for this ProductSet. Must not be empty. Must be at |
| // most 4096 characters long. |
| DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` |
| // Output only. The time at which this ProductSet was last indexed. Query |
| // results will reflect all updates before this time. If this ProductSet has |
| // never been indexed, this field is 0. |
| // |
| // This field is ignored when creating a ProductSet. |
| IndexTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=index_time,json=indexTime,proto3" json:"index_time,omitempty"` |
| // Output only. If there was an error with indexing the product set, the field |
| // is populated. |
| // |
| // This field is ignored when creating a ProductSet. |
| IndexError *status.Status `protobuf:"bytes,4,opt,name=index_error,json=indexError,proto3" json:"index_error,omitempty"` |
| } |
| |
| func (x *ProductSet) Reset() { |
| *x = ProductSet{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[1] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ProductSet) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ProductSet) ProtoMessage() {} |
| |
| func (x *ProductSet) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[1] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ProductSet.ProtoReflect.Descriptor instead. |
| func (*ProductSet) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{1} |
| } |
| |
| func (x *ProductSet) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *ProductSet) GetDisplayName() string { |
| if x != nil { |
| return x.DisplayName |
| } |
| return "" |
| } |
| |
| func (x *ProductSet) GetIndexTime() *timestamp.Timestamp { |
| if x != nil { |
| return x.IndexTime |
| } |
| return nil |
| } |
| |
| func (x *ProductSet) GetIndexError() *status.Status { |
| if x != nil { |
| return x.IndexError |
| } |
| return nil |
| } |
| |
| // A `ReferenceImage` represents a product image and its associated metadata, |
| // such as bounding boxes. |
| type ReferenceImage struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The resource name of the reference image. |
| // |
| // Format is: |
| // |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. |
| // |
| // This field is ignored when creating a reference image. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // Required. The Google Cloud Storage URI of the reference image. |
| // |
| // The URI must start with `gs://`. |
| Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` |
| // Optional. Bounding polygons around the areas of interest in the reference image. |
| // If this field is empty, the system will try to detect regions of |
| // interest. At most 10 bounding polygons will be used. |
| // |
| // The provided shape is converted into a non-rotated rectangle. Once |
| // converted, the small edge of the rectangle must be greater than or equal |
| // to 300 pixels. The aspect ratio must be 1:4 or less (i.e. 1:3 is ok; 1:5 |
| // is not). |
| BoundingPolys []*BoundingPoly `protobuf:"bytes,3,rep,name=bounding_polys,json=boundingPolys,proto3" json:"bounding_polys,omitempty"` |
| } |
| |
| func (x *ReferenceImage) Reset() { |
| *x = ReferenceImage{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[2] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ReferenceImage) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ReferenceImage) ProtoMessage() {} |
| |
| func (x *ReferenceImage) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[2] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ReferenceImage.ProtoReflect.Descriptor instead. |
| func (*ReferenceImage) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{2} |
| } |
| |
| func (x *ReferenceImage) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *ReferenceImage) GetUri() string { |
| if x != nil { |
| return x.Uri |
| } |
| return "" |
| } |
| |
| func (x *ReferenceImage) GetBoundingPolys() []*BoundingPoly { |
| if x != nil { |
| return x.BoundingPolys |
| } |
| return nil |
| } |
| |
| // Request message for the `CreateProduct` method. |
| type CreateProductRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The project in which the Product should be created. |
| // |
| // Format is |
| // `projects/PROJECT_ID/locations/LOC_ID`. |
| Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` |
| // Required. The product to create. |
| Product *Product `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` |
| // A user-supplied resource id for this Product. If set, the server will |
| // attempt to use this value as the resource id. If it is already in use, an |
| // error is returned with code ALREADY_EXISTS. Must be at most 128 characters |
| // long. It cannot contain the character `/`. |
| ProductId string `protobuf:"bytes,3,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` |
| } |
| |
| func (x *CreateProductRequest) Reset() { |
| *x = CreateProductRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[3] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *CreateProductRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*CreateProductRequest) ProtoMessage() {} |
| |
| func (x *CreateProductRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[3] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use CreateProductRequest.ProtoReflect.Descriptor instead. |
| func (*CreateProductRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{3} |
| } |
| |
| func (x *CreateProductRequest) GetParent() string { |
| if x != nil { |
| return x.Parent |
| } |
| return "" |
| } |
| |
| func (x *CreateProductRequest) GetProduct() *Product { |
| if x != nil { |
| return x.Product |
| } |
| return nil |
| } |
| |
| func (x *CreateProductRequest) GetProductId() string { |
| if x != nil { |
| return x.ProductId |
| } |
| return "" |
| } |
| |
| // Request message for the `ListProducts` method. |
| type ListProductsRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The project OR ProductSet from which Products should be listed. |
| // |
| // Format: |
| // `projects/PROJECT_ID/locations/LOC_ID` |
| Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` |
| // The maximum number of items to return. Default 10, maximum 100. |
| PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` |
| // The next_page_token returned from a previous List request, if any. |
| PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` |
| } |
| |
| func (x *ListProductsRequest) Reset() { |
| *x = ListProductsRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[4] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListProductsRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListProductsRequest) ProtoMessage() {} |
| |
| func (x *ListProductsRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[4] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListProductsRequest.ProtoReflect.Descriptor instead. |
| func (*ListProductsRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{4} |
| } |
| |
| func (x *ListProductsRequest) GetParent() string { |
| if x != nil { |
| return x.Parent |
| } |
| return "" |
| } |
| |
| func (x *ListProductsRequest) GetPageSize() int32 { |
| if x != nil { |
| return x.PageSize |
| } |
| return 0 |
| } |
| |
| func (x *ListProductsRequest) GetPageToken() string { |
| if x != nil { |
| return x.PageToken |
| } |
| return "" |
| } |
| |
| // Response message for the `ListProducts` method. |
| type ListProductsResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // List of products. |
| Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"` |
| // Token to retrieve the next page of results, or empty if there are no more |
| // results in the list. |
| NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` |
| } |
| |
| func (x *ListProductsResponse) Reset() { |
| *x = ListProductsResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[5] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListProductsResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListProductsResponse) ProtoMessage() {} |
| |
| func (x *ListProductsResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[5] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListProductsResponse.ProtoReflect.Descriptor instead. |
| func (*ListProductsResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{5} |
| } |
| |
| func (x *ListProductsResponse) GetProducts() []*Product { |
| if x != nil { |
| return x.Products |
| } |
| return nil |
| } |
| |
| func (x *ListProductsResponse) GetNextPageToken() string { |
| if x != nil { |
| return x.NextPageToken |
| } |
| return "" |
| } |
| |
| // Request message for the `GetProduct` method. |
| type GetProductRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Resource name of the Product to get. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| } |
| |
| func (x *GetProductRequest) Reset() { |
| *x = GetProductRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[6] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *GetProductRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*GetProductRequest) ProtoMessage() {} |
| |
| func (x *GetProductRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[6] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use GetProductRequest.ProtoReflect.Descriptor instead. |
| func (*GetProductRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{6} |
| } |
| |
| func (x *GetProductRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| // Request message for the `UpdateProduct` method. |
| type UpdateProductRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The Product resource which replaces the one on the server. |
| // product.name is immutable. |
| Product *Product `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"` |
| // The [FieldMask][google.protobuf.FieldMask] that specifies which fields |
| // to update. |
| // If update_mask isn't specified, all mutable fields are to be updated. |
| // Valid mask paths include `product_labels`, `display_name`, and |
| // `description`. |
| UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` |
| } |
| |
| func (x *UpdateProductRequest) Reset() { |
| *x = UpdateProductRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[7] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *UpdateProductRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*UpdateProductRequest) ProtoMessage() {} |
| |
| func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[7] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use UpdateProductRequest.ProtoReflect.Descriptor instead. |
| func (*UpdateProductRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{7} |
| } |
| |
| func (x *UpdateProductRequest) GetProduct() *Product { |
| if x != nil { |
| return x.Product |
| } |
| return nil |
| } |
| |
| func (x *UpdateProductRequest) GetUpdateMask() *field_mask.FieldMask { |
| if x != nil { |
| return x.UpdateMask |
| } |
| return nil |
| } |
| |
| // Request message for the `DeleteProduct` method. |
| type DeleteProductRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Resource name of product to delete. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| } |
| |
| func (x *DeleteProductRequest) Reset() { |
| *x = DeleteProductRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[8] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *DeleteProductRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*DeleteProductRequest) ProtoMessage() {} |
| |
| func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[8] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use DeleteProductRequest.ProtoReflect.Descriptor instead. |
| func (*DeleteProductRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{8} |
| } |
| |
| func (x *DeleteProductRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| // Request message for the `CreateProductSet` method. |
| type CreateProductSetRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The project in which the ProductSet should be created. |
| // |
| // Format is `projects/PROJECT_ID/locations/LOC_ID`. |
| Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` |
| // Required. The ProductSet to create. |
| ProductSet *ProductSet `protobuf:"bytes,2,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"` |
| // A user-supplied resource id for this ProductSet. If set, the server will |
| // attempt to use this value as the resource id. If it is already in use, an |
| // error is returned with code ALREADY_EXISTS. Must be at most 128 characters |
| // long. It cannot contain the character `/`. |
| ProductSetId string `protobuf:"bytes,3,opt,name=product_set_id,json=productSetId,proto3" json:"product_set_id,omitempty"` |
| } |
| |
| func (x *CreateProductSetRequest) Reset() { |
| *x = CreateProductSetRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[9] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *CreateProductSetRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*CreateProductSetRequest) ProtoMessage() {} |
| |
| func (x *CreateProductSetRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[9] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use CreateProductSetRequest.ProtoReflect.Descriptor instead. |
| func (*CreateProductSetRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{9} |
| } |
| |
| func (x *CreateProductSetRequest) GetParent() string { |
| if x != nil { |
| return x.Parent |
| } |
| return "" |
| } |
| |
| func (x *CreateProductSetRequest) GetProductSet() *ProductSet { |
| if x != nil { |
| return x.ProductSet |
| } |
| return nil |
| } |
| |
| func (x *CreateProductSetRequest) GetProductSetId() string { |
| if x != nil { |
| return x.ProductSetId |
| } |
| return "" |
| } |
| |
| // Request message for the `ListProductSets` method. |
| type ListProductSetsRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The project from which ProductSets should be listed. |
| // |
| // Format is `projects/PROJECT_ID/locations/LOC_ID`. |
| Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` |
| // The maximum number of items to return. Default 10, maximum 100. |
| PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` |
| // The next_page_token returned from a previous List request, if any. |
| PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` |
| } |
| |
| func (x *ListProductSetsRequest) Reset() { |
| *x = ListProductSetsRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[10] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListProductSetsRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListProductSetsRequest) ProtoMessage() {} |
| |
| func (x *ListProductSetsRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[10] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListProductSetsRequest.ProtoReflect.Descriptor instead. |
| func (*ListProductSetsRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{10} |
| } |
| |
| func (x *ListProductSetsRequest) GetParent() string { |
| if x != nil { |
| return x.Parent |
| } |
| return "" |
| } |
| |
| func (x *ListProductSetsRequest) GetPageSize() int32 { |
| if x != nil { |
| return x.PageSize |
| } |
| return 0 |
| } |
| |
| func (x *ListProductSetsRequest) GetPageToken() string { |
| if x != nil { |
| return x.PageToken |
| } |
| return "" |
| } |
| |
| // Response message for the `ListProductSets` method. |
| type ListProductSetsResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // List of ProductSets. |
| ProductSets []*ProductSet `protobuf:"bytes,1,rep,name=product_sets,json=productSets,proto3" json:"product_sets,omitempty"` |
| // Token to retrieve the next page of results, or empty if there are no more |
| // results in the list. |
| NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` |
| } |
| |
| func (x *ListProductSetsResponse) Reset() { |
| *x = ListProductSetsResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[11] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListProductSetsResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListProductSetsResponse) ProtoMessage() {} |
| |
| func (x *ListProductSetsResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[11] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListProductSetsResponse.ProtoReflect.Descriptor instead. |
| func (*ListProductSetsResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{11} |
| } |
| |
| func (x *ListProductSetsResponse) GetProductSets() []*ProductSet { |
| if x != nil { |
| return x.ProductSets |
| } |
| return nil |
| } |
| |
| func (x *ListProductSetsResponse) GetNextPageToken() string { |
| if x != nil { |
| return x.NextPageToken |
| } |
| return "" |
| } |
| |
| // Request message for the `GetProductSet` method. |
| type GetProductSetRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Resource name of the ProductSet to get. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| } |
| |
| func (x *GetProductSetRequest) Reset() { |
| *x = GetProductSetRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[12] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *GetProductSetRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*GetProductSetRequest) ProtoMessage() {} |
| |
| func (x *GetProductSetRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[12] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use GetProductSetRequest.ProtoReflect.Descriptor instead. |
| func (*GetProductSetRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{12} |
| } |
| |
| func (x *GetProductSetRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| // Request message for the `UpdateProductSet` method. |
| type UpdateProductSetRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The ProductSet resource which replaces the one on the server. |
| ProductSet *ProductSet `protobuf:"bytes,1,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"` |
| // The [FieldMask][google.protobuf.FieldMask] that specifies which fields to |
| // update. |
| // If update_mask isn't specified, all mutable fields are to be updated. |
| // Valid mask path is `display_name`. |
| UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` |
| } |
| |
| func (x *UpdateProductSetRequest) Reset() { |
| *x = UpdateProductSetRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[13] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *UpdateProductSetRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*UpdateProductSetRequest) ProtoMessage() {} |
| |
| func (x *UpdateProductSetRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[13] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use UpdateProductSetRequest.ProtoReflect.Descriptor instead. |
| func (*UpdateProductSetRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{13} |
| } |
| |
| func (x *UpdateProductSetRequest) GetProductSet() *ProductSet { |
| if x != nil { |
| return x.ProductSet |
| } |
| return nil |
| } |
| |
| func (x *UpdateProductSetRequest) GetUpdateMask() *field_mask.FieldMask { |
| if x != nil { |
| return x.UpdateMask |
| } |
| return nil |
| } |
| |
| // Request message for the `DeleteProductSet` method. |
| type DeleteProductSetRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Resource name of the ProductSet to delete. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| } |
| |
| func (x *DeleteProductSetRequest) Reset() { |
| *x = DeleteProductSetRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[14] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *DeleteProductSetRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*DeleteProductSetRequest) ProtoMessage() {} |
| |
| func (x *DeleteProductSetRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[14] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use DeleteProductSetRequest.ProtoReflect.Descriptor instead. |
| func (*DeleteProductSetRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{14} |
| } |
| |
| func (x *DeleteProductSetRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| // Request message for the `CreateReferenceImage` method. |
| type CreateReferenceImageRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Resource name of the product in which to create the reference image. |
| // |
| // Format is |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. |
| Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` |
| // Required. The reference image to create. |
| // If an image ID is specified, it is ignored. |
| ReferenceImage *ReferenceImage `protobuf:"bytes,2,opt,name=reference_image,json=referenceImage,proto3" json:"reference_image,omitempty"` |
| // A user-supplied resource id for the ReferenceImage to be added. If set, |
| // the server will attempt to use this value as the resource id. If it is |
| // already in use, an error is returned with code ALREADY_EXISTS. Must be at |
| // most 128 characters long. It cannot contain the character `/`. |
| ReferenceImageId string `protobuf:"bytes,3,opt,name=reference_image_id,json=referenceImageId,proto3" json:"reference_image_id,omitempty"` |
| } |
| |
| func (x *CreateReferenceImageRequest) Reset() { |
| *x = CreateReferenceImageRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[15] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *CreateReferenceImageRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*CreateReferenceImageRequest) ProtoMessage() {} |
| |
| func (x *CreateReferenceImageRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[15] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use CreateReferenceImageRequest.ProtoReflect.Descriptor instead. |
| func (*CreateReferenceImageRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{15} |
| } |
| |
| func (x *CreateReferenceImageRequest) GetParent() string { |
| if x != nil { |
| return x.Parent |
| } |
| return "" |
| } |
| |
| func (x *CreateReferenceImageRequest) GetReferenceImage() *ReferenceImage { |
| if x != nil { |
| return x.ReferenceImage |
| } |
| return nil |
| } |
| |
| func (x *CreateReferenceImageRequest) GetReferenceImageId() string { |
| if x != nil { |
| return x.ReferenceImageId |
| } |
| return "" |
| } |
| |
| // Request message for the `ListReferenceImages` method. |
| type ListReferenceImagesRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. Resource name of the product containing the reference images. |
| // |
| // Format is |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`. |
| Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` |
| // The maximum number of items to return. Default 10, maximum 100. |
| PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` |
| // A token identifying a page of results to be returned. This is the value |
| // of `nextPageToken` returned in a previous reference image list request. |
| // |
| // Defaults to the first page if not specified. |
| PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` |
| } |
| |
| func (x *ListReferenceImagesRequest) Reset() { |
| *x = ListReferenceImagesRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[16] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListReferenceImagesRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListReferenceImagesRequest) ProtoMessage() {} |
| |
| func (x *ListReferenceImagesRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[16] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListReferenceImagesRequest.ProtoReflect.Descriptor instead. |
| func (*ListReferenceImagesRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{16} |
| } |
| |
| func (x *ListReferenceImagesRequest) GetParent() string { |
| if x != nil { |
| return x.Parent |
| } |
| return "" |
| } |
| |
| func (x *ListReferenceImagesRequest) GetPageSize() int32 { |
| if x != nil { |
| return x.PageSize |
| } |
| return 0 |
| } |
| |
| func (x *ListReferenceImagesRequest) GetPageToken() string { |
| if x != nil { |
| return x.PageToken |
| } |
| return "" |
| } |
| |
| // Response message for the `ListReferenceImages` method. |
| type ListReferenceImagesResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The list of reference images. |
| ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"` |
| // The maximum number of items to return. Default 10, maximum 100. |
| PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` |
| // The next_page_token returned from a previous List request, if any. |
| NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` |
| } |
| |
| func (x *ListReferenceImagesResponse) Reset() { |
| *x = ListReferenceImagesResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[17] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListReferenceImagesResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListReferenceImagesResponse) ProtoMessage() {} |
| |
| func (x *ListReferenceImagesResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[17] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListReferenceImagesResponse.ProtoReflect.Descriptor instead. |
| func (*ListReferenceImagesResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{17} |
| } |
| |
| func (x *ListReferenceImagesResponse) GetReferenceImages() []*ReferenceImage { |
| if x != nil { |
| return x.ReferenceImages |
| } |
| return nil |
| } |
| |
| func (x *ListReferenceImagesResponse) GetPageSize() int32 { |
| if x != nil { |
| return x.PageSize |
| } |
| return 0 |
| } |
| |
| func (x *ListReferenceImagesResponse) GetNextPageToken() string { |
| if x != nil { |
| return x.NextPageToken |
| } |
| return "" |
| } |
| |
| // Request message for the `GetReferenceImage` method. |
| type GetReferenceImageRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The resource name of the ReferenceImage to get. |
| // |
| // Format is: |
| // |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`. |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| } |
| |
| func (x *GetReferenceImageRequest) Reset() { |
| *x = GetReferenceImageRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[18] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *GetReferenceImageRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*GetReferenceImageRequest) ProtoMessage() {} |
| |
| func (x *GetReferenceImageRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[18] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use GetReferenceImageRequest.ProtoReflect.Descriptor instead. |
| func (*GetReferenceImageRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{18} |
| } |
| |
| func (x *GetReferenceImageRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| // Request message for the `DeleteReferenceImage` method. |
| type DeleteReferenceImageRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The resource name of the reference image to delete. |
| // |
| // Format is: |
| // |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID` |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| } |
| |
| func (x *DeleteReferenceImageRequest) Reset() { |
| *x = DeleteReferenceImageRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[19] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *DeleteReferenceImageRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*DeleteReferenceImageRequest) ProtoMessage() {} |
| |
| func (x *DeleteReferenceImageRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[19] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use DeleteReferenceImageRequest.ProtoReflect.Descriptor instead. |
| func (*DeleteReferenceImageRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{19} |
| } |
| |
| func (x *DeleteReferenceImageRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| // Request message for the `AddProductToProductSet` method. |
| type AddProductToProductSetRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The resource name for the ProductSet to modify. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // Required. The resource name for the Product to be added to this ProductSet. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` |
| Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` |
| } |
| |
| func (x *AddProductToProductSetRequest) Reset() { |
| *x = AddProductToProductSetRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[20] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *AddProductToProductSetRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*AddProductToProductSetRequest) ProtoMessage() {} |
| |
| func (x *AddProductToProductSetRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[20] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use AddProductToProductSetRequest.ProtoReflect.Descriptor instead. |
| func (*AddProductToProductSetRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{20} |
| } |
| |
| func (x *AddProductToProductSetRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *AddProductToProductSetRequest) GetProduct() string { |
| if x != nil { |
| return x.Product |
| } |
| return "" |
| } |
| |
| // Request message for the `RemoveProductFromProductSet` method. |
| type RemoveProductFromProductSetRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The resource name for the ProductSet to modify. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // Required. The resource name for the Product to be removed from this ProductSet. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID` |
| Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"` |
| } |
| |
| func (x *RemoveProductFromProductSetRequest) Reset() { |
| *x = RemoveProductFromProductSetRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[21] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *RemoveProductFromProductSetRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*RemoveProductFromProductSetRequest) ProtoMessage() {} |
| |
| func (x *RemoveProductFromProductSetRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[21] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use RemoveProductFromProductSetRequest.ProtoReflect.Descriptor instead. |
| func (*RemoveProductFromProductSetRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{21} |
| } |
| |
| func (x *RemoveProductFromProductSetRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *RemoveProductFromProductSetRequest) GetProduct() string { |
| if x != nil { |
| return x.Product |
| } |
| return "" |
| } |
| |
| // Request message for the `ListProductsInProductSet` method. |
| type ListProductsInProductSetRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The ProductSet resource for which to retrieve Products. |
| // |
| // Format is: |
| // `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID` |
| Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` |
| // The maximum number of items to return. Default 10, maximum 100. |
| PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` |
| // The next_page_token returned from a previous List request, if any. |
| PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` |
| } |
| |
| func (x *ListProductsInProductSetRequest) Reset() { |
| *x = ListProductsInProductSetRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[22] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListProductsInProductSetRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListProductsInProductSetRequest) ProtoMessage() {} |
| |
| func (x *ListProductsInProductSetRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[22] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListProductsInProductSetRequest.ProtoReflect.Descriptor instead. |
| func (*ListProductsInProductSetRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{22} |
| } |
| |
| func (x *ListProductsInProductSetRequest) GetName() string { |
| if x != nil { |
| return x.Name |
| } |
| return "" |
| } |
| |
| func (x *ListProductsInProductSetRequest) GetPageSize() int32 { |
| if x != nil { |
| return x.PageSize |
| } |
| return 0 |
| } |
| |
| func (x *ListProductsInProductSetRequest) GetPageToken() string { |
| if x != nil { |
| return x.PageToken |
| } |
| return "" |
| } |
| |
| // Response message for the `ListProductsInProductSet` method. |
| type ListProductsInProductSetResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The list of Products. |
| Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"` |
| // Token to retrieve the next page of results, or empty if there are no more |
| // results in the list. |
| NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` |
| } |
| |
| func (x *ListProductsInProductSetResponse) Reset() { |
| *x = ListProductsInProductSetResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[23] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ListProductsInProductSetResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ListProductsInProductSetResponse) ProtoMessage() {} |
| |
| func (x *ListProductsInProductSetResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[23] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ListProductsInProductSetResponse.ProtoReflect.Descriptor instead. |
| func (*ListProductsInProductSetResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{23} |
| } |
| |
| func (x *ListProductsInProductSetResponse) GetProducts() []*Product { |
| if x != nil { |
| return x.Products |
| } |
| return nil |
| } |
| |
| func (x *ListProductsInProductSetResponse) GetNextPageToken() string { |
| if x != nil { |
| return x.NextPageToken |
| } |
| return "" |
| } |
| |
| // The Google Cloud Storage location for a csv file which preserves a list of |
| // ImportProductSetRequests in each line. |
| type ImportProductSetsGcsSource struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The Google Cloud Storage URI of the input csv file. |
| // |
| // The URI must start with `gs://`. |
| // |
| // The format of the input csv file should be one image per line. |
| // In each line, there are 6 columns. |
| // 1. image_uri |
| // 2, image_id |
| // 3. product_set_id |
| // 4. product_id |
| // 5, product_category |
| // 6, product_display_name |
| // 7, labels |
| // 8. bounding_poly |
| // |
| // Columns 1, 3, 4, and 5 are required, other columns are optional. A new |
| // ProductSet/Product with the same id will be created on the fly |
| // if the ProductSet/Product specified by product_set_id/product_id does not |
| // exist. |
| // |
| // The image_id field is optional but has to be unique if provided. If it is |
| // empty, we will automatically assign an unique id to the image. |
| // |
| // The product_display_name field is optional. If it is empty, a space (" ") |
| // is used as the place holder for the product display_name, which can |
| // be updated later through the realtime API. |
| // |
| // If the Product with product_id already exists, the fields |
| // product_display_name, product_category and labels are ignored. |
| // |
| // If a Product doesn't exist and needs to be created on the fly, the |
| // product_display_name field refers to |
| // [Product.display_name][google.cloud.vision.v1p3beta1.Product.display_name], |
| // the product_category field refers to |
| // [Product.product_category][google.cloud.vision.v1p3beta1.Product.product_category], |
| // and the labels field refers to [Product.labels][]. |
| // |
| // Labels (optional) should be a line containing a list of comma-separated |
| // key-value pairs, with the format |
| // "key_1=value_1,key_2=value_2,...,key_n=value_n". |
| // |
| // The bounding_poly (optional) field is used to identify one region of |
| // interest from the image in the same manner as CreateReferenceImage. If no |
| // bounding_poly is specified, the system will try to detect regions of |
| // interest automatically. |
| // |
| // Note that the pipeline will resize the image if the image resolution is too |
| // large to process (above 20MP). |
| // |
| // Also note that at most one bounding_poly is allowed per line. If the image |
| // contains multiple regions of interest, the csv should contain one line per |
| // region of interest. |
| // |
| // The bounding_poly column should contain an even number of comma-separated |
| // numbers, with the format "p1_x,p1_y,p2_x,p2_y,...,pn_x,pn_y". Nonnegative |
| // integers should be used for absolute bounding polygons, and float values |
| // in [0, 1] should be used for normalized bounding polygons. |
| CsvFileUri string `protobuf:"bytes,1,opt,name=csv_file_uri,json=csvFileUri,proto3" json:"csv_file_uri,omitempty"` |
| } |
| |
| func (x *ImportProductSetsGcsSource) Reset() { |
| *x = ImportProductSetsGcsSource{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[24] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ImportProductSetsGcsSource) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ImportProductSetsGcsSource) ProtoMessage() {} |
| |
| func (x *ImportProductSetsGcsSource) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[24] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ImportProductSetsGcsSource.ProtoReflect.Descriptor instead. |
| func (*ImportProductSetsGcsSource) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{24} |
| } |
| |
| func (x *ImportProductSetsGcsSource) GetCsvFileUri() string { |
| if x != nil { |
| return x.CsvFileUri |
| } |
| return "" |
| } |
| |
| // The input content for the `ImportProductSets` method. |
| type ImportProductSetsInputConfig struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The source of the input. |
| // |
| // Types that are assignable to Source: |
| // *ImportProductSetsInputConfig_GcsSource |
| Source isImportProductSetsInputConfig_Source `protobuf_oneof:"source"` |
| } |
| |
| func (x *ImportProductSetsInputConfig) Reset() { |
| *x = ImportProductSetsInputConfig{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ImportProductSetsInputConfig) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ImportProductSetsInputConfig) ProtoMessage() {} |
| |
| func (x *ImportProductSetsInputConfig) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ImportProductSetsInputConfig.ProtoReflect.Descriptor instead. |
| func (*ImportProductSetsInputConfig) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{25} |
| } |
| |
| func (m *ImportProductSetsInputConfig) GetSource() isImportProductSetsInputConfig_Source { |
| if m != nil { |
| return m.Source |
| } |
| return nil |
| } |
| |
| func (x *ImportProductSetsInputConfig) GetGcsSource() *ImportProductSetsGcsSource { |
| if x, ok := x.GetSource().(*ImportProductSetsInputConfig_GcsSource); ok { |
| return x.GcsSource |
| } |
| return nil |
| } |
| |
| type isImportProductSetsInputConfig_Source interface { |
| isImportProductSetsInputConfig_Source() |
| } |
| |
| type ImportProductSetsInputConfig_GcsSource struct { |
| // The Google Cloud Storage location for a csv file which preserves a list |
| // of ImportProductSetRequests in each line. |
| GcsSource *ImportProductSetsGcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"` |
| } |
| |
| func (*ImportProductSetsInputConfig_GcsSource) isImportProductSetsInputConfig_Source() {} |
| |
| // Request message for the `ImportProductSets` method. |
| type ImportProductSetsRequest struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // Required. The project in which the ProductSets should be imported. |
| // |
| // Format is `projects/PROJECT_ID/locations/LOC_ID`. |
| Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` |
| // Required. The input content for the list of requests. |
| InputConfig *ImportProductSetsInputConfig `protobuf:"bytes,2,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"` |
| } |
| |
| func (x *ImportProductSetsRequest) Reset() { |
| *x = ImportProductSetsRequest{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[26] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ImportProductSetsRequest) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ImportProductSetsRequest) ProtoMessage() {} |
| |
| func (x *ImportProductSetsRequest) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[26] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ImportProductSetsRequest.ProtoReflect.Descriptor instead. |
| func (*ImportProductSetsRequest) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{26} |
| } |
| |
| func (x *ImportProductSetsRequest) GetParent() string { |
| if x != nil { |
| return x.Parent |
| } |
| return "" |
| } |
| |
| func (x *ImportProductSetsRequest) GetInputConfig() *ImportProductSetsInputConfig { |
| if x != nil { |
| return x.InputConfig |
| } |
| return nil |
| } |
| |
| // Response message for the `ImportProductSets` method. |
| // |
| // This message is returned by the |
| // [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation] |
| // method in the returned |
| // [google.longrunning.Operation.response][google.longrunning.Operation.response] |
| // field. |
| type ImportProductSetsResponse struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The list of reference_images that are imported successfully. |
| ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"` |
| // The rpc status for each ImportProductSet request, including both successes |
| // and errors. |
| // |
| // The number of statuses here matches the number of lines in the csv file, |
| // and statuses[i] stores the success or failure status of processing the i-th |
| // line of the csv, starting from line 0. |
| Statuses []*status.Status `protobuf:"bytes,2,rep,name=statuses,proto3" json:"statuses,omitempty"` |
| } |
| |
| func (x *ImportProductSetsResponse) Reset() { |
| *x = ImportProductSetsResponse{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[27] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *ImportProductSetsResponse) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*ImportProductSetsResponse) ProtoMessage() {} |
| |
| func (x *ImportProductSetsResponse) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[27] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use ImportProductSetsResponse.ProtoReflect.Descriptor instead. |
| func (*ImportProductSetsResponse) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{27} |
| } |
| |
| func (x *ImportProductSetsResponse) GetReferenceImages() []*ReferenceImage { |
| if x != nil { |
| return x.ReferenceImages |
| } |
| return nil |
| } |
| |
| func (x *ImportProductSetsResponse) GetStatuses() []*status.Status { |
| if x != nil { |
| return x.Statuses |
| } |
| return nil |
| } |
| |
| // Metadata for the batch operations such as the current state. |
| // |
| // This is included in the `metadata` field of the `Operation` returned by the |
| // `GetOperation` call of the `google::longrunning::Operations` service. |
| type BatchOperationMetadata struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The current state of the batch operation. |
| State BatchOperationMetadata_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.vision.v1p3beta1.BatchOperationMetadata_State" json:"state,omitempty"` |
| // The time when the batch request was submitted to the server. |
| SubmitTime *timestamp.Timestamp `protobuf:"bytes,2,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"` |
| // The time when the batch request is finished and |
| // [google.longrunning.Operation.done][google.longrunning.Operation.done] is |
| // set to true. |
| EndTime *timestamp.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"` |
| } |
| |
| func (x *BatchOperationMetadata) Reset() { |
| *x = BatchOperationMetadata{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[28] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *BatchOperationMetadata) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*BatchOperationMetadata) ProtoMessage() {} |
| |
| func (x *BatchOperationMetadata) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[28] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use BatchOperationMetadata.ProtoReflect.Descriptor instead. |
| func (*BatchOperationMetadata) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{28} |
| } |
| |
| func (x *BatchOperationMetadata) GetState() BatchOperationMetadata_State { |
| if x != nil { |
| return x.State |
| } |
| return BatchOperationMetadata_STATE_UNSPECIFIED |
| } |
| |
| func (x *BatchOperationMetadata) GetSubmitTime() *timestamp.Timestamp { |
| if x != nil { |
| return x.SubmitTime |
| } |
| return nil |
| } |
| |
| func (x *BatchOperationMetadata) GetEndTime() *timestamp.Timestamp { |
| if x != nil { |
| return x.EndTime |
| } |
| return nil |
| } |
| |
| // A product label represented as a key-value pair. |
| type Product_KeyValue struct { |
| state protoimpl.MessageState |
| sizeCache protoimpl.SizeCache |
| unknownFields protoimpl.UnknownFields |
| |
| // The key of the label attached to the product. Cannot be empty and cannot |
| // exceed 128 bytes. |
| Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` |
| // The value of the label attached to the product. Cannot be empty and |
| // cannot exceed 128 bytes. |
| Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` |
| } |
| |
| func (x *Product_KeyValue) Reset() { |
| *x = Product_KeyValue{} |
| if protoimpl.UnsafeEnabled { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[29] |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| ms.StoreMessageInfo(mi) |
| } |
| } |
| |
| func (x *Product_KeyValue) String() string { |
| return protoimpl.X.MessageStringOf(x) |
| } |
| |
| func (*Product_KeyValue) ProtoMessage() {} |
| |
| func (x *Product_KeyValue) ProtoReflect() protoreflect.Message { |
| mi := &file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[29] |
| if protoimpl.UnsafeEnabled && x != nil { |
| ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) |
| if ms.LoadMessageInfo() == nil { |
| ms.StoreMessageInfo(mi) |
| } |
| return ms |
| } |
| return mi.MessageOf(x) |
| } |
| |
| // Deprecated: Use Product_KeyValue.ProtoReflect.Descriptor instead. |
| func (*Product_KeyValue) Descriptor() ([]byte, []int) { |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP(), []int{0, 0} |
| } |
| |
| func (x *Product_KeyValue) GetKey() string { |
| if x != nil { |
| return x.Key |
| } |
| return "" |
| } |
| |
| func (x *Product_KeyValue) GetValue() string { |
| if x != nil { |
| return x.Value |
| } |
| return "" |
| } |
| |
| var File_google_cloud_vision_v1p3beta1_product_search_service_proto protoreflect.FileDescriptor |
| |
| var file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc = []byte{ |
| 0x0a, 0x3a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, |
| 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, |
| 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, |
| 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, |
| 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, |
| 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, |
| 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, |
| 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, |
| 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2c, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x69, 0x73, |
| 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x67, 0x65, |
| 0x6f, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, |
| 0x2f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, |
| 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, |
| 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, |
| 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, |
| 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, |
| 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, |
| 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, |
| 0x61, 0x74, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x02, 0x0a, 0x07, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, |
| 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, |
| 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, |
| 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, |
| 0x2e, 0x0a, 0x10, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, |
| 0x6f, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, |
| 0x56, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, |
| 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, |
| 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, |
| 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, |
| 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, |
| 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x5e, 0xea, 0x41, 0x5b, |
| 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, |
| 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, |
| 0x3a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, |
| 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, |
| 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x7d, 0x22, 0xa7, 0x02, 0x0a, 0x0a, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, |
| 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, |
| 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, |
| 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, |
| 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, |
| 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, |
| 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x69, 0x6d, |
| 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, |
| 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, |
| 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a, 0x68, 0xea, 0x41, 0x65, |
| 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, |
| 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, |
| 0x65, 0x74, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, |
| 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, |
| 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x5f, 0x73, 0x65, 0x74, 0x7d, 0x22, 0x9f, 0x02, 0x0a, 0x0e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, |
| 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, |
| 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, |
| 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, |
| 0x75, 0x72, 0x69, 0x12, 0x57, 0x0a, 0x0e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, |
| 0x70, 0x6f, 0x6c, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, |
| 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x6f, 0x75, 0x6e, |
| 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x62, |
| 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x73, 0x3a, 0x88, 0x01, 0xea, |
| 0x41, 0x84, 0x01, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66, 0x65, 0x72, |
| 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x70, 0x72, 0x6f, 0x6a, 0x65, |
| 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, |
| 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, |
| 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, |
| 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, |
| 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x7d, 0x22, 0xbf, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, |
| 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, |
| 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, |
| 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, |
| 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, |
| 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, |
| 0x65, 0x6e, 0x74, 0x12, 0x45, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, |
| 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, |
| 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, |
| 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, |
| 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69, |
| 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, |
| 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, |
| 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, |
| 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, |
| 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, |
| 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, |
| 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, |
| 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, |
| 0x22, 0x82, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x08, 0x70, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, |
| 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, |
| 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, |
| 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, |
| 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, |
| 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, |
| 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, |
| 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, |
| 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, |
| 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, |
| 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, |
| 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, |
| 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, |
| 0x73, 0x6b, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, |
| 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, |
| 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, |
| 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, |
| 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd3, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, |
| 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, |
| 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, |
| 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, |
| 0x72, 0x65, 0x6e, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, |
| 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, |
| 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x16, |
| 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, |
| 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, |
| 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, |
| 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, |
| 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, |
| 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, |
| 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, |
| 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, |
| 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8f, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, |
| 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, |
| 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, |
| 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, |
| 0x65, 0x74, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, |
| 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, |
| 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, |
| 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x54, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, |
| 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, |
| 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa7, 0x01, |
| 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, |
| 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, |
| 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, |
| 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, |
| 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, |
| 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x57, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, |
| 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, |
| 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, |
| 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, |
| 0x22, 0xe7, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, |
| 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, |
| 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, |
| 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, |
| 0x5b, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, |
| 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, |
| 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, |
| 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x72, 0x65, |
| 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, |
| 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, |
| 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, |
| 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x1a, 0x4c, |
| 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, |
| 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, |
| 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, |
| 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, |
| 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, |
| 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, |
| 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, |
| 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xbc, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, |
| 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, |
| 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, |
| 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, |
| 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, |
| 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, |
| 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1b, |
| 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, |
| 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x6e, |
| 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, |
| 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, |
| 0x6b, 0x65, 0x6e, 0x22, 0x5c, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, |
| 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, |
| 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, 0xe0, |
| 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66, |
| 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, |
| 0x65, 0x22, 0x5f, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, |
| 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, |
| 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2c, |
| 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, |
| 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x04, 0x6e, 0x61, |
| 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, |
| 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, |
| 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, |
| 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, |
| 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, |
| 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, |
| 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, |
| 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, |
| 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, |
| 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, |
| 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, |
| 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, |
| 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, |
| 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x9b, 0x01, 0x0a, 0x1f, 0x4c, 0x69, |
| 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, |
| 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, |
| 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, |
| 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, |
| 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, |
| 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, |
| 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x8e, 0x01, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x08, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, |
| 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, |
| 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, |
| 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, |
| 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3e, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f, |
| 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47, 0x63, 0x73, |
| 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x73, 0x76, 0x5f, 0x66, 0x69, |
| 0x6c, 0x65, 0x5f, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x73, |
| 0x76, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x69, 0x22, 0x84, 0x01, 0x0a, 0x1c, 0x49, 0x6d, 0x70, |
| 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, |
| 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5a, 0x0a, 0x0a, 0x67, 0x63, 0x73, |
| 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, |
| 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, |
| 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47, |
| 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x09, 0x67, 0x63, 0x73, 0x53, |
| 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, |
| 0xc2, 0x01, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, |
| 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, |
| 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, |
| 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, |
| 0x63, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, |
| 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, |
| 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, |
| 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, |
| 0x69, 0x67, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, |
| 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa5, 0x01, 0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, |
| 0x73, 0x65, 0x12, 0x58, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, |
| 0x69, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, |
| 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, |
| 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, |
| 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x08, |
| 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, |
| 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x22, 0xba, 0x02, 0x0a, |
| 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, |
| 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x51, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, |
| 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, |
| 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, |
| 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74, |
| 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x75, |
| 0x62, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, |
| 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, |
| 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x73, 0x75, 0x62, |
| 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, |
| 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, |
| 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x59, |
| 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45, |
| 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, |
| 0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e, |
| 0x0a, 0x0a, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x02, 0x12, 0x0a, |
| 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, |
| 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0xeb, 0x1e, 0x0a, 0x0d, 0x50, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0xe6, 0x01, 0x0a, 0x10, |
| 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, |
| 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, |
| 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, |
| 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, |
| 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x53, 0x65, 0x74, 0x22, 0x6f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x22, 0x36, 0x2f, 0x76, 0x31, |
| 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, |
| 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, |
| 0x65, 0x74, 0x73, 0x3a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, |
| 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, |
| 0x74, 0x5f, 0x69, 0x64, 0x12, 0xc9, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, |
| 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, |
| 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, |
| 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, |
| 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, |
| 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, |
| 0x36, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, |
| 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, |
| 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, |
| 0x12, 0xb6, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, |
| 0x65, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, |
| 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, |
| 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, |
| 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, |
| 0x65, 0x74, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x76, 0x31, 0x70, |
| 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, |
| 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, |
| 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, |
| 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe8, 0x01, 0x0a, 0x10, 0x55, 0x70, |
| 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x36, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, |
| 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x55, |
| 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, |
| 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, |
| 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, |
| 0x74, 0x22, 0x71, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x32, 0x42, 0x2f, 0x76, 0x31, 0x70, 0x33, |
| 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, |
| 0x65, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, |
| 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0b, 0x70, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0xda, 0x41, 0x17, 0x70, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, |
| 0x6d, 0x61, 0x73, 0x6b, 0x12, 0xa9, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, |
| 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, |
| 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, |
| 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, |
| 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, |
| 0x38, 0x2a, 0x36, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, |
| 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, |
| 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, |
| 0x12, 0xce, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, |
| 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, |
| 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, |
| 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, |
| 0x60, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, |
| 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, |
| 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, |
| 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x3a, 0x07, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x19, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, |
| 0x64, 0x12, 0xbd, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, |
| 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, |
| 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, |
| 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, |
| 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x82, 0xd3, 0xe4, |
| 0x93, 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, |
| 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, |
| 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, |
| 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, |
| 0x74, 0x12, 0xaa, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, |
| 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, |
| 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, |
| 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, |
| 0x02, 0x35, 0x12, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, |
| 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, |
| 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xd0, |
| 0x01, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, |
| 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, |
| 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, |
| 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, |
| 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, |
| 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x62, 0x82, |
| 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, |
| 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, |
| 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, |
| 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, |
| 0x2a, 0x7d, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x13, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, |
| 0x6b, 0x12, 0xa0, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, |
| 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, |
| 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, |
| 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x2a, 0x33, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, |
| 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, |
| 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, |
| 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, |
| 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x8e, 0x02, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, |
| 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, |
| 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, |
| 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, |
| 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, |
| 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, |
| 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x8a, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, |
| 0x58, 0x22, 0x45, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, |
| 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, |
| 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, |
| 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, |
| 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, |
| 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0xda, 0x41, 0x29, 0x70, 0x61, 0x72, 0x65, |
| 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, |
| 0x67, 0x65, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, |
| 0x67, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xc0, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, |
| 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x3a, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, |
| 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, |
| 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, |
| 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, |
| 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, |
| 0x74, 0x79, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x2a, 0x45, 0x2f, 0x76, 0x31, 0x70, |
| 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, |
| 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, |
| 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, |
| 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, |
| 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xe4, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, |
| 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, |
| 0x12, 0x39, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, |
| 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, |
| 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x67, 0x6f, |
| 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, |
| 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, |
| 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, |
| 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, |
| 0x45, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, |
| 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, |
| 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, |
| 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, |
| 0xd1, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, |
| 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, |
| 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, |
| 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, |
| 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, |
| 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, |
| 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x54, 0x82, |
| 0xd3, 0xe4, 0x93, 0x02, 0x47, 0x12, 0x45, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, |
| 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, |
| 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, |
| 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, |
| 0x61, 0x6d, 0x65, 0x12, 0xcb, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3c, |
| 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, |
| 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x41, |
| 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, |
| 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, |
| 0x6d, 0x70, 0x74, 0x79, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x76, |
| 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, |
| 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, |
| 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, |
| 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, |
| 0x01, 0x2a, 0xda, 0x41, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, |
| 0x74, 0x12, 0xd8, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, |
| 0x74, 0x12, 0x41, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, |
| 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, |
| 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, |
| 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, |
| 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, |
| 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x5e, 0x82, 0xd3, |
| 0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, |
| 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, |
| 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x6d, |
| 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c, |
| 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0xeb, 0x01, 0x0a, |
| 0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, |
| 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, |
| 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, |
| 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, |
| 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, |
| 0x02, 0x41, 0x12, 0x3f, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, |
| 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, |
| 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, |
| 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, |
| 0x63, 0x74, 0x73, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x82, 0x02, 0x0a, 0x11, 0x49, |
| 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, |
| 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, |
| 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, |
| 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, |
| 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2e, 0x4f, |
| 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, |
| 0x42, 0x22, 0x3d, 0x2f, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x7b, 0x70, |
| 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, |
| 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, |
| 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, |
| 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x70, |
| 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xca, 0x41, 0x33, 0x0a, 0x19, 0x49, 0x6d, |
| 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, |
| 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, |
| 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, |
| 0x76, 0xca, 0x41, 0x15, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, |
| 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41, 0x5b, 0x68, 0x74, 0x74, 0x70, |
| 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, |
| 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, |
| 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, |
| 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, |
| 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, |
| 0x2d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x88, 0x01, 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x2e, |
| 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, |
| 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x42, 0x19, 0x50, |
| 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, |
| 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x43, 0x67, 0x6f, 0x6f, 0x67, |
| 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, |
| 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, |
| 0x73, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, |
| 0x31, 0x70, 0x33, 0x62, 0x65, 0x74, 0x61, 0x31, 0x3b, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0xf8, |
| 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, |
| } |
| |
| var ( |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescOnce sync.Once |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData = file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc |
| ) |
| |
| func file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescGZIP() []byte { |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescOnce.Do(func() { |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData) |
| }) |
| return file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDescData |
| } |
| |
| var file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) |
| var file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes = make([]protoimpl.MessageInfo, 30) |
| var file_google_cloud_vision_v1p3beta1_product_search_service_proto_goTypes = []interface{}{ |
| (BatchOperationMetadata_State)(0), // 0: google.cloud.vision.v1p3beta1.BatchOperationMetadata.State |
| (*Product)(nil), // 1: google.cloud.vision.v1p3beta1.Product |
| (*ProductSet)(nil), // 2: google.cloud.vision.v1p3beta1.ProductSet |
| (*ReferenceImage)(nil), // 3: google.cloud.vision.v1p3beta1.ReferenceImage |
| (*CreateProductRequest)(nil), // 4: google.cloud.vision.v1p3beta1.CreateProductRequest |
| (*ListProductsRequest)(nil), // 5: google.cloud.vision.v1p3beta1.ListProductsRequest |
| (*ListProductsResponse)(nil), // 6: google.cloud.vision.v1p3beta1.ListProductsResponse |
| (*GetProductRequest)(nil), // 7: google.cloud.vision.v1p3beta1.GetProductRequest |
| (*UpdateProductRequest)(nil), // 8: google.cloud.vision.v1p3beta1.UpdateProductRequest |
| (*DeleteProductRequest)(nil), // 9: google.cloud.vision.v1p3beta1.DeleteProductRequest |
| (*CreateProductSetRequest)(nil), // 10: google.cloud.vision.v1p3beta1.CreateProductSetRequest |
| (*ListProductSetsRequest)(nil), // 11: google.cloud.vision.v1p3beta1.ListProductSetsRequest |
| (*ListProductSetsResponse)(nil), // 12: google.cloud.vision.v1p3beta1.ListProductSetsResponse |
| (*GetProductSetRequest)(nil), // 13: google.cloud.vision.v1p3beta1.GetProductSetRequest |
| (*UpdateProductSetRequest)(nil), // 14: google.cloud.vision.v1p3beta1.UpdateProductSetRequest |
| (*DeleteProductSetRequest)(nil), // 15: google.cloud.vision.v1p3beta1.DeleteProductSetRequest |
| (*CreateReferenceImageRequest)(nil), // 16: google.cloud.vision.v1p3beta1.CreateReferenceImageRequest |
| (*ListReferenceImagesRequest)(nil), // 17: google.cloud.vision.v1p3beta1.ListReferenceImagesRequest |
| (*ListReferenceImagesResponse)(nil), // 18: google.cloud.vision.v1p3beta1.ListReferenceImagesResponse |
| (*GetReferenceImageRequest)(nil), // 19: google.cloud.vision.v1p3beta1.GetReferenceImageRequest |
| (*DeleteReferenceImageRequest)(nil), // 20: google.cloud.vision.v1p3beta1.DeleteReferenceImageRequest |
| (*AddProductToProductSetRequest)(nil), // 21: google.cloud.vision.v1p3beta1.AddProductToProductSetRequest |
| (*RemoveProductFromProductSetRequest)(nil), // 22: google.cloud.vision.v1p3beta1.RemoveProductFromProductSetRequest |
| (*ListProductsInProductSetRequest)(nil), // 23: google.cloud.vision.v1p3beta1.ListProductsInProductSetRequest |
| (*ListProductsInProductSetResponse)(nil), // 24: google.cloud.vision.v1p3beta1.ListProductsInProductSetResponse |
| (*ImportProductSetsGcsSource)(nil), // 25: google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource |
| (*ImportProductSetsInputConfig)(nil), // 26: google.cloud.vision.v1p3beta1.ImportProductSetsInputConfig |
| (*ImportProductSetsRequest)(nil), // 27: google.cloud.vision.v1p3beta1.ImportProductSetsRequest |
| (*ImportProductSetsResponse)(nil), // 28: google.cloud.vision.v1p3beta1.ImportProductSetsResponse |
| (*BatchOperationMetadata)(nil), // 29: google.cloud.vision.v1p3beta1.BatchOperationMetadata |
| (*Product_KeyValue)(nil), // 30: google.cloud.vision.v1p3beta1.Product.KeyValue |
| (*timestamp.Timestamp)(nil), // 31: google.protobuf.Timestamp |
| (*status.Status)(nil), // 32: google.rpc.Status |
| (*BoundingPoly)(nil), // 33: google.cloud.vision.v1p3beta1.BoundingPoly |
| (*field_mask.FieldMask)(nil), // 34: google.protobuf.FieldMask |
| (*empty.Empty)(nil), // 35: google.protobuf.Empty |
| (*longrunning.Operation)(nil), // 36: google.longrunning.Operation |
| } |
| var file_google_cloud_vision_v1p3beta1_product_search_service_proto_depIdxs = []int32{ |
| 30, // 0: google.cloud.vision.v1p3beta1.Product.product_labels:type_name -> google.cloud.vision.v1p3beta1.Product.KeyValue |
| 31, // 1: google.cloud.vision.v1p3beta1.ProductSet.index_time:type_name -> google.protobuf.Timestamp |
| 32, // 2: google.cloud.vision.v1p3beta1.ProductSet.index_error:type_name -> google.rpc.Status |
| 33, // 3: google.cloud.vision.v1p3beta1.ReferenceImage.bounding_polys:type_name -> google.cloud.vision.v1p3beta1.BoundingPoly |
| 1, // 4: google.cloud.vision.v1p3beta1.CreateProductRequest.product:type_name -> google.cloud.vision.v1p3beta1.Product |
| 1, // 5: google.cloud.vision.v1p3beta1.ListProductsResponse.products:type_name -> google.cloud.vision.v1p3beta1.Product |
| 1, // 6: google.cloud.vision.v1p3beta1.UpdateProductRequest.product:type_name -> google.cloud.vision.v1p3beta1.Product |
| 34, // 7: google.cloud.vision.v1p3beta1.UpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask |
| 2, // 8: google.cloud.vision.v1p3beta1.CreateProductSetRequest.product_set:type_name -> google.cloud.vision.v1p3beta1.ProductSet |
| 2, // 9: google.cloud.vision.v1p3beta1.ListProductSetsResponse.product_sets:type_name -> google.cloud.vision.v1p3beta1.ProductSet |
| 2, // 10: google.cloud.vision.v1p3beta1.UpdateProductSetRequest.product_set:type_name -> google.cloud.vision.v1p3beta1.ProductSet |
| 34, // 11: google.cloud.vision.v1p3beta1.UpdateProductSetRequest.update_mask:type_name -> google.protobuf.FieldMask |
| 3, // 12: google.cloud.vision.v1p3beta1.CreateReferenceImageRequest.reference_image:type_name -> google.cloud.vision.v1p3beta1.ReferenceImage |
| 3, // 13: google.cloud.vision.v1p3beta1.ListReferenceImagesResponse.reference_images:type_name -> google.cloud.vision.v1p3beta1.ReferenceImage |
| 1, // 14: google.cloud.vision.v1p3beta1.ListProductsInProductSetResponse.products:type_name -> google.cloud.vision.v1p3beta1.Product |
| 25, // 15: google.cloud.vision.v1p3beta1.ImportProductSetsInputConfig.gcs_source:type_name -> google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource |
| 26, // 16: google.cloud.vision.v1p3beta1.ImportProductSetsRequest.input_config:type_name -> google.cloud.vision.v1p3beta1.ImportProductSetsInputConfig |
| 3, // 17: google.cloud.vision.v1p3beta1.ImportProductSetsResponse.reference_images:type_name -> google.cloud.vision.v1p3beta1.ReferenceImage |
| 32, // 18: google.cloud.vision.v1p3beta1.ImportProductSetsResponse.statuses:type_name -> google.rpc.Status |
| 0, // 19: google.cloud.vision.v1p3beta1.BatchOperationMetadata.state:type_name -> google.cloud.vision.v1p3beta1.BatchOperationMetadata.State |
| 31, // 20: google.cloud.vision.v1p3beta1.BatchOperationMetadata.submit_time:type_name -> google.protobuf.Timestamp |
| 31, // 21: google.cloud.vision.v1p3beta1.BatchOperationMetadata.end_time:type_name -> google.protobuf.Timestamp |
| 10, // 22: google.cloud.vision.v1p3beta1.ProductSearch.CreateProductSet:input_type -> google.cloud.vision.v1p3beta1.CreateProductSetRequest |
| 11, // 23: google.cloud.vision.v1p3beta1.ProductSearch.ListProductSets:input_type -> google.cloud.vision.v1p3beta1.ListProductSetsRequest |
| 13, // 24: google.cloud.vision.v1p3beta1.ProductSearch.GetProductSet:input_type -> google.cloud.vision.v1p3beta1.GetProductSetRequest |
| 14, // 25: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProductSet:input_type -> google.cloud.vision.v1p3beta1.UpdateProductSetRequest |
| 15, // 26: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProductSet:input_type -> google.cloud.vision.v1p3beta1.DeleteProductSetRequest |
| 4, // 27: google.cloud.vision.v1p3beta1.ProductSearch.CreateProduct:input_type -> google.cloud.vision.v1p3beta1.CreateProductRequest |
| 5, // 28: google.cloud.vision.v1p3beta1.ProductSearch.ListProducts:input_type -> google.cloud.vision.v1p3beta1.ListProductsRequest |
| 7, // 29: google.cloud.vision.v1p3beta1.ProductSearch.GetProduct:input_type -> google.cloud.vision.v1p3beta1.GetProductRequest |
| 8, // 30: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProduct:input_type -> google.cloud.vision.v1p3beta1.UpdateProductRequest |
| 9, // 31: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProduct:input_type -> google.cloud.vision.v1p3beta1.DeleteProductRequest |
| 16, // 32: google.cloud.vision.v1p3beta1.ProductSearch.CreateReferenceImage:input_type -> google.cloud.vision.v1p3beta1.CreateReferenceImageRequest |
| 20, // 33: google.cloud.vision.v1p3beta1.ProductSearch.DeleteReferenceImage:input_type -> google.cloud.vision.v1p3beta1.DeleteReferenceImageRequest |
| 17, // 34: google.cloud.vision.v1p3beta1.ProductSearch.ListReferenceImages:input_type -> google.cloud.vision.v1p3beta1.ListReferenceImagesRequest |
| 19, // 35: google.cloud.vision.v1p3beta1.ProductSearch.GetReferenceImage:input_type -> google.cloud.vision.v1p3beta1.GetReferenceImageRequest |
| 21, // 36: google.cloud.vision.v1p3beta1.ProductSearch.AddProductToProductSet:input_type -> google.cloud.vision.v1p3beta1.AddProductToProductSetRequest |
| 22, // 37: google.cloud.vision.v1p3beta1.ProductSearch.RemoveProductFromProductSet:input_type -> google.cloud.vision.v1p3beta1.RemoveProductFromProductSetRequest |
| 23, // 38: google.cloud.vision.v1p3beta1.ProductSearch.ListProductsInProductSet:input_type -> google.cloud.vision.v1p3beta1.ListProductsInProductSetRequest |
| 27, // 39: google.cloud.vision.v1p3beta1.ProductSearch.ImportProductSets:input_type -> google.cloud.vision.v1p3beta1.ImportProductSetsRequest |
| 2, // 40: google.cloud.vision.v1p3beta1.ProductSearch.CreateProductSet:output_type -> google.cloud.vision.v1p3beta1.ProductSet |
| 12, // 41: google.cloud.vision.v1p3beta1.ProductSearch.ListProductSets:output_type -> google.cloud.vision.v1p3beta1.ListProductSetsResponse |
| 2, // 42: google.cloud.vision.v1p3beta1.ProductSearch.GetProductSet:output_type -> google.cloud.vision.v1p3beta1.ProductSet |
| 2, // 43: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProductSet:output_type -> google.cloud.vision.v1p3beta1.ProductSet |
| 35, // 44: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProductSet:output_type -> google.protobuf.Empty |
| 1, // 45: google.cloud.vision.v1p3beta1.ProductSearch.CreateProduct:output_type -> google.cloud.vision.v1p3beta1.Product |
| 6, // 46: google.cloud.vision.v1p3beta1.ProductSearch.ListProducts:output_type -> google.cloud.vision.v1p3beta1.ListProductsResponse |
| 1, // 47: google.cloud.vision.v1p3beta1.ProductSearch.GetProduct:output_type -> google.cloud.vision.v1p3beta1.Product |
| 1, // 48: google.cloud.vision.v1p3beta1.ProductSearch.UpdateProduct:output_type -> google.cloud.vision.v1p3beta1.Product |
| 35, // 49: google.cloud.vision.v1p3beta1.ProductSearch.DeleteProduct:output_type -> google.protobuf.Empty |
| 3, // 50: google.cloud.vision.v1p3beta1.ProductSearch.CreateReferenceImage:output_type -> google.cloud.vision.v1p3beta1.ReferenceImage |
| 35, // 51: google.cloud.vision.v1p3beta1.ProductSearch.DeleteReferenceImage:output_type -> google.protobuf.Empty |
| 18, // 52: google.cloud.vision.v1p3beta1.ProductSearch.ListReferenceImages:output_type -> google.cloud.vision.v1p3beta1.ListReferenceImagesResponse |
| 3, // 53: google.cloud.vision.v1p3beta1.ProductSearch.GetReferenceImage:output_type -> google.cloud.vision.v1p3beta1.ReferenceImage |
| 35, // 54: google.cloud.vision.v1p3beta1.ProductSearch.AddProductToProductSet:output_type -> google.protobuf.Empty |
| 35, // 55: google.cloud.vision.v1p3beta1.ProductSearch.RemoveProductFromProductSet:output_type -> google.protobuf.Empty |
| 24, // 56: google.cloud.vision.v1p3beta1.ProductSearch.ListProductsInProductSet:output_type -> google.cloud.vision.v1p3beta1.ListProductsInProductSetResponse |
| 36, // 57: google.cloud.vision.v1p3beta1.ProductSearch.ImportProductSets:output_type -> google.longrunning.Operation |
| 40, // [40:58] is the sub-list for method output_type |
| 22, // [22:40] is the sub-list for method input_type |
| 22, // [22:22] is the sub-list for extension type_name |
| 22, // [22:22] is the sub-list for extension extendee |
| 0, // [0:22] is the sub-list for field type_name |
| } |
| |
| func init() { file_google_cloud_vision_v1p3beta1_product_search_service_proto_init() } |
| func file_google_cloud_vision_v1p3beta1_product_search_service_proto_init() { |
| if File_google_cloud_vision_v1p3beta1_product_search_service_proto != nil { |
| return |
| } |
| file_google_cloud_vision_v1p3beta1_geometry_proto_init() |
| if !protoimpl.UnsafeEnabled { |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Product); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ProductSet); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ReferenceImage); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*CreateProductRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListProductsRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListProductsResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*GetProductRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*UpdateProductRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*DeleteProductRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*CreateProductSetRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListProductSetsRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListProductSetsResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*GetProductSetRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*UpdateProductSetRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*DeleteProductSetRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*CreateReferenceImageRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListReferenceImagesRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListReferenceImagesResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*GetReferenceImageRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*DeleteReferenceImageRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*AddProductToProductSetRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*RemoveProductFromProductSetRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListProductsInProductSetRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ListProductsInProductSetResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ImportProductSetsGcsSource); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ImportProductSetsInputConfig); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ImportProductSetsRequest); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*ImportProductSetsResponse); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*BatchOperationMetadata); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { |
| switch v := v.(*Product_KeyValue); i { |
| case 0: |
| return &v.state |
| case 1: |
| return &v.sizeCache |
| case 2: |
| return &v.unknownFields |
| default: |
| return nil |
| } |
| } |
| } |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes[25].OneofWrappers = []interface{}{ |
| (*ImportProductSetsInputConfig_GcsSource)(nil), |
| } |
| type x struct{} |
| out := protoimpl.TypeBuilder{ |
| File: protoimpl.DescBuilder{ |
| GoPackagePath: reflect.TypeOf(x{}).PkgPath(), |
| RawDescriptor: file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc, |
| NumEnums: 1, |
| NumMessages: 30, |
| NumExtensions: 0, |
| NumServices: 1, |
| }, |
| GoTypes: file_google_cloud_vision_v1p3beta1_product_search_service_proto_goTypes, |
| DependencyIndexes: file_google_cloud_vision_v1p3beta1_product_search_service_proto_depIdxs, |
| EnumInfos: file_google_cloud_vision_v1p3beta1_product_search_service_proto_enumTypes, |
| MessageInfos: file_google_cloud_vision_v1p3beta1_product_search_service_proto_msgTypes, |
| }.Build() |
| File_google_cloud_vision_v1p3beta1_product_search_service_proto = out.File |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_rawDesc = nil |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_goTypes = nil |
| file_google_cloud_vision_v1p3beta1_product_search_service_proto_depIdxs = nil |
| } |
| |
| // Reference imports to suppress errors if they are not otherwise used. |
| var _ context.Context |
| var _ grpc.ClientConnInterface |
| |
| // This is a compile-time assertion to ensure that this generated file |
| // is compatible with the grpc package it is being compiled against. |
| const _ = grpc.SupportPackageIsVersion6 |
| |
| // ProductSearchClient is the client API for ProductSearch service. |
| // |
| // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. |
| type ProductSearchClient interface { |
| // Creates and returns a new ProductSet resource. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if display_name is missing, or is longer than |
| // 4096 characters. |
| CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) |
| // Lists ProductSets in an unspecified order. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if page_size is greater than 100, or less |
| // than 1. |
| ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error) |
| // Gets information associated with a ProductSet. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the ProductSet does not exist. |
| GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) |
| // Makes changes to a ProductSet resource. |
| // Only display_name can be updated currently. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the ProductSet does not exist. |
| // * Returns INVALID_ARGUMENT if display_name is present in update_mask but |
| // missing from the request or longer than 4096 characters. |
| UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) |
| // Permanently deletes a ProductSet. All Products and ReferenceImages in the |
| // ProductSet will be deleted. |
| // |
| // The actual image files are not deleted from Google Cloud Storage. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the ProductSet does not exist. |
| DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*empty.Empty, error) |
| // Creates and returns a new product resource. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096 |
| // characters. |
| // * Returns INVALID_ARGUMENT if description is longer than 4096 characters. |
| // * Returns INVALID_ARGUMENT if product_category is missing or invalid. |
| CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) |
| // Lists products in an unspecified order. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. |
| ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) |
| // Gets information associated with a Product. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the Product does not exist. |
| GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) |
| // Makes changes to a Product resource. |
| // Only display_name, description and labels can be updated right now. |
| // |
| // If labels are updated, the change will not be reflected in queries until |
| // the next index time. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the Product does not exist. |
| // * Returns INVALID_ARGUMENT if display_name is present in update_mask but is |
| // missing from the request or longer than 4096 characters. |
| // * Returns INVALID_ARGUMENT if description is present in update_mask but is |
| // longer than 4096 characters. |
| // * Returns INVALID_ARGUMENT if product_category is present in update_mask. |
| UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) |
| // Permanently deletes a product and its reference images. |
| // |
| // Metadata of the product and all its images will be deleted right away, but |
| // search queries against ProductSets containing the product may still work |
| // until all related caches are refreshed. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the product does not exist. |
| DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*empty.Empty, error) |
| // Creates and returns a new ReferenceImage resource. |
| // |
| // The `bounding_poly` field is optional. If `bounding_poly` is not specified, |
| // the system will try to detect regions of interest in the image that are |
| // compatible with the product_category on the parent product. If it is |
| // specified, detection is ALWAYS skipped. The system converts polygons into |
| // non-rotated rectangles. |
| // |
| // Note that the pipeline will resize the image if the image resolution is too |
| // large to process (above 50MP). |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096 |
| // characters. |
| // * Returns INVALID_ARGUMENT if the product does not exist. |
| // * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing |
| // compatible with the parent product's product_category is detected. |
| // * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons. |
| CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) |
| // Permanently deletes a reference image. |
| // |
| // The image metadata will be deleted right away, but search queries |
| // against ProductSets containing the image may still work until all related |
| // caches are refreshed. |
| // |
| // The actual image files are not deleted from Google Cloud Storage. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the reference image does not exist. |
| DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*empty.Empty, error) |
| // Lists reference images. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the parent product does not exist. |
| // * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less |
| // than 1. |
| ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error) |
| // Gets information associated with a ReferenceImage. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the specified image does not exist. |
| GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) |
| // Adds a Product to the specified ProductSet. If the Product is already |
| // present, no change is made. |
| // |
| // One Product can be added to at most 100 ProductSets. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the Product or the ProductSet doesn't exist. |
| AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*empty.Empty, error) |
| // Removes a Product from the specified ProductSet. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND If the Product is not found under the ProductSet. |
| RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*empty.Empty, error) |
| // Lists the Products in a ProductSet, in an unspecified order. If the |
| // ProductSet does not exist, the products field of the response will be |
| // empty. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. |
| ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error) |
| // Asynchronous API that imports a list of reference images to specified |
| // product sets based on a list of image information. |
| // |
| // The [google.longrunning.Operation][google.longrunning.Operation] API can be |
| // used to keep track of the progress and results of the request. |
| // `Operation.metadata` contains `BatchOperationMetadata`. (progress) |
| // `Operation.response` contains `ImportProductSetsResponse`. (results) |
| // |
| // The input source of this method is a csv file on Google Cloud Storage. |
| // For the format of the csv file please see |
| // [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource.csv_file_uri]. |
| ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) |
| } |
| |
| type productSearchClient struct { |
| cc grpc.ClientConnInterface |
| } |
| |
| func NewProductSearchClient(cc grpc.ClientConnInterface) ProductSearchClient { |
| return &productSearchClient{cc} |
| } |
| |
| func (c *productSearchClient) CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) { |
| out := new(ProductSet) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProductSet", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error) { |
| out := new(ListProductSetsResponse) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductSets", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) { |
| out := new(ProductSet) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/GetProductSet", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) { |
| out := new(ProductSet) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProductSet", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*empty.Empty, error) { |
| out := new(empty.Empty) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProductSet", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) { |
| out := new(Product) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProduct", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) { |
| out := new(ListProductsResponse) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListProducts", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) { |
| out := new(Product) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/GetProduct", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) { |
| out := new(Product) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProduct", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*empty.Empty, error) { |
| out := new(empty.Empty) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProduct", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) { |
| out := new(ReferenceImage) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/CreateReferenceImage", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*empty.Empty, error) { |
| out := new(empty.Empty) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteReferenceImage", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error) { |
| out := new(ListReferenceImagesResponse) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListReferenceImages", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) { |
| out := new(ReferenceImage) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/GetReferenceImage", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*empty.Empty, error) { |
| out := new(empty.Empty) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/AddProductToProductSet", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*empty.Empty, error) { |
| out := new(empty.Empty) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/RemoveProductFromProductSet", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error) { |
| out := new(ListProductsInProductSetResponse) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductsInProductSet", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| func (c *productSearchClient) ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) { |
| out := new(longrunning.Operation) |
| err := c.cc.Invoke(ctx, "/google.cloud.vision.v1p3beta1.ProductSearch/ImportProductSets", in, out, opts...) |
| if err != nil { |
| return nil, err |
| } |
| return out, nil |
| } |
| |
| // ProductSearchServer is the server API for ProductSearch service. |
| type ProductSearchServer interface { |
| // Creates and returns a new ProductSet resource. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if display_name is missing, or is longer than |
| // 4096 characters. |
| CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error) |
| // Lists ProductSets in an unspecified order. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if page_size is greater than 100, or less |
| // than 1. |
| ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error) |
| // Gets information associated with a ProductSet. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the ProductSet does not exist. |
| GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error) |
| // Makes changes to a ProductSet resource. |
| // Only display_name can be updated currently. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the ProductSet does not exist. |
| // * Returns INVALID_ARGUMENT if display_name is present in update_mask but |
| // missing from the request or longer than 4096 characters. |
| UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error) |
| // Permanently deletes a ProductSet. All Products and ReferenceImages in the |
| // ProductSet will be deleted. |
| // |
| // The actual image files are not deleted from Google Cloud Storage. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the ProductSet does not exist. |
| DeleteProductSet(context.Context, *DeleteProductSetRequest) (*empty.Empty, error) |
| // Creates and returns a new product resource. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096 |
| // characters. |
| // * Returns INVALID_ARGUMENT if description is longer than 4096 characters. |
| // * Returns INVALID_ARGUMENT if product_category is missing or invalid. |
| CreateProduct(context.Context, *CreateProductRequest) (*Product, error) |
| // Lists products in an unspecified order. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. |
| ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) |
| // Gets information associated with a Product. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the Product does not exist. |
| GetProduct(context.Context, *GetProductRequest) (*Product, error) |
| // Makes changes to a Product resource. |
| // Only display_name, description and labels can be updated right now. |
| // |
| // If labels are updated, the change will not be reflected in queries until |
| // the next index time. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the Product does not exist. |
| // * Returns INVALID_ARGUMENT if display_name is present in update_mask but is |
| // missing from the request or longer than 4096 characters. |
| // * Returns INVALID_ARGUMENT if description is present in update_mask but is |
| // longer than 4096 characters. |
| // * Returns INVALID_ARGUMENT if product_category is present in update_mask. |
| UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) |
| // Permanently deletes a product and its reference images. |
| // |
| // Metadata of the product and all its images will be deleted right away, but |
| // search queries against ProductSets containing the product may still work |
| // until all related caches are refreshed. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the product does not exist. |
| DeleteProduct(context.Context, *DeleteProductRequest) (*empty.Empty, error) |
| // Creates and returns a new ReferenceImage resource. |
| // |
| // The `bounding_poly` field is optional. If `bounding_poly` is not specified, |
| // the system will try to detect regions of interest in the image that are |
| // compatible with the product_category on the parent product. If it is |
| // specified, detection is ALWAYS skipped. The system converts polygons into |
| // non-rotated rectangles. |
| // |
| // Note that the pipeline will resize the image if the image resolution is too |
| // large to process (above 50MP). |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096 |
| // characters. |
| // * Returns INVALID_ARGUMENT if the product does not exist. |
| // * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing |
| // compatible with the parent product's product_category is detected. |
| // * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons. |
| CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error) |
| // Permanently deletes a reference image. |
| // |
| // The image metadata will be deleted right away, but search queries |
| // against ProductSets containing the image may still work until all related |
| // caches are refreshed. |
| // |
| // The actual image files are not deleted from Google Cloud Storage. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the reference image does not exist. |
| DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*empty.Empty, error) |
| // Lists reference images. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the parent product does not exist. |
| // * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less |
| // than 1. |
| ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error) |
| // Gets information associated with a ReferenceImage. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the specified image does not exist. |
| GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error) |
| // Adds a Product to the specified ProductSet. If the Product is already |
| // present, no change is made. |
| // |
| // One Product can be added to at most 100 ProductSets. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND if the Product or the ProductSet doesn't exist. |
| AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*empty.Empty, error) |
| // Removes a Product from the specified ProductSet. |
| // |
| // Possible errors: |
| // |
| // * Returns NOT_FOUND If the Product is not found under the ProductSet. |
| RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*empty.Empty, error) |
| // Lists the Products in a ProductSet, in an unspecified order. If the |
| // ProductSet does not exist, the products field of the response will be |
| // empty. |
| // |
| // Possible errors: |
| // |
| // * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1. |
| ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error) |
| // Asynchronous API that imports a list of reference images to specified |
| // product sets based on a list of image information. |
| // |
| // The [google.longrunning.Operation][google.longrunning.Operation] API can be |
| // used to keep track of the progress and results of the request. |
| // `Operation.metadata` contains `BatchOperationMetadata`. (progress) |
| // `Operation.response` contains `ImportProductSetsResponse`. (results) |
| // |
| // The input source of this method is a csv file on Google Cloud Storage. |
| // For the format of the csv file please see |
| // [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1p3beta1.ImportProductSetsGcsSource.csv_file_uri]. |
| ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error) |
| } |
| |
| // UnimplementedProductSearchServer can be embedded to have forward compatible implementations. |
| type UnimplementedProductSearchServer struct { |
| } |
| |
| func (*UnimplementedProductSearchServer) CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method CreateProductSet not implemented") |
| } |
| func (*UnimplementedProductSearchServer) ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method ListProductSets not implemented") |
| } |
| func (*UnimplementedProductSearchServer) GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method GetProductSet not implemented") |
| } |
| func (*UnimplementedProductSearchServer) UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method UpdateProductSet not implemented") |
| } |
| func (*UnimplementedProductSearchServer) DeleteProductSet(context.Context, *DeleteProductSetRequest) (*empty.Empty, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method DeleteProductSet not implemented") |
| } |
| func (*UnimplementedProductSearchServer) CreateProduct(context.Context, *CreateProductRequest) (*Product, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method CreateProduct not implemented") |
| } |
| func (*UnimplementedProductSearchServer) ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method ListProducts not implemented") |
| } |
| func (*UnimplementedProductSearchServer) GetProduct(context.Context, *GetProductRequest) (*Product, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method GetProduct not implemented") |
| } |
| func (*UnimplementedProductSearchServer) UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method UpdateProduct not implemented") |
| } |
| func (*UnimplementedProductSearchServer) DeleteProduct(context.Context, *DeleteProductRequest) (*empty.Empty, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method DeleteProduct not implemented") |
| } |
| func (*UnimplementedProductSearchServer) CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method CreateReferenceImage not implemented") |
| } |
| func (*UnimplementedProductSearchServer) DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*empty.Empty, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method DeleteReferenceImage not implemented") |
| } |
| func (*UnimplementedProductSearchServer) ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method ListReferenceImages not implemented") |
| } |
| func (*UnimplementedProductSearchServer) GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method GetReferenceImage not implemented") |
| } |
| func (*UnimplementedProductSearchServer) AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*empty.Empty, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method AddProductToProductSet not implemented") |
| } |
| func (*UnimplementedProductSearchServer) RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*empty.Empty, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method RemoveProductFromProductSet not implemented") |
| } |
| func (*UnimplementedProductSearchServer) ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method ListProductsInProductSet not implemented") |
| } |
| func (*UnimplementedProductSearchServer) ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error) { |
| return nil, status1.Errorf(codes.Unimplemented, "method ImportProductSets not implemented") |
| } |
| |
| func RegisterProductSearchServer(s *grpc.Server, srv ProductSearchServer) { |
| s.RegisterService(&_ProductSearch_serviceDesc, srv) |
| } |
| |
| func _ProductSearch_CreateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(CreateProductSetRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).CreateProductSet(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProductSet", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).CreateProductSet(ctx, req.(*CreateProductSetRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_ListProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(ListProductSetsRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).ListProductSets(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductSets", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).ListProductSets(ctx, req.(*ListProductSetsRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_GetProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(GetProductSetRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).GetProductSet(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/GetProductSet", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).GetProductSet(ctx, req.(*GetProductSetRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_UpdateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(UpdateProductSetRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).UpdateProductSet(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProductSet", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).UpdateProductSet(ctx, req.(*UpdateProductSetRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_DeleteProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(DeleteProductSetRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).DeleteProductSet(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProductSet", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).DeleteProductSet(ctx, req.(*DeleteProductSetRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_CreateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(CreateProductRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).CreateProduct(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/CreateProduct", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).CreateProduct(ctx, req.(*CreateProductRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_ListProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(ListProductsRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).ListProducts(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListProducts", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).ListProducts(ctx, req.(*ListProductsRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_GetProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(GetProductRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).GetProduct(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/GetProduct", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).GetProduct(ctx, req.(*GetProductRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_UpdateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(UpdateProductRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).UpdateProduct(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/UpdateProduct", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).UpdateProduct(ctx, req.(*UpdateProductRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_DeleteProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(DeleteProductRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).DeleteProduct(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteProduct", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).DeleteProduct(ctx, req.(*DeleteProductRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_CreateReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(CreateReferenceImageRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).CreateReferenceImage(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/CreateReferenceImage", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).CreateReferenceImage(ctx, req.(*CreateReferenceImageRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_DeleteReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(DeleteReferenceImageRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).DeleteReferenceImage(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/DeleteReferenceImage", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).DeleteReferenceImage(ctx, req.(*DeleteReferenceImageRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_ListReferenceImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(ListReferenceImagesRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).ListReferenceImages(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListReferenceImages", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).ListReferenceImages(ctx, req.(*ListReferenceImagesRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_GetReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(GetReferenceImageRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).GetReferenceImage(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/GetReferenceImage", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).GetReferenceImage(ctx, req.(*GetReferenceImageRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_AddProductToProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(AddProductToProductSetRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).AddProductToProductSet(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/AddProductToProductSet", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).AddProductToProductSet(ctx, req.(*AddProductToProductSetRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_RemoveProductFromProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(RemoveProductFromProductSetRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/RemoveProductFromProductSet", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, req.(*RemoveProductFromProductSetRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_ListProductsInProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(ListProductsInProductSetRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).ListProductsInProductSet(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ListProductsInProductSet", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).ListProductsInProductSet(ctx, req.(*ListProductsInProductSetRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| func _ProductSearch_ImportProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { |
| in := new(ImportProductSetsRequest) |
| if err := dec(in); err != nil { |
| return nil, err |
| } |
| if interceptor == nil { |
| return srv.(ProductSearchServer).ImportProductSets(ctx, in) |
| } |
| info := &grpc.UnaryServerInfo{ |
| Server: srv, |
| FullMethod: "/google.cloud.vision.v1p3beta1.ProductSearch/ImportProductSets", |
| } |
| handler := func(ctx context.Context, req interface{}) (interface{}, error) { |
| return srv.(ProductSearchServer).ImportProductSets(ctx, req.(*ImportProductSetsRequest)) |
| } |
| return interceptor(ctx, in, info, handler) |
| } |
| |
| var _ProductSearch_serviceDesc = grpc.ServiceDesc{ |
| ServiceName: "google.cloud.vision.v1p3beta1.ProductSearch", |
| HandlerType: (*ProductSearchServer)(nil), |
| Methods: []grpc.MethodDesc{ |
| { |
| MethodName: "CreateProductSet", |
| Handler: _ProductSearch_CreateProductSet_Handler, |
| }, |
| { |
| MethodName: "ListProductSets", |
| Handler: _ProductSearch_ListProductSets_Handler, |
| }, |
| { |
| MethodName: "GetProductSet", |
| Handler: _ProductSearch_GetProductSet_Handler, |
| }, |
| { |
| MethodName: "UpdateProductSet", |
| Handler: _ProductSearch_UpdateProductSet_Handler, |
| }, |
| { |
| MethodName: "DeleteProductSet", |
| Handler: _ProductSearch_DeleteProductSet_Handler, |
| }, |
| { |
| MethodName: "CreateProduct", |
| Handler: _ProductSearch_CreateProduct_Handler, |
| }, |
| { |
| MethodName: "ListProducts", |
| Handler: _ProductSearch_ListProducts_Handler, |
| }, |
| { |
| MethodName: "GetProduct", |
| Handler: _ProductSearch_GetProduct_Handler, |
| }, |
| { |
| MethodName: "UpdateProduct", |
| Handler: _ProductSearch_UpdateProduct_Handler, |
| }, |
| { |
| MethodName: "DeleteProduct", |
| Handler: _ProductSearch_DeleteProduct_Handler, |
| }, |
| { |
| MethodName: "CreateReferenceImage", |
| Handler: _ProductSearch_CreateReferenceImage_Handler, |
| }, |
| { |
| MethodName: "DeleteReferenceImage", |
| Handler: _ProductSearch_DeleteReferenceImage_Handler, |
| }, |
| { |
| MethodName: "ListReferenceImages", |
| Handler: _ProductSearch_ListReferenceImages_Handler, |
| }, |
| { |
| MethodName: "GetReferenceImage", |
| Handler: _ProductSearch_GetReferenceImage_Handler, |
| }, |
| { |
| MethodName: "AddProductToProductSet", |
| Handler: _ProductSearch_AddProductToProductSet_Handler, |
| }, |
| { |
| MethodName: "RemoveProductFromProductSet", |
| Handler: _ProductSearch_RemoveProductFromProductSet_Handler, |
| }, |
| { |
| MethodName: "ListProductsInProductSet", |
| Handler: _ProductSearch_ListProductsInProductSet_Handler, |
| }, |
| { |
| MethodName: "ImportProductSets", |
| Handler: _ProductSearch_ImportProductSets_Handler, |
| }, |
| }, |
| Streams: []grpc.StreamDesc{}, |
| Metadata: "google/cloud/vision/v1p3beta1/product_search_service.proto", |
| } |