1// Copyright 2020 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// Code generated by protoc-gen-go. DO NOT EDIT.
16// versions:
17// 	protoc-gen-go v1.25.0-devel
18// 	protoc        v3.13.0
19// source: google/cloud/vision/v1/product_search_service.proto
20
21package vision
22
23import (
24	context "context"
25	reflect "reflect"
26	sync "sync"
27
28	proto "github.com/golang/protobuf/proto"
29	_ "google.golang.org/genproto/googleapis/api/annotations"
30	longrunning "google.golang.org/genproto/googleapis/longrunning"
31	status "google.golang.org/genproto/googleapis/rpc/status"
32	grpc "google.golang.org/grpc"
33	codes "google.golang.org/grpc/codes"
34	status1 "google.golang.org/grpc/status"
35	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
36	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
37	emptypb "google.golang.org/protobuf/types/known/emptypb"
38	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
39	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
40)
41
42const (
43	// Verify that this generated code is sufficiently up-to-date.
44	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
45	// Verify that runtime/protoimpl is sufficiently up-to-date.
46	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
47)
48
49// This is a compile-time assertion that a sufficiently up-to-date version
50// of the legacy proto package is being used.
51const _ = proto.ProtoPackageIsVersion4
52
53// Enumerates the possible states that the batch request can be in.
54type BatchOperationMetadata_State int32
55
56const (
57	// Invalid.
58	BatchOperationMetadata_STATE_UNSPECIFIED BatchOperationMetadata_State = 0
59	// Request is actively being processed.
60	BatchOperationMetadata_PROCESSING BatchOperationMetadata_State = 1
61	// The request is done and at least one item has been successfully
62	// processed.
63	BatchOperationMetadata_SUCCESSFUL BatchOperationMetadata_State = 2
64	// The request is done and no item has been successfully processed.
65	BatchOperationMetadata_FAILED BatchOperationMetadata_State = 3
66	// The request is done after the longrunning.Operations.CancelOperation has
67	// been called by the user.  Any records that were processed before the
68	// cancel command are output as specified in the request.
69	BatchOperationMetadata_CANCELLED BatchOperationMetadata_State = 4
70)
71
72// Enum value maps for BatchOperationMetadata_State.
73var (
74	BatchOperationMetadata_State_name = map[int32]string{
75		0: "STATE_UNSPECIFIED",
76		1: "PROCESSING",
77		2: "SUCCESSFUL",
78		3: "FAILED",
79		4: "CANCELLED",
80	}
81	BatchOperationMetadata_State_value = map[string]int32{
82		"STATE_UNSPECIFIED": 0,
83		"PROCESSING":        1,
84		"SUCCESSFUL":        2,
85		"FAILED":            3,
86		"CANCELLED":         4,
87	}
88)
89
90func (x BatchOperationMetadata_State) Enum() *BatchOperationMetadata_State {
91	p := new(BatchOperationMetadata_State)
92	*p = x
93	return p
94}
95
96func (x BatchOperationMetadata_State) String() string {
97	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
98}
99
100func (BatchOperationMetadata_State) Descriptor() protoreflect.EnumDescriptor {
101	return file_google_cloud_vision_v1_product_search_service_proto_enumTypes[0].Descriptor()
102}
103
104func (BatchOperationMetadata_State) Type() protoreflect.EnumType {
105	return &file_google_cloud_vision_v1_product_search_service_proto_enumTypes[0]
106}
107
108func (x BatchOperationMetadata_State) Number() protoreflect.EnumNumber {
109	return protoreflect.EnumNumber(x)
110}
111
112// Deprecated: Use BatchOperationMetadata_State.Descriptor instead.
113func (BatchOperationMetadata_State) EnumDescriptor() ([]byte, []int) {
114	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{28, 0}
115}
116
117// A Product contains ReferenceImages.
118type Product struct {
119	state         protoimpl.MessageState
120	sizeCache     protoimpl.SizeCache
121	unknownFields protoimpl.UnknownFields
122
123	// The resource name of the product.
124	//
125	// Format is:
126	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`.
127	//
128	// This field is ignored when creating a product.
129	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
130	// The user-provided name for this Product. Must not be empty. Must be at most
131	// 4096 characters long.
132	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
133	// User-provided metadata to be stored with this product. Must be at most 4096
134	// characters long.
135	Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
136	// Immutable. The category for the product identified by the reference image. This should
137	// be one of "homegoods-v2", "apparel-v2", "toys-v2", "packagedgoods-v1" or
138	// "general-v1". The legacy categories "homegoods", "apparel", and "toys" are
139	// still supported, but these should not be used for new products.
140	ProductCategory string `protobuf:"bytes,4,opt,name=product_category,json=productCategory,proto3" json:"product_category,omitempty"`
141	// Key-value pairs that can be attached to a product. At query time,
142	// constraints can be specified based on the product_labels.
143	//
144	// Note that integer values can be provided as strings, e.g. "1199". Only
145	// strings with integer values can match a range-based restriction which is
146	// to be supported soon.
147	//
148	// Multiple values can be assigned to the same key. One product may have up to
149	// 500 product_labels.
150	//
151	// Notice that the total number of distinct product_labels over all products
152	// in one ProductSet cannot exceed 1M, otherwise the product search pipeline
153	// will refuse to work for that ProductSet.
154	ProductLabels []*Product_KeyValue `protobuf:"bytes,5,rep,name=product_labels,json=productLabels,proto3" json:"product_labels,omitempty"`
155}
156
157func (x *Product) Reset() {
158	*x = Product{}
159	if protoimpl.UnsafeEnabled {
160		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[0]
161		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
162		ms.StoreMessageInfo(mi)
163	}
164}
165
166func (x *Product) String() string {
167	return protoimpl.X.MessageStringOf(x)
168}
169
170func (*Product) ProtoMessage() {}
171
172func (x *Product) ProtoReflect() protoreflect.Message {
173	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[0]
174	if protoimpl.UnsafeEnabled && x != nil {
175		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
176		if ms.LoadMessageInfo() == nil {
177			ms.StoreMessageInfo(mi)
178		}
179		return ms
180	}
181	return mi.MessageOf(x)
182}
183
184// Deprecated: Use Product.ProtoReflect.Descriptor instead.
185func (*Product) Descriptor() ([]byte, []int) {
186	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{0}
187}
188
189func (x *Product) GetName() string {
190	if x != nil {
191		return x.Name
192	}
193	return ""
194}
195
196func (x *Product) GetDisplayName() string {
197	if x != nil {
198		return x.DisplayName
199	}
200	return ""
201}
202
203func (x *Product) GetDescription() string {
204	if x != nil {
205		return x.Description
206	}
207	return ""
208}
209
210func (x *Product) GetProductCategory() string {
211	if x != nil {
212		return x.ProductCategory
213	}
214	return ""
215}
216
217func (x *Product) GetProductLabels() []*Product_KeyValue {
218	if x != nil {
219		return x.ProductLabels
220	}
221	return nil
222}
223
224// A ProductSet contains Products. A ProductSet can contain a maximum of 1
225// million reference images. If the limit is exceeded, periodic indexing will
226// fail.
227type ProductSet struct {
228	state         protoimpl.MessageState
229	sizeCache     protoimpl.SizeCache
230	unknownFields protoimpl.UnknownFields
231
232	// The resource name of the ProductSet.
233	//
234	// Format is:
235	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`.
236	//
237	// This field is ignored when creating a ProductSet.
238	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
239	// The user-provided name for this ProductSet. Must not be empty. Must be at
240	// most 4096 characters long.
241	DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
242	// Output only. The time at which this ProductSet was last indexed. Query
243	// results will reflect all updates before this time. If this ProductSet has
244	// never been indexed, this timestamp is the default value
245	// "1970-01-01T00:00:00Z".
246	//
247	// This field is ignored when creating a ProductSet.
248	IndexTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=index_time,json=indexTime,proto3" json:"index_time,omitempty"`
249	// Output only. If there was an error with indexing the product set, the field
250	// is populated.
251	//
252	// This field is ignored when creating a ProductSet.
253	IndexError *status.Status `protobuf:"bytes,4,opt,name=index_error,json=indexError,proto3" json:"index_error,omitempty"`
254}
255
256func (x *ProductSet) Reset() {
257	*x = ProductSet{}
258	if protoimpl.UnsafeEnabled {
259		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[1]
260		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
261		ms.StoreMessageInfo(mi)
262	}
263}
264
265func (x *ProductSet) String() string {
266	return protoimpl.X.MessageStringOf(x)
267}
268
269func (*ProductSet) ProtoMessage() {}
270
271func (x *ProductSet) ProtoReflect() protoreflect.Message {
272	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[1]
273	if protoimpl.UnsafeEnabled && x != nil {
274		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
275		if ms.LoadMessageInfo() == nil {
276			ms.StoreMessageInfo(mi)
277		}
278		return ms
279	}
280	return mi.MessageOf(x)
281}
282
283// Deprecated: Use ProductSet.ProtoReflect.Descriptor instead.
284func (*ProductSet) Descriptor() ([]byte, []int) {
285	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{1}
286}
287
288func (x *ProductSet) GetName() string {
289	if x != nil {
290		return x.Name
291	}
292	return ""
293}
294
295func (x *ProductSet) GetDisplayName() string {
296	if x != nil {
297		return x.DisplayName
298	}
299	return ""
300}
301
302func (x *ProductSet) GetIndexTime() *timestamppb.Timestamp {
303	if x != nil {
304		return x.IndexTime
305	}
306	return nil
307}
308
309func (x *ProductSet) GetIndexError() *status.Status {
310	if x != nil {
311		return x.IndexError
312	}
313	return nil
314}
315
316// A `ReferenceImage` represents a product image and its associated metadata,
317// such as bounding boxes.
318type ReferenceImage struct {
319	state         protoimpl.MessageState
320	sizeCache     protoimpl.SizeCache
321	unknownFields protoimpl.UnknownFields
322
323	// The resource name of the reference image.
324	//
325	// Format is:
326	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`.
327	//
328	// This field is ignored when creating a reference image.
329	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
330	// Required. The Google Cloud Storage URI of the reference image.
331	//
332	// The URI must start with `gs://`.
333	Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
334	// Optional. Bounding polygons around the areas of interest in the reference image.
335	// If this field is empty, the system will try to detect regions of
336	// interest. At most 10 bounding polygons will be used.
337	//
338	// The provided shape is converted into a non-rotated rectangle. Once
339	// converted, the small edge of the rectangle must be greater than or equal
340	// to 300 pixels. The aspect ratio must be 1:4 or less (i.e. 1:3 is ok; 1:5
341	// is not).
342	BoundingPolys []*BoundingPoly `protobuf:"bytes,3,rep,name=bounding_polys,json=boundingPolys,proto3" json:"bounding_polys,omitempty"`
343}
344
345func (x *ReferenceImage) Reset() {
346	*x = ReferenceImage{}
347	if protoimpl.UnsafeEnabled {
348		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[2]
349		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
350		ms.StoreMessageInfo(mi)
351	}
352}
353
354func (x *ReferenceImage) String() string {
355	return protoimpl.X.MessageStringOf(x)
356}
357
358func (*ReferenceImage) ProtoMessage() {}
359
360func (x *ReferenceImage) ProtoReflect() protoreflect.Message {
361	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[2]
362	if protoimpl.UnsafeEnabled && x != nil {
363		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
364		if ms.LoadMessageInfo() == nil {
365			ms.StoreMessageInfo(mi)
366		}
367		return ms
368	}
369	return mi.MessageOf(x)
370}
371
372// Deprecated: Use ReferenceImage.ProtoReflect.Descriptor instead.
373func (*ReferenceImage) Descriptor() ([]byte, []int) {
374	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{2}
375}
376
377func (x *ReferenceImage) GetName() string {
378	if x != nil {
379		return x.Name
380	}
381	return ""
382}
383
384func (x *ReferenceImage) GetUri() string {
385	if x != nil {
386		return x.Uri
387	}
388	return ""
389}
390
391func (x *ReferenceImage) GetBoundingPolys() []*BoundingPoly {
392	if x != nil {
393		return x.BoundingPolys
394	}
395	return nil
396}
397
398// Request message for the `CreateProduct` method.
399type CreateProductRequest struct {
400	state         protoimpl.MessageState
401	sizeCache     protoimpl.SizeCache
402	unknownFields protoimpl.UnknownFields
403
404	// Required. The project in which the Product should be created.
405	//
406	// Format is
407	// `projects/PROJECT_ID/locations/LOC_ID`.
408	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
409	// Required. The product to create.
410	Product *Product `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
411	// A user-supplied resource id for this Product. If set, the server will
412	// attempt to use this value as the resource id. If it is already in use, an
413	// error is returned with code ALREADY_EXISTS. Must be at most 128 characters
414	// long. It cannot contain the character `/`.
415	ProductId string `protobuf:"bytes,3,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"`
416}
417
418func (x *CreateProductRequest) Reset() {
419	*x = CreateProductRequest{}
420	if protoimpl.UnsafeEnabled {
421		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[3]
422		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
423		ms.StoreMessageInfo(mi)
424	}
425}
426
427func (x *CreateProductRequest) String() string {
428	return protoimpl.X.MessageStringOf(x)
429}
430
431func (*CreateProductRequest) ProtoMessage() {}
432
433func (x *CreateProductRequest) ProtoReflect() protoreflect.Message {
434	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[3]
435	if protoimpl.UnsafeEnabled && x != nil {
436		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
437		if ms.LoadMessageInfo() == nil {
438			ms.StoreMessageInfo(mi)
439		}
440		return ms
441	}
442	return mi.MessageOf(x)
443}
444
445// Deprecated: Use CreateProductRequest.ProtoReflect.Descriptor instead.
446func (*CreateProductRequest) Descriptor() ([]byte, []int) {
447	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{3}
448}
449
450func (x *CreateProductRequest) GetParent() string {
451	if x != nil {
452		return x.Parent
453	}
454	return ""
455}
456
457func (x *CreateProductRequest) GetProduct() *Product {
458	if x != nil {
459		return x.Product
460	}
461	return nil
462}
463
464func (x *CreateProductRequest) GetProductId() string {
465	if x != nil {
466		return x.ProductId
467	}
468	return ""
469}
470
471// Request message for the `ListProducts` method.
472type ListProductsRequest struct {
473	state         protoimpl.MessageState
474	sizeCache     protoimpl.SizeCache
475	unknownFields protoimpl.UnknownFields
476
477	// Required. The project OR ProductSet from which Products should be listed.
478	//
479	// Format:
480	// `projects/PROJECT_ID/locations/LOC_ID`
481	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
482	// The maximum number of items to return. Default 10, maximum 100.
483	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
484	// The next_page_token returned from a previous List request, if any.
485	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
486}
487
488func (x *ListProductsRequest) Reset() {
489	*x = ListProductsRequest{}
490	if protoimpl.UnsafeEnabled {
491		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[4]
492		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
493		ms.StoreMessageInfo(mi)
494	}
495}
496
497func (x *ListProductsRequest) String() string {
498	return protoimpl.X.MessageStringOf(x)
499}
500
501func (*ListProductsRequest) ProtoMessage() {}
502
503func (x *ListProductsRequest) ProtoReflect() protoreflect.Message {
504	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[4]
505	if protoimpl.UnsafeEnabled && x != nil {
506		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
507		if ms.LoadMessageInfo() == nil {
508			ms.StoreMessageInfo(mi)
509		}
510		return ms
511	}
512	return mi.MessageOf(x)
513}
514
515// Deprecated: Use ListProductsRequest.ProtoReflect.Descriptor instead.
516func (*ListProductsRequest) Descriptor() ([]byte, []int) {
517	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{4}
518}
519
520func (x *ListProductsRequest) GetParent() string {
521	if x != nil {
522		return x.Parent
523	}
524	return ""
525}
526
527func (x *ListProductsRequest) GetPageSize() int32 {
528	if x != nil {
529		return x.PageSize
530	}
531	return 0
532}
533
534func (x *ListProductsRequest) GetPageToken() string {
535	if x != nil {
536		return x.PageToken
537	}
538	return ""
539}
540
541// Response message for the `ListProducts` method.
542type ListProductsResponse struct {
543	state         protoimpl.MessageState
544	sizeCache     protoimpl.SizeCache
545	unknownFields protoimpl.UnknownFields
546
547	// List of products.
548	Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"`
549	// Token to retrieve the next page of results, or empty if there are no more
550	// results in the list.
551	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
552}
553
554func (x *ListProductsResponse) Reset() {
555	*x = ListProductsResponse{}
556	if protoimpl.UnsafeEnabled {
557		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[5]
558		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
559		ms.StoreMessageInfo(mi)
560	}
561}
562
563func (x *ListProductsResponse) String() string {
564	return protoimpl.X.MessageStringOf(x)
565}
566
567func (*ListProductsResponse) ProtoMessage() {}
568
569func (x *ListProductsResponse) ProtoReflect() protoreflect.Message {
570	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[5]
571	if protoimpl.UnsafeEnabled && x != nil {
572		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
573		if ms.LoadMessageInfo() == nil {
574			ms.StoreMessageInfo(mi)
575		}
576		return ms
577	}
578	return mi.MessageOf(x)
579}
580
581// Deprecated: Use ListProductsResponse.ProtoReflect.Descriptor instead.
582func (*ListProductsResponse) Descriptor() ([]byte, []int) {
583	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{5}
584}
585
586func (x *ListProductsResponse) GetProducts() []*Product {
587	if x != nil {
588		return x.Products
589	}
590	return nil
591}
592
593func (x *ListProductsResponse) GetNextPageToken() string {
594	if x != nil {
595		return x.NextPageToken
596	}
597	return ""
598}
599
600// Request message for the `GetProduct` method.
601type GetProductRequest struct {
602	state         protoimpl.MessageState
603	sizeCache     protoimpl.SizeCache
604	unknownFields protoimpl.UnknownFields
605
606	// Required. Resource name of the Product to get.
607	//
608	// Format is:
609	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
610	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
611}
612
613func (x *GetProductRequest) Reset() {
614	*x = GetProductRequest{}
615	if protoimpl.UnsafeEnabled {
616		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[6]
617		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
618		ms.StoreMessageInfo(mi)
619	}
620}
621
622func (x *GetProductRequest) String() string {
623	return protoimpl.X.MessageStringOf(x)
624}
625
626func (*GetProductRequest) ProtoMessage() {}
627
628func (x *GetProductRequest) ProtoReflect() protoreflect.Message {
629	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[6]
630	if protoimpl.UnsafeEnabled && x != nil {
631		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
632		if ms.LoadMessageInfo() == nil {
633			ms.StoreMessageInfo(mi)
634		}
635		return ms
636	}
637	return mi.MessageOf(x)
638}
639
640// Deprecated: Use GetProductRequest.ProtoReflect.Descriptor instead.
641func (*GetProductRequest) Descriptor() ([]byte, []int) {
642	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{6}
643}
644
645func (x *GetProductRequest) GetName() string {
646	if x != nil {
647		return x.Name
648	}
649	return ""
650}
651
652// Request message for the `UpdateProduct` method.
653type UpdateProductRequest struct {
654	state         protoimpl.MessageState
655	sizeCache     protoimpl.SizeCache
656	unknownFields protoimpl.UnknownFields
657
658	// Required. The Product resource which replaces the one on the server.
659	// product.name is immutable.
660	Product *Product `protobuf:"bytes,1,opt,name=product,proto3" json:"product,omitempty"`
661	// The [FieldMask][google.protobuf.FieldMask] that specifies which fields
662	// to update.
663	// If update_mask isn't specified, all mutable fields are to be updated.
664	// Valid mask paths include `product_labels`, `display_name`, and
665	// `description`.
666	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
667}
668
669func (x *UpdateProductRequest) Reset() {
670	*x = UpdateProductRequest{}
671	if protoimpl.UnsafeEnabled {
672		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[7]
673		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
674		ms.StoreMessageInfo(mi)
675	}
676}
677
678func (x *UpdateProductRequest) String() string {
679	return protoimpl.X.MessageStringOf(x)
680}
681
682func (*UpdateProductRequest) ProtoMessage() {}
683
684func (x *UpdateProductRequest) ProtoReflect() protoreflect.Message {
685	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[7]
686	if protoimpl.UnsafeEnabled && x != nil {
687		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
688		if ms.LoadMessageInfo() == nil {
689			ms.StoreMessageInfo(mi)
690		}
691		return ms
692	}
693	return mi.MessageOf(x)
694}
695
696// Deprecated: Use UpdateProductRequest.ProtoReflect.Descriptor instead.
697func (*UpdateProductRequest) Descriptor() ([]byte, []int) {
698	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{7}
699}
700
701func (x *UpdateProductRequest) GetProduct() *Product {
702	if x != nil {
703		return x.Product
704	}
705	return nil
706}
707
708func (x *UpdateProductRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
709	if x != nil {
710		return x.UpdateMask
711	}
712	return nil
713}
714
715// Request message for the `DeleteProduct` method.
716type DeleteProductRequest struct {
717	state         protoimpl.MessageState
718	sizeCache     protoimpl.SizeCache
719	unknownFields protoimpl.UnknownFields
720
721	// Required. Resource name of product to delete.
722	//
723	// Format is:
724	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
725	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
726}
727
728func (x *DeleteProductRequest) Reset() {
729	*x = DeleteProductRequest{}
730	if protoimpl.UnsafeEnabled {
731		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[8]
732		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
733		ms.StoreMessageInfo(mi)
734	}
735}
736
737func (x *DeleteProductRequest) String() string {
738	return protoimpl.X.MessageStringOf(x)
739}
740
741func (*DeleteProductRequest) ProtoMessage() {}
742
743func (x *DeleteProductRequest) ProtoReflect() protoreflect.Message {
744	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[8]
745	if protoimpl.UnsafeEnabled && x != nil {
746		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
747		if ms.LoadMessageInfo() == nil {
748			ms.StoreMessageInfo(mi)
749		}
750		return ms
751	}
752	return mi.MessageOf(x)
753}
754
755// Deprecated: Use DeleteProductRequest.ProtoReflect.Descriptor instead.
756func (*DeleteProductRequest) Descriptor() ([]byte, []int) {
757	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{8}
758}
759
760func (x *DeleteProductRequest) GetName() string {
761	if x != nil {
762		return x.Name
763	}
764	return ""
765}
766
767// Request message for the `CreateProductSet` method.
768type CreateProductSetRequest struct {
769	state         protoimpl.MessageState
770	sizeCache     protoimpl.SizeCache
771	unknownFields protoimpl.UnknownFields
772
773	// Required. The project in which the ProductSet should be created.
774	//
775	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
776	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
777	// Required. The ProductSet to create.
778	ProductSet *ProductSet `protobuf:"bytes,2,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"`
779	// A user-supplied resource id for this ProductSet. If set, the server will
780	// attempt to use this value as the resource id. If it is already in use, an
781	// error is returned with code ALREADY_EXISTS. Must be at most 128 characters
782	// long. It cannot contain the character `/`.
783	ProductSetId string `protobuf:"bytes,3,opt,name=product_set_id,json=productSetId,proto3" json:"product_set_id,omitempty"`
784}
785
786func (x *CreateProductSetRequest) Reset() {
787	*x = CreateProductSetRequest{}
788	if protoimpl.UnsafeEnabled {
789		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[9]
790		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
791		ms.StoreMessageInfo(mi)
792	}
793}
794
795func (x *CreateProductSetRequest) String() string {
796	return protoimpl.X.MessageStringOf(x)
797}
798
799func (*CreateProductSetRequest) ProtoMessage() {}
800
801func (x *CreateProductSetRequest) ProtoReflect() protoreflect.Message {
802	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[9]
803	if protoimpl.UnsafeEnabled && x != nil {
804		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
805		if ms.LoadMessageInfo() == nil {
806			ms.StoreMessageInfo(mi)
807		}
808		return ms
809	}
810	return mi.MessageOf(x)
811}
812
813// Deprecated: Use CreateProductSetRequest.ProtoReflect.Descriptor instead.
814func (*CreateProductSetRequest) Descriptor() ([]byte, []int) {
815	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{9}
816}
817
818func (x *CreateProductSetRequest) GetParent() string {
819	if x != nil {
820		return x.Parent
821	}
822	return ""
823}
824
825func (x *CreateProductSetRequest) GetProductSet() *ProductSet {
826	if x != nil {
827		return x.ProductSet
828	}
829	return nil
830}
831
832func (x *CreateProductSetRequest) GetProductSetId() string {
833	if x != nil {
834		return x.ProductSetId
835	}
836	return ""
837}
838
839// Request message for the `ListProductSets` method.
840type ListProductSetsRequest struct {
841	state         protoimpl.MessageState
842	sizeCache     protoimpl.SizeCache
843	unknownFields protoimpl.UnknownFields
844
845	// Required. The project from which ProductSets should be listed.
846	//
847	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
848	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
849	// The maximum number of items to return. Default 10, maximum 100.
850	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
851	// The next_page_token returned from a previous List request, if any.
852	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
853}
854
855func (x *ListProductSetsRequest) Reset() {
856	*x = ListProductSetsRequest{}
857	if protoimpl.UnsafeEnabled {
858		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[10]
859		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
860		ms.StoreMessageInfo(mi)
861	}
862}
863
864func (x *ListProductSetsRequest) String() string {
865	return protoimpl.X.MessageStringOf(x)
866}
867
868func (*ListProductSetsRequest) ProtoMessage() {}
869
870func (x *ListProductSetsRequest) ProtoReflect() protoreflect.Message {
871	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[10]
872	if protoimpl.UnsafeEnabled && x != nil {
873		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
874		if ms.LoadMessageInfo() == nil {
875			ms.StoreMessageInfo(mi)
876		}
877		return ms
878	}
879	return mi.MessageOf(x)
880}
881
882// Deprecated: Use ListProductSetsRequest.ProtoReflect.Descriptor instead.
883func (*ListProductSetsRequest) Descriptor() ([]byte, []int) {
884	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{10}
885}
886
887func (x *ListProductSetsRequest) GetParent() string {
888	if x != nil {
889		return x.Parent
890	}
891	return ""
892}
893
894func (x *ListProductSetsRequest) GetPageSize() int32 {
895	if x != nil {
896		return x.PageSize
897	}
898	return 0
899}
900
901func (x *ListProductSetsRequest) GetPageToken() string {
902	if x != nil {
903		return x.PageToken
904	}
905	return ""
906}
907
908// Response message for the `ListProductSets` method.
909type ListProductSetsResponse struct {
910	state         protoimpl.MessageState
911	sizeCache     protoimpl.SizeCache
912	unknownFields protoimpl.UnknownFields
913
914	// List of ProductSets.
915	ProductSets []*ProductSet `protobuf:"bytes,1,rep,name=product_sets,json=productSets,proto3" json:"product_sets,omitempty"`
916	// Token to retrieve the next page of results, or empty if there are no more
917	// results in the list.
918	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
919}
920
921func (x *ListProductSetsResponse) Reset() {
922	*x = ListProductSetsResponse{}
923	if protoimpl.UnsafeEnabled {
924		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[11]
925		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
926		ms.StoreMessageInfo(mi)
927	}
928}
929
930func (x *ListProductSetsResponse) String() string {
931	return protoimpl.X.MessageStringOf(x)
932}
933
934func (*ListProductSetsResponse) ProtoMessage() {}
935
936func (x *ListProductSetsResponse) ProtoReflect() protoreflect.Message {
937	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[11]
938	if protoimpl.UnsafeEnabled && x != nil {
939		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
940		if ms.LoadMessageInfo() == nil {
941			ms.StoreMessageInfo(mi)
942		}
943		return ms
944	}
945	return mi.MessageOf(x)
946}
947
948// Deprecated: Use ListProductSetsResponse.ProtoReflect.Descriptor instead.
949func (*ListProductSetsResponse) Descriptor() ([]byte, []int) {
950	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{11}
951}
952
953func (x *ListProductSetsResponse) GetProductSets() []*ProductSet {
954	if x != nil {
955		return x.ProductSets
956	}
957	return nil
958}
959
960func (x *ListProductSetsResponse) GetNextPageToken() string {
961	if x != nil {
962		return x.NextPageToken
963	}
964	return ""
965}
966
967// Request message for the `GetProductSet` method.
968type GetProductSetRequest struct {
969	state         protoimpl.MessageState
970	sizeCache     protoimpl.SizeCache
971	unknownFields protoimpl.UnknownFields
972
973	// Required. Resource name of the ProductSet to get.
974	//
975	// Format is:
976	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
977	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
978}
979
980func (x *GetProductSetRequest) Reset() {
981	*x = GetProductSetRequest{}
982	if protoimpl.UnsafeEnabled {
983		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[12]
984		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
985		ms.StoreMessageInfo(mi)
986	}
987}
988
989func (x *GetProductSetRequest) String() string {
990	return protoimpl.X.MessageStringOf(x)
991}
992
993func (*GetProductSetRequest) ProtoMessage() {}
994
995func (x *GetProductSetRequest) ProtoReflect() protoreflect.Message {
996	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[12]
997	if protoimpl.UnsafeEnabled && x != nil {
998		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
999		if ms.LoadMessageInfo() == nil {
1000			ms.StoreMessageInfo(mi)
1001		}
1002		return ms
1003	}
1004	return mi.MessageOf(x)
1005}
1006
1007// Deprecated: Use GetProductSetRequest.ProtoReflect.Descriptor instead.
1008func (*GetProductSetRequest) Descriptor() ([]byte, []int) {
1009	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{12}
1010}
1011
1012func (x *GetProductSetRequest) GetName() string {
1013	if x != nil {
1014		return x.Name
1015	}
1016	return ""
1017}
1018
1019// Request message for the `UpdateProductSet` method.
1020type UpdateProductSetRequest struct {
1021	state         protoimpl.MessageState
1022	sizeCache     protoimpl.SizeCache
1023	unknownFields protoimpl.UnknownFields
1024
1025	// Required. The ProductSet resource which replaces the one on the server.
1026	ProductSet *ProductSet `protobuf:"bytes,1,opt,name=product_set,json=productSet,proto3" json:"product_set,omitempty"`
1027	// The [FieldMask][google.protobuf.FieldMask] that specifies which fields to
1028	// update.
1029	// If update_mask isn't specified, all mutable fields are to be updated.
1030	// Valid mask path is `display_name`.
1031	UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"`
1032}
1033
1034func (x *UpdateProductSetRequest) Reset() {
1035	*x = UpdateProductSetRequest{}
1036	if protoimpl.UnsafeEnabled {
1037		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[13]
1038		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1039		ms.StoreMessageInfo(mi)
1040	}
1041}
1042
1043func (x *UpdateProductSetRequest) String() string {
1044	return protoimpl.X.MessageStringOf(x)
1045}
1046
1047func (*UpdateProductSetRequest) ProtoMessage() {}
1048
1049func (x *UpdateProductSetRequest) ProtoReflect() protoreflect.Message {
1050	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[13]
1051	if protoimpl.UnsafeEnabled && x != nil {
1052		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1053		if ms.LoadMessageInfo() == nil {
1054			ms.StoreMessageInfo(mi)
1055		}
1056		return ms
1057	}
1058	return mi.MessageOf(x)
1059}
1060
1061// Deprecated: Use UpdateProductSetRequest.ProtoReflect.Descriptor instead.
1062func (*UpdateProductSetRequest) Descriptor() ([]byte, []int) {
1063	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{13}
1064}
1065
1066func (x *UpdateProductSetRequest) GetProductSet() *ProductSet {
1067	if x != nil {
1068		return x.ProductSet
1069	}
1070	return nil
1071}
1072
1073func (x *UpdateProductSetRequest) GetUpdateMask() *fieldmaskpb.FieldMask {
1074	if x != nil {
1075		return x.UpdateMask
1076	}
1077	return nil
1078}
1079
1080// Request message for the `DeleteProductSet` method.
1081type DeleteProductSetRequest struct {
1082	state         protoimpl.MessageState
1083	sizeCache     protoimpl.SizeCache
1084	unknownFields protoimpl.UnknownFields
1085
1086	// Required. Resource name of the ProductSet to delete.
1087	//
1088	// Format is:
1089	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
1090	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
1091}
1092
1093func (x *DeleteProductSetRequest) Reset() {
1094	*x = DeleteProductSetRequest{}
1095	if protoimpl.UnsafeEnabled {
1096		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[14]
1097		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1098		ms.StoreMessageInfo(mi)
1099	}
1100}
1101
1102func (x *DeleteProductSetRequest) String() string {
1103	return protoimpl.X.MessageStringOf(x)
1104}
1105
1106func (*DeleteProductSetRequest) ProtoMessage() {}
1107
1108func (x *DeleteProductSetRequest) ProtoReflect() protoreflect.Message {
1109	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[14]
1110	if protoimpl.UnsafeEnabled && x != nil {
1111		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1112		if ms.LoadMessageInfo() == nil {
1113			ms.StoreMessageInfo(mi)
1114		}
1115		return ms
1116	}
1117	return mi.MessageOf(x)
1118}
1119
1120// Deprecated: Use DeleteProductSetRequest.ProtoReflect.Descriptor instead.
1121func (*DeleteProductSetRequest) Descriptor() ([]byte, []int) {
1122	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{14}
1123}
1124
1125func (x *DeleteProductSetRequest) GetName() string {
1126	if x != nil {
1127		return x.Name
1128	}
1129	return ""
1130}
1131
1132// Request message for the `CreateReferenceImage` method.
1133type CreateReferenceImageRequest struct {
1134	state         protoimpl.MessageState
1135	sizeCache     protoimpl.SizeCache
1136	unknownFields protoimpl.UnknownFields
1137
1138	// Required. Resource name of the product in which to create the reference image.
1139	//
1140	// Format is
1141	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`.
1142	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
1143	// Required. The reference image to create.
1144	// If an image ID is specified, it is ignored.
1145	ReferenceImage *ReferenceImage `protobuf:"bytes,2,opt,name=reference_image,json=referenceImage,proto3" json:"reference_image,omitempty"`
1146	// A user-supplied resource id for the ReferenceImage to be added. If set,
1147	// the server will attempt to use this value as the resource id. If it is
1148	// already in use, an error is returned with code ALREADY_EXISTS. Must be at
1149	// most 128 characters long. It cannot contain the character `/`.
1150	ReferenceImageId string `protobuf:"bytes,3,opt,name=reference_image_id,json=referenceImageId,proto3" json:"reference_image_id,omitempty"`
1151}
1152
1153func (x *CreateReferenceImageRequest) Reset() {
1154	*x = CreateReferenceImageRequest{}
1155	if protoimpl.UnsafeEnabled {
1156		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[15]
1157		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1158		ms.StoreMessageInfo(mi)
1159	}
1160}
1161
1162func (x *CreateReferenceImageRequest) String() string {
1163	return protoimpl.X.MessageStringOf(x)
1164}
1165
1166func (*CreateReferenceImageRequest) ProtoMessage() {}
1167
1168func (x *CreateReferenceImageRequest) ProtoReflect() protoreflect.Message {
1169	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[15]
1170	if protoimpl.UnsafeEnabled && x != nil {
1171		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1172		if ms.LoadMessageInfo() == nil {
1173			ms.StoreMessageInfo(mi)
1174		}
1175		return ms
1176	}
1177	return mi.MessageOf(x)
1178}
1179
1180// Deprecated: Use CreateReferenceImageRequest.ProtoReflect.Descriptor instead.
1181func (*CreateReferenceImageRequest) Descriptor() ([]byte, []int) {
1182	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{15}
1183}
1184
1185func (x *CreateReferenceImageRequest) GetParent() string {
1186	if x != nil {
1187		return x.Parent
1188	}
1189	return ""
1190}
1191
1192func (x *CreateReferenceImageRequest) GetReferenceImage() *ReferenceImage {
1193	if x != nil {
1194		return x.ReferenceImage
1195	}
1196	return nil
1197}
1198
1199func (x *CreateReferenceImageRequest) GetReferenceImageId() string {
1200	if x != nil {
1201		return x.ReferenceImageId
1202	}
1203	return ""
1204}
1205
1206// Request message for the `ListReferenceImages` method.
1207type ListReferenceImagesRequest struct {
1208	state         protoimpl.MessageState
1209	sizeCache     protoimpl.SizeCache
1210	unknownFields protoimpl.UnknownFields
1211
1212	// Required. Resource name of the product containing the reference images.
1213	//
1214	// Format is
1215	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`.
1216	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
1217	// The maximum number of items to return. Default 10, maximum 100.
1218	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
1219	// A token identifying a page of results to be returned. This is the value
1220	// of `nextPageToken` returned in a previous reference image list request.
1221	//
1222	// Defaults to the first page if not specified.
1223	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
1224}
1225
1226func (x *ListReferenceImagesRequest) Reset() {
1227	*x = ListReferenceImagesRequest{}
1228	if protoimpl.UnsafeEnabled {
1229		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[16]
1230		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1231		ms.StoreMessageInfo(mi)
1232	}
1233}
1234
1235func (x *ListReferenceImagesRequest) String() string {
1236	return protoimpl.X.MessageStringOf(x)
1237}
1238
1239func (*ListReferenceImagesRequest) ProtoMessage() {}
1240
1241func (x *ListReferenceImagesRequest) ProtoReflect() protoreflect.Message {
1242	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[16]
1243	if protoimpl.UnsafeEnabled && x != nil {
1244		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1245		if ms.LoadMessageInfo() == nil {
1246			ms.StoreMessageInfo(mi)
1247		}
1248		return ms
1249	}
1250	return mi.MessageOf(x)
1251}
1252
1253// Deprecated: Use ListReferenceImagesRequest.ProtoReflect.Descriptor instead.
1254func (*ListReferenceImagesRequest) Descriptor() ([]byte, []int) {
1255	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{16}
1256}
1257
1258func (x *ListReferenceImagesRequest) GetParent() string {
1259	if x != nil {
1260		return x.Parent
1261	}
1262	return ""
1263}
1264
1265func (x *ListReferenceImagesRequest) GetPageSize() int32 {
1266	if x != nil {
1267		return x.PageSize
1268	}
1269	return 0
1270}
1271
1272func (x *ListReferenceImagesRequest) GetPageToken() string {
1273	if x != nil {
1274		return x.PageToken
1275	}
1276	return ""
1277}
1278
1279// Response message for the `ListReferenceImages` method.
1280type ListReferenceImagesResponse struct {
1281	state         protoimpl.MessageState
1282	sizeCache     protoimpl.SizeCache
1283	unknownFields protoimpl.UnknownFields
1284
1285	// The list of reference images.
1286	ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"`
1287	// The maximum number of items to return. Default 10, maximum 100.
1288	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
1289	// The next_page_token returned from a previous List request, if any.
1290	NextPageToken string `protobuf:"bytes,3,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1291}
1292
1293func (x *ListReferenceImagesResponse) Reset() {
1294	*x = ListReferenceImagesResponse{}
1295	if protoimpl.UnsafeEnabled {
1296		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[17]
1297		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1298		ms.StoreMessageInfo(mi)
1299	}
1300}
1301
1302func (x *ListReferenceImagesResponse) String() string {
1303	return protoimpl.X.MessageStringOf(x)
1304}
1305
1306func (*ListReferenceImagesResponse) ProtoMessage() {}
1307
1308func (x *ListReferenceImagesResponse) ProtoReflect() protoreflect.Message {
1309	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[17]
1310	if protoimpl.UnsafeEnabled && x != nil {
1311		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1312		if ms.LoadMessageInfo() == nil {
1313			ms.StoreMessageInfo(mi)
1314		}
1315		return ms
1316	}
1317	return mi.MessageOf(x)
1318}
1319
1320// Deprecated: Use ListReferenceImagesResponse.ProtoReflect.Descriptor instead.
1321func (*ListReferenceImagesResponse) Descriptor() ([]byte, []int) {
1322	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{17}
1323}
1324
1325func (x *ListReferenceImagesResponse) GetReferenceImages() []*ReferenceImage {
1326	if x != nil {
1327		return x.ReferenceImages
1328	}
1329	return nil
1330}
1331
1332func (x *ListReferenceImagesResponse) GetPageSize() int32 {
1333	if x != nil {
1334		return x.PageSize
1335	}
1336	return 0
1337}
1338
1339func (x *ListReferenceImagesResponse) GetNextPageToken() string {
1340	if x != nil {
1341		return x.NextPageToken
1342	}
1343	return ""
1344}
1345
1346// Request message for the `GetReferenceImage` method.
1347type GetReferenceImageRequest struct {
1348	state         protoimpl.MessageState
1349	sizeCache     protoimpl.SizeCache
1350	unknownFields protoimpl.UnknownFields
1351
1352	// Required. The resource name of the ReferenceImage to get.
1353	//
1354	// Format is:
1355	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`.
1356	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
1357}
1358
1359func (x *GetReferenceImageRequest) Reset() {
1360	*x = GetReferenceImageRequest{}
1361	if protoimpl.UnsafeEnabled {
1362		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[18]
1363		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1364		ms.StoreMessageInfo(mi)
1365	}
1366}
1367
1368func (x *GetReferenceImageRequest) String() string {
1369	return protoimpl.X.MessageStringOf(x)
1370}
1371
1372func (*GetReferenceImageRequest) ProtoMessage() {}
1373
1374func (x *GetReferenceImageRequest) ProtoReflect() protoreflect.Message {
1375	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[18]
1376	if protoimpl.UnsafeEnabled && x != nil {
1377		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1378		if ms.LoadMessageInfo() == nil {
1379			ms.StoreMessageInfo(mi)
1380		}
1381		return ms
1382	}
1383	return mi.MessageOf(x)
1384}
1385
1386// Deprecated: Use GetReferenceImageRequest.ProtoReflect.Descriptor instead.
1387func (*GetReferenceImageRequest) Descriptor() ([]byte, []int) {
1388	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{18}
1389}
1390
1391func (x *GetReferenceImageRequest) GetName() string {
1392	if x != nil {
1393		return x.Name
1394	}
1395	return ""
1396}
1397
1398// Request message for the `DeleteReferenceImage` method.
1399type DeleteReferenceImageRequest struct {
1400	state         protoimpl.MessageState
1401	sizeCache     protoimpl.SizeCache
1402	unknownFields protoimpl.UnknownFields
1403
1404	// Required. The resource name of the reference image to delete.
1405	//
1406	// Format is:
1407	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID/referenceImages/IMAGE_ID`
1408	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
1409}
1410
1411func (x *DeleteReferenceImageRequest) Reset() {
1412	*x = DeleteReferenceImageRequest{}
1413	if protoimpl.UnsafeEnabled {
1414		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[19]
1415		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1416		ms.StoreMessageInfo(mi)
1417	}
1418}
1419
1420func (x *DeleteReferenceImageRequest) String() string {
1421	return protoimpl.X.MessageStringOf(x)
1422}
1423
1424func (*DeleteReferenceImageRequest) ProtoMessage() {}
1425
1426func (x *DeleteReferenceImageRequest) ProtoReflect() protoreflect.Message {
1427	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[19]
1428	if protoimpl.UnsafeEnabled && x != nil {
1429		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1430		if ms.LoadMessageInfo() == nil {
1431			ms.StoreMessageInfo(mi)
1432		}
1433		return ms
1434	}
1435	return mi.MessageOf(x)
1436}
1437
1438// Deprecated: Use DeleteReferenceImageRequest.ProtoReflect.Descriptor instead.
1439func (*DeleteReferenceImageRequest) Descriptor() ([]byte, []int) {
1440	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{19}
1441}
1442
1443func (x *DeleteReferenceImageRequest) GetName() string {
1444	if x != nil {
1445		return x.Name
1446	}
1447	return ""
1448}
1449
1450// Request message for the `AddProductToProductSet` method.
1451type AddProductToProductSetRequest struct {
1452	state         protoimpl.MessageState
1453	sizeCache     protoimpl.SizeCache
1454	unknownFields protoimpl.UnknownFields
1455
1456	// Required. The resource name for the ProductSet to modify.
1457	//
1458	// Format is:
1459	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
1460	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
1461	// Required. The resource name for the Product to be added to this ProductSet.
1462	//
1463	// Format is:
1464	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
1465	Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
1466}
1467
1468func (x *AddProductToProductSetRequest) Reset() {
1469	*x = AddProductToProductSetRequest{}
1470	if protoimpl.UnsafeEnabled {
1471		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[20]
1472		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1473		ms.StoreMessageInfo(mi)
1474	}
1475}
1476
1477func (x *AddProductToProductSetRequest) String() string {
1478	return protoimpl.X.MessageStringOf(x)
1479}
1480
1481func (*AddProductToProductSetRequest) ProtoMessage() {}
1482
1483func (x *AddProductToProductSetRequest) ProtoReflect() protoreflect.Message {
1484	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[20]
1485	if protoimpl.UnsafeEnabled && x != nil {
1486		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1487		if ms.LoadMessageInfo() == nil {
1488			ms.StoreMessageInfo(mi)
1489		}
1490		return ms
1491	}
1492	return mi.MessageOf(x)
1493}
1494
1495// Deprecated: Use AddProductToProductSetRequest.ProtoReflect.Descriptor instead.
1496func (*AddProductToProductSetRequest) Descriptor() ([]byte, []int) {
1497	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{20}
1498}
1499
1500func (x *AddProductToProductSetRequest) GetName() string {
1501	if x != nil {
1502		return x.Name
1503	}
1504	return ""
1505}
1506
1507func (x *AddProductToProductSetRequest) GetProduct() string {
1508	if x != nil {
1509		return x.Product
1510	}
1511	return ""
1512}
1513
1514// Request message for the `RemoveProductFromProductSet` method.
1515type RemoveProductFromProductSetRequest struct {
1516	state         protoimpl.MessageState
1517	sizeCache     protoimpl.SizeCache
1518	unknownFields protoimpl.UnknownFields
1519
1520	// Required. The resource name for the ProductSet to modify.
1521	//
1522	// Format is:
1523	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
1524	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
1525	// Required. The resource name for the Product to be removed from this ProductSet.
1526	//
1527	// Format is:
1528	// `projects/PROJECT_ID/locations/LOC_ID/products/PRODUCT_ID`
1529	Product string `protobuf:"bytes,2,opt,name=product,proto3" json:"product,omitempty"`
1530}
1531
1532func (x *RemoveProductFromProductSetRequest) Reset() {
1533	*x = RemoveProductFromProductSetRequest{}
1534	if protoimpl.UnsafeEnabled {
1535		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[21]
1536		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1537		ms.StoreMessageInfo(mi)
1538	}
1539}
1540
1541func (x *RemoveProductFromProductSetRequest) String() string {
1542	return protoimpl.X.MessageStringOf(x)
1543}
1544
1545func (*RemoveProductFromProductSetRequest) ProtoMessage() {}
1546
1547func (x *RemoveProductFromProductSetRequest) ProtoReflect() protoreflect.Message {
1548	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[21]
1549	if protoimpl.UnsafeEnabled && x != nil {
1550		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1551		if ms.LoadMessageInfo() == nil {
1552			ms.StoreMessageInfo(mi)
1553		}
1554		return ms
1555	}
1556	return mi.MessageOf(x)
1557}
1558
1559// Deprecated: Use RemoveProductFromProductSetRequest.ProtoReflect.Descriptor instead.
1560func (*RemoveProductFromProductSetRequest) Descriptor() ([]byte, []int) {
1561	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{21}
1562}
1563
1564func (x *RemoveProductFromProductSetRequest) GetName() string {
1565	if x != nil {
1566		return x.Name
1567	}
1568	return ""
1569}
1570
1571func (x *RemoveProductFromProductSetRequest) GetProduct() string {
1572	if x != nil {
1573		return x.Product
1574	}
1575	return ""
1576}
1577
1578// Request message for the `ListProductsInProductSet` method.
1579type ListProductsInProductSetRequest struct {
1580	state         protoimpl.MessageState
1581	sizeCache     protoimpl.SizeCache
1582	unknownFields protoimpl.UnknownFields
1583
1584	// Required. The ProductSet resource for which to retrieve Products.
1585	//
1586	// Format is:
1587	// `projects/PROJECT_ID/locations/LOC_ID/productSets/PRODUCT_SET_ID`
1588	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
1589	// The maximum number of items to return. Default 10, maximum 100.
1590	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
1591	// The next_page_token returned from a previous List request, if any.
1592	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
1593}
1594
1595func (x *ListProductsInProductSetRequest) Reset() {
1596	*x = ListProductsInProductSetRequest{}
1597	if protoimpl.UnsafeEnabled {
1598		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[22]
1599		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1600		ms.StoreMessageInfo(mi)
1601	}
1602}
1603
1604func (x *ListProductsInProductSetRequest) String() string {
1605	return protoimpl.X.MessageStringOf(x)
1606}
1607
1608func (*ListProductsInProductSetRequest) ProtoMessage() {}
1609
1610func (x *ListProductsInProductSetRequest) ProtoReflect() protoreflect.Message {
1611	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[22]
1612	if protoimpl.UnsafeEnabled && x != nil {
1613		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1614		if ms.LoadMessageInfo() == nil {
1615			ms.StoreMessageInfo(mi)
1616		}
1617		return ms
1618	}
1619	return mi.MessageOf(x)
1620}
1621
1622// Deprecated: Use ListProductsInProductSetRequest.ProtoReflect.Descriptor instead.
1623func (*ListProductsInProductSetRequest) Descriptor() ([]byte, []int) {
1624	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{22}
1625}
1626
1627func (x *ListProductsInProductSetRequest) GetName() string {
1628	if x != nil {
1629		return x.Name
1630	}
1631	return ""
1632}
1633
1634func (x *ListProductsInProductSetRequest) GetPageSize() int32 {
1635	if x != nil {
1636		return x.PageSize
1637	}
1638	return 0
1639}
1640
1641func (x *ListProductsInProductSetRequest) GetPageToken() string {
1642	if x != nil {
1643		return x.PageToken
1644	}
1645	return ""
1646}
1647
1648// Response message for the `ListProductsInProductSet` method.
1649type ListProductsInProductSetResponse struct {
1650	state         protoimpl.MessageState
1651	sizeCache     protoimpl.SizeCache
1652	unknownFields protoimpl.UnknownFields
1653
1654	// The list of Products.
1655	Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"`
1656	// Token to retrieve the next page of results, or empty if there are no more
1657	// results in the list.
1658	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
1659}
1660
1661func (x *ListProductsInProductSetResponse) Reset() {
1662	*x = ListProductsInProductSetResponse{}
1663	if protoimpl.UnsafeEnabled {
1664		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[23]
1665		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1666		ms.StoreMessageInfo(mi)
1667	}
1668}
1669
1670func (x *ListProductsInProductSetResponse) String() string {
1671	return protoimpl.X.MessageStringOf(x)
1672}
1673
1674func (*ListProductsInProductSetResponse) ProtoMessage() {}
1675
1676func (x *ListProductsInProductSetResponse) ProtoReflect() protoreflect.Message {
1677	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[23]
1678	if protoimpl.UnsafeEnabled && x != nil {
1679		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1680		if ms.LoadMessageInfo() == nil {
1681			ms.StoreMessageInfo(mi)
1682		}
1683		return ms
1684	}
1685	return mi.MessageOf(x)
1686}
1687
1688// Deprecated: Use ListProductsInProductSetResponse.ProtoReflect.Descriptor instead.
1689func (*ListProductsInProductSetResponse) Descriptor() ([]byte, []int) {
1690	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{23}
1691}
1692
1693func (x *ListProductsInProductSetResponse) GetProducts() []*Product {
1694	if x != nil {
1695		return x.Products
1696	}
1697	return nil
1698}
1699
1700func (x *ListProductsInProductSetResponse) GetNextPageToken() string {
1701	if x != nil {
1702		return x.NextPageToken
1703	}
1704	return ""
1705}
1706
1707// The Google Cloud Storage location for a csv file which preserves a list of
1708// ImportProductSetRequests in each line.
1709type ImportProductSetsGcsSource struct {
1710	state         protoimpl.MessageState
1711	sizeCache     protoimpl.SizeCache
1712	unknownFields protoimpl.UnknownFields
1713
1714	// The Google Cloud Storage URI of the input csv file.
1715	//
1716	// The URI must start with `gs://`.
1717	//
1718	// The format of the input csv file should be one image per line.
1719	// In each line, there are 8 columns.
1720	//
1721	// 1.  image-uri
1722	// 2.  image-id
1723	// 3.  product-set-id
1724	// 4.  product-id
1725	// 5.  product-category
1726	// 6.  product-display-name
1727	// 7.  labels
1728	// 8.  bounding-poly
1729	//
1730	// The `image-uri`, `product-set-id`, `product-id`, and `product-category`
1731	// columns are required. All other columns are optional.
1732	//
1733	// If the `ProductSet` or `Product` specified by the `product-set-id` and
1734	// `product-id` values does not exist, then the system will create a new
1735	// `ProductSet` or `Product` for the image. In this case, the
1736	// `product-display-name` column refers to
1737	// [display_name][google.cloud.vision.v1.Product.display_name], the
1738	// `product-category` column refers to
1739	// [product_category][google.cloud.vision.v1.Product.product_category], and the
1740	// `labels` column refers to [product_labels][google.cloud.vision.v1.Product.product_labels].
1741	//
1742	// The `image-id` column is optional but must be unique if provided. If it is
1743	// empty, the system will automatically assign a unique id to the image.
1744	//
1745	// The `product-display-name` column is optional. If it is empty, the system
1746	// sets the [display_name][google.cloud.vision.v1.Product.display_name] field for the product to a
1747	// space (" "). You can update the `display_name` later by using the API.
1748	//
1749	// If a `Product` with the specified `product-id` already exists, then the
1750	// system ignores the `product-display-name`, `product-category`, and `labels`
1751	// columns.
1752	//
1753	// The `labels` column (optional) is a line containing a list of
1754	// comma-separated key-value pairs, in the following format:
1755	//
1756	//     "key_1=value_1,key_2=value_2,...,key_n=value_n"
1757	//
1758	// The `bounding-poly` column (optional) identifies one region of
1759	// interest from the image in the same manner as `CreateReferenceImage`. If
1760	// you do not specify the `bounding-poly` column, then the system will try to
1761	// detect regions of interest automatically.
1762	//
1763	// At most one `bounding-poly` column is allowed per line. If the image
1764	// contains multiple regions of interest, add a line to the CSV file that
1765	// includes the same product information, and the `bounding-poly` values for
1766	// each region of interest.
1767	//
1768	// The `bounding-poly` column must contain an even number of comma-separated
1769	// numbers, in the format "p1_x,p1_y,p2_x,p2_y,...,pn_x,pn_y". Use
1770	// non-negative integers for absolute bounding polygons, and float values
1771	// in [0, 1] for normalized bounding polygons.
1772	//
1773	// The system will resize the image if the image resolution is too
1774	// large to process (larger than 20MP).
1775	CsvFileUri string `protobuf:"bytes,1,opt,name=csv_file_uri,json=csvFileUri,proto3" json:"csv_file_uri,omitempty"`
1776}
1777
1778func (x *ImportProductSetsGcsSource) Reset() {
1779	*x = ImportProductSetsGcsSource{}
1780	if protoimpl.UnsafeEnabled {
1781		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[24]
1782		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1783		ms.StoreMessageInfo(mi)
1784	}
1785}
1786
1787func (x *ImportProductSetsGcsSource) String() string {
1788	return protoimpl.X.MessageStringOf(x)
1789}
1790
1791func (*ImportProductSetsGcsSource) ProtoMessage() {}
1792
1793func (x *ImportProductSetsGcsSource) ProtoReflect() protoreflect.Message {
1794	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[24]
1795	if protoimpl.UnsafeEnabled && x != nil {
1796		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1797		if ms.LoadMessageInfo() == nil {
1798			ms.StoreMessageInfo(mi)
1799		}
1800		return ms
1801	}
1802	return mi.MessageOf(x)
1803}
1804
1805// Deprecated: Use ImportProductSetsGcsSource.ProtoReflect.Descriptor instead.
1806func (*ImportProductSetsGcsSource) Descriptor() ([]byte, []int) {
1807	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{24}
1808}
1809
1810func (x *ImportProductSetsGcsSource) GetCsvFileUri() string {
1811	if x != nil {
1812		return x.CsvFileUri
1813	}
1814	return ""
1815}
1816
1817// The input content for the `ImportProductSets` method.
1818type ImportProductSetsInputConfig struct {
1819	state         protoimpl.MessageState
1820	sizeCache     protoimpl.SizeCache
1821	unknownFields protoimpl.UnknownFields
1822
1823	// The source of the input.
1824	//
1825	// Types that are assignable to Source:
1826	//	*ImportProductSetsInputConfig_GcsSource
1827	Source isImportProductSetsInputConfig_Source `protobuf_oneof:"source"`
1828}
1829
1830func (x *ImportProductSetsInputConfig) Reset() {
1831	*x = ImportProductSetsInputConfig{}
1832	if protoimpl.UnsafeEnabled {
1833		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[25]
1834		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1835		ms.StoreMessageInfo(mi)
1836	}
1837}
1838
1839func (x *ImportProductSetsInputConfig) String() string {
1840	return protoimpl.X.MessageStringOf(x)
1841}
1842
1843func (*ImportProductSetsInputConfig) ProtoMessage() {}
1844
1845func (x *ImportProductSetsInputConfig) ProtoReflect() protoreflect.Message {
1846	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[25]
1847	if protoimpl.UnsafeEnabled && x != nil {
1848		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1849		if ms.LoadMessageInfo() == nil {
1850			ms.StoreMessageInfo(mi)
1851		}
1852		return ms
1853	}
1854	return mi.MessageOf(x)
1855}
1856
1857// Deprecated: Use ImportProductSetsInputConfig.ProtoReflect.Descriptor instead.
1858func (*ImportProductSetsInputConfig) Descriptor() ([]byte, []int) {
1859	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{25}
1860}
1861
1862func (m *ImportProductSetsInputConfig) GetSource() isImportProductSetsInputConfig_Source {
1863	if m != nil {
1864		return m.Source
1865	}
1866	return nil
1867}
1868
1869func (x *ImportProductSetsInputConfig) GetGcsSource() *ImportProductSetsGcsSource {
1870	if x, ok := x.GetSource().(*ImportProductSetsInputConfig_GcsSource); ok {
1871		return x.GcsSource
1872	}
1873	return nil
1874}
1875
1876type isImportProductSetsInputConfig_Source interface {
1877	isImportProductSetsInputConfig_Source()
1878}
1879
1880type ImportProductSetsInputConfig_GcsSource struct {
1881	// The Google Cloud Storage location for a csv file which preserves a list
1882	// of ImportProductSetRequests in each line.
1883	GcsSource *ImportProductSetsGcsSource `protobuf:"bytes,1,opt,name=gcs_source,json=gcsSource,proto3,oneof"`
1884}
1885
1886func (*ImportProductSetsInputConfig_GcsSource) isImportProductSetsInputConfig_Source() {}
1887
1888// Request message for the `ImportProductSets` method.
1889type ImportProductSetsRequest struct {
1890	state         protoimpl.MessageState
1891	sizeCache     protoimpl.SizeCache
1892	unknownFields protoimpl.UnknownFields
1893
1894	// Required. The project in which the ProductSets should be imported.
1895	//
1896	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
1897	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
1898	// Required. The input content for the list of requests.
1899	InputConfig *ImportProductSetsInputConfig `protobuf:"bytes,2,opt,name=input_config,json=inputConfig,proto3" json:"input_config,omitempty"`
1900}
1901
1902func (x *ImportProductSetsRequest) Reset() {
1903	*x = ImportProductSetsRequest{}
1904	if protoimpl.UnsafeEnabled {
1905		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[26]
1906		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1907		ms.StoreMessageInfo(mi)
1908	}
1909}
1910
1911func (x *ImportProductSetsRequest) String() string {
1912	return protoimpl.X.MessageStringOf(x)
1913}
1914
1915func (*ImportProductSetsRequest) ProtoMessage() {}
1916
1917func (x *ImportProductSetsRequest) ProtoReflect() protoreflect.Message {
1918	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[26]
1919	if protoimpl.UnsafeEnabled && x != nil {
1920		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1921		if ms.LoadMessageInfo() == nil {
1922			ms.StoreMessageInfo(mi)
1923		}
1924		return ms
1925	}
1926	return mi.MessageOf(x)
1927}
1928
1929// Deprecated: Use ImportProductSetsRequest.ProtoReflect.Descriptor instead.
1930func (*ImportProductSetsRequest) Descriptor() ([]byte, []int) {
1931	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{26}
1932}
1933
1934func (x *ImportProductSetsRequest) GetParent() string {
1935	if x != nil {
1936		return x.Parent
1937	}
1938	return ""
1939}
1940
1941func (x *ImportProductSetsRequest) GetInputConfig() *ImportProductSetsInputConfig {
1942	if x != nil {
1943		return x.InputConfig
1944	}
1945	return nil
1946}
1947
1948// Response message for the `ImportProductSets` method.
1949//
1950// This message is returned by the
1951// [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation] method in the returned
1952// [google.longrunning.Operation.response][google.longrunning.Operation.response] field.
1953type ImportProductSetsResponse struct {
1954	state         protoimpl.MessageState
1955	sizeCache     protoimpl.SizeCache
1956	unknownFields protoimpl.UnknownFields
1957
1958	// The list of reference_images that are imported successfully.
1959	ReferenceImages []*ReferenceImage `protobuf:"bytes,1,rep,name=reference_images,json=referenceImages,proto3" json:"reference_images,omitempty"`
1960	// The rpc status for each ImportProductSet request, including both successes
1961	// and errors.
1962	//
1963	// The number of statuses here matches the number of lines in the csv file,
1964	// and statuses[i] stores the success or failure status of processing the i-th
1965	// line of the csv, starting from line 0.
1966	Statuses []*status.Status `protobuf:"bytes,2,rep,name=statuses,proto3" json:"statuses,omitempty"`
1967}
1968
1969func (x *ImportProductSetsResponse) Reset() {
1970	*x = ImportProductSetsResponse{}
1971	if protoimpl.UnsafeEnabled {
1972		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[27]
1973		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1974		ms.StoreMessageInfo(mi)
1975	}
1976}
1977
1978func (x *ImportProductSetsResponse) String() string {
1979	return protoimpl.X.MessageStringOf(x)
1980}
1981
1982func (*ImportProductSetsResponse) ProtoMessage() {}
1983
1984func (x *ImportProductSetsResponse) ProtoReflect() protoreflect.Message {
1985	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[27]
1986	if protoimpl.UnsafeEnabled && x != nil {
1987		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
1988		if ms.LoadMessageInfo() == nil {
1989			ms.StoreMessageInfo(mi)
1990		}
1991		return ms
1992	}
1993	return mi.MessageOf(x)
1994}
1995
1996// Deprecated: Use ImportProductSetsResponse.ProtoReflect.Descriptor instead.
1997func (*ImportProductSetsResponse) Descriptor() ([]byte, []int) {
1998	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{27}
1999}
2000
2001func (x *ImportProductSetsResponse) GetReferenceImages() []*ReferenceImage {
2002	if x != nil {
2003		return x.ReferenceImages
2004	}
2005	return nil
2006}
2007
2008func (x *ImportProductSetsResponse) GetStatuses() []*status.Status {
2009	if x != nil {
2010		return x.Statuses
2011	}
2012	return nil
2013}
2014
2015// Metadata for the batch operations such as the current state.
2016//
2017// This is included in the `metadata` field of the `Operation` returned by the
2018// `GetOperation` call of the `google::longrunning::Operations` service.
2019type BatchOperationMetadata struct {
2020	state         protoimpl.MessageState
2021	sizeCache     protoimpl.SizeCache
2022	unknownFields protoimpl.UnknownFields
2023
2024	// The current state of the batch operation.
2025	State BatchOperationMetadata_State `protobuf:"varint,1,opt,name=state,proto3,enum=google.cloud.vision.v1.BatchOperationMetadata_State" json:"state,omitempty"`
2026	// The time when the batch request was submitted to the server.
2027	SubmitTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=submit_time,json=submitTime,proto3" json:"submit_time,omitempty"`
2028	// The time when the batch request is finished and
2029	// [google.longrunning.Operation.done][google.longrunning.Operation.done] is set to true.
2030	EndTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
2031}
2032
2033func (x *BatchOperationMetadata) Reset() {
2034	*x = BatchOperationMetadata{}
2035	if protoimpl.UnsafeEnabled {
2036		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[28]
2037		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2038		ms.StoreMessageInfo(mi)
2039	}
2040}
2041
2042func (x *BatchOperationMetadata) String() string {
2043	return protoimpl.X.MessageStringOf(x)
2044}
2045
2046func (*BatchOperationMetadata) ProtoMessage() {}
2047
2048func (x *BatchOperationMetadata) ProtoReflect() protoreflect.Message {
2049	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[28]
2050	if protoimpl.UnsafeEnabled && x != nil {
2051		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2052		if ms.LoadMessageInfo() == nil {
2053			ms.StoreMessageInfo(mi)
2054		}
2055		return ms
2056	}
2057	return mi.MessageOf(x)
2058}
2059
2060// Deprecated: Use BatchOperationMetadata.ProtoReflect.Descriptor instead.
2061func (*BatchOperationMetadata) Descriptor() ([]byte, []int) {
2062	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{28}
2063}
2064
2065func (x *BatchOperationMetadata) GetState() BatchOperationMetadata_State {
2066	if x != nil {
2067		return x.State
2068	}
2069	return BatchOperationMetadata_STATE_UNSPECIFIED
2070}
2071
2072func (x *BatchOperationMetadata) GetSubmitTime() *timestamppb.Timestamp {
2073	if x != nil {
2074		return x.SubmitTime
2075	}
2076	return nil
2077}
2078
2079func (x *BatchOperationMetadata) GetEndTime() *timestamppb.Timestamp {
2080	if x != nil {
2081		return x.EndTime
2082	}
2083	return nil
2084}
2085
2086// Config to control which ProductSet contains the Products to be deleted.
2087type ProductSetPurgeConfig struct {
2088	state         protoimpl.MessageState
2089	sizeCache     protoimpl.SizeCache
2090	unknownFields protoimpl.UnknownFields
2091
2092	// The ProductSet that contains the Products to delete. If a Product is a
2093	// member of product_set_id in addition to other ProductSets, the Product will
2094	// still be deleted.
2095	ProductSetId string `protobuf:"bytes,1,opt,name=product_set_id,json=productSetId,proto3" json:"product_set_id,omitempty"`
2096}
2097
2098func (x *ProductSetPurgeConfig) Reset() {
2099	*x = ProductSetPurgeConfig{}
2100	if protoimpl.UnsafeEnabled {
2101		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[29]
2102		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2103		ms.StoreMessageInfo(mi)
2104	}
2105}
2106
2107func (x *ProductSetPurgeConfig) String() string {
2108	return protoimpl.X.MessageStringOf(x)
2109}
2110
2111func (*ProductSetPurgeConfig) ProtoMessage() {}
2112
2113func (x *ProductSetPurgeConfig) ProtoReflect() protoreflect.Message {
2114	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[29]
2115	if protoimpl.UnsafeEnabled && x != nil {
2116		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2117		if ms.LoadMessageInfo() == nil {
2118			ms.StoreMessageInfo(mi)
2119		}
2120		return ms
2121	}
2122	return mi.MessageOf(x)
2123}
2124
2125// Deprecated: Use ProductSetPurgeConfig.ProtoReflect.Descriptor instead.
2126func (*ProductSetPurgeConfig) Descriptor() ([]byte, []int) {
2127	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{29}
2128}
2129
2130func (x *ProductSetPurgeConfig) GetProductSetId() string {
2131	if x != nil {
2132		return x.ProductSetId
2133	}
2134	return ""
2135}
2136
2137// Request message for the `PurgeProducts` method.
2138type PurgeProductsRequest struct {
2139	state         protoimpl.MessageState
2140	sizeCache     protoimpl.SizeCache
2141	unknownFields protoimpl.UnknownFields
2142
2143	// The Products to delete.
2144	//
2145	// Types that are assignable to Target:
2146	//	*PurgeProductsRequest_ProductSetPurgeConfig
2147	//	*PurgeProductsRequest_DeleteOrphanProducts
2148	Target isPurgeProductsRequest_Target `protobuf_oneof:"target"`
2149	// Required. The project and location in which the Products should be deleted.
2150	//
2151	// Format is `projects/PROJECT_ID/locations/LOC_ID`.
2152	Parent string `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"`
2153	// The default value is false. Override this value to true to actually perform
2154	// the purge.
2155	Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"`
2156}
2157
2158func (x *PurgeProductsRequest) Reset() {
2159	*x = PurgeProductsRequest{}
2160	if protoimpl.UnsafeEnabled {
2161		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[30]
2162		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2163		ms.StoreMessageInfo(mi)
2164	}
2165}
2166
2167func (x *PurgeProductsRequest) String() string {
2168	return protoimpl.X.MessageStringOf(x)
2169}
2170
2171func (*PurgeProductsRequest) ProtoMessage() {}
2172
2173func (x *PurgeProductsRequest) ProtoReflect() protoreflect.Message {
2174	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[30]
2175	if protoimpl.UnsafeEnabled && x != nil {
2176		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2177		if ms.LoadMessageInfo() == nil {
2178			ms.StoreMessageInfo(mi)
2179		}
2180		return ms
2181	}
2182	return mi.MessageOf(x)
2183}
2184
2185// Deprecated: Use PurgeProductsRequest.ProtoReflect.Descriptor instead.
2186func (*PurgeProductsRequest) Descriptor() ([]byte, []int) {
2187	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{30}
2188}
2189
2190func (m *PurgeProductsRequest) GetTarget() isPurgeProductsRequest_Target {
2191	if m != nil {
2192		return m.Target
2193	}
2194	return nil
2195}
2196
2197func (x *PurgeProductsRequest) GetProductSetPurgeConfig() *ProductSetPurgeConfig {
2198	if x, ok := x.GetTarget().(*PurgeProductsRequest_ProductSetPurgeConfig); ok {
2199		return x.ProductSetPurgeConfig
2200	}
2201	return nil
2202}
2203
2204func (x *PurgeProductsRequest) GetDeleteOrphanProducts() bool {
2205	if x, ok := x.GetTarget().(*PurgeProductsRequest_DeleteOrphanProducts); ok {
2206		return x.DeleteOrphanProducts
2207	}
2208	return false
2209}
2210
2211func (x *PurgeProductsRequest) GetParent() string {
2212	if x != nil {
2213		return x.Parent
2214	}
2215	return ""
2216}
2217
2218func (x *PurgeProductsRequest) GetForce() bool {
2219	if x != nil {
2220		return x.Force
2221	}
2222	return false
2223}
2224
2225type isPurgeProductsRequest_Target interface {
2226	isPurgeProductsRequest_Target()
2227}
2228
2229type PurgeProductsRequest_ProductSetPurgeConfig struct {
2230	// Specify which ProductSet contains the Products to be deleted.
2231	ProductSetPurgeConfig *ProductSetPurgeConfig `protobuf:"bytes,2,opt,name=product_set_purge_config,json=productSetPurgeConfig,proto3,oneof"`
2232}
2233
2234type PurgeProductsRequest_DeleteOrphanProducts struct {
2235	// If delete_orphan_products is true, all Products that are not in any
2236	// ProductSet will be deleted.
2237	DeleteOrphanProducts bool `protobuf:"varint,3,opt,name=delete_orphan_products,json=deleteOrphanProducts,proto3,oneof"`
2238}
2239
2240func (*PurgeProductsRequest_ProductSetPurgeConfig) isPurgeProductsRequest_Target() {}
2241
2242func (*PurgeProductsRequest_DeleteOrphanProducts) isPurgeProductsRequest_Target() {}
2243
2244// A product label represented as a key-value pair.
2245type Product_KeyValue struct {
2246	state         protoimpl.MessageState
2247	sizeCache     protoimpl.SizeCache
2248	unknownFields protoimpl.UnknownFields
2249
2250	// The key of the label attached to the product. Cannot be empty and cannot
2251	// exceed 128 bytes.
2252	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
2253	// The value of the label attached to the product. Cannot be empty and
2254	// cannot exceed 128 bytes.
2255	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
2256}
2257
2258func (x *Product_KeyValue) Reset() {
2259	*x = Product_KeyValue{}
2260	if protoimpl.UnsafeEnabled {
2261		mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[31]
2262		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2263		ms.StoreMessageInfo(mi)
2264	}
2265}
2266
2267func (x *Product_KeyValue) String() string {
2268	return protoimpl.X.MessageStringOf(x)
2269}
2270
2271func (*Product_KeyValue) ProtoMessage() {}
2272
2273func (x *Product_KeyValue) ProtoReflect() protoreflect.Message {
2274	mi := &file_google_cloud_vision_v1_product_search_service_proto_msgTypes[31]
2275	if protoimpl.UnsafeEnabled && x != nil {
2276		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
2277		if ms.LoadMessageInfo() == nil {
2278			ms.StoreMessageInfo(mi)
2279		}
2280		return ms
2281	}
2282	return mi.MessageOf(x)
2283}
2284
2285// Deprecated: Use Product_KeyValue.ProtoReflect.Descriptor instead.
2286func (*Product_KeyValue) Descriptor() ([]byte, []int) {
2287	return file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP(), []int{0, 0}
2288}
2289
2290func (x *Product_KeyValue) GetKey() string {
2291	if x != nil {
2292		return x.Key
2293	}
2294	return ""
2295}
2296
2297func (x *Product_KeyValue) GetValue() string {
2298	if x != nil {
2299		return x.Value
2300	}
2301	return ""
2302}
2303
2304var File_google_cloud_vision_v1_product_search_service_proto protoreflect.FileDescriptor
2305
2306var file_google_cloud_vision_v1_product_search_service_proto_rawDesc = []byte{
2307	0x0a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76,
2308	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
2309	0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e,
2310	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
2311	0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67,
2312	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
2313	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f,
2314	0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70,
2315	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69,
2316	0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e,
2317	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70,
2318	0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
2319	0x1a, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76,
2320	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6f, 0x6d, 0x65, 0x74, 0x72,
2321	0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
2322	0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x2f, 0x6f, 0x70, 0x65, 0x72,
2323	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f,
2324	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d,
2325	0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2326	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64,
2327	0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
2328	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d,
2329	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f,
2330	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x2e,
2331	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf7, 0x02, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2332	0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
2333	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79,
2334	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73,
2335	0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
2336	0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
2337	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x10, 0x70, 0x72,
2338	0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x04,
2339	0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x05, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x64, 0x75,
2340	0x63, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x4f, 0x0a, 0x0e, 0x70, 0x72,
2341	0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03,
2342	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
2343	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64,
2344	0x75, 0x63, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x70, 0x72,
2345	0x6f, 0x64, 0x75, 0x63, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x32, 0x0a, 0x08, 0x4b,
2346	0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
2347	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
2348	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
2349	0x5e, 0xea, 0x41, 0x5b, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f,
2350	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64,
2351	0x75, 0x63, 0x74, 0x12, 0x3a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70,
2352	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
2353	0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f, 0x70, 0x72, 0x6f,
2354	0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x7d, 0x22,
2355	0xa7, 0x02, 0x0a, 0x0a, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x12,
2356	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
2357	0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61,
2358	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61,
2359	0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x74,
2360	0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2361	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
2362	0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x64, 0x65,
2363	0x78, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65,
2364	0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f,
2365	0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x03,
2366	0xe0, 0x41, 0x03, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x3a,
2367	0x68, 0xea, 0x41, 0x65, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f,
2368	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64,
2369	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x41, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
2370	0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
2371	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f,
2372	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f,
2373	0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x7d, 0x22, 0x98, 0x02, 0x0a, 0x0e, 0x52, 0x65,
2374	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04,
2375	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
2376	0x12, 0x15, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0,
2377	0x41, 0x02, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x50, 0x0a, 0x0e, 0x62, 0x6f, 0x75, 0x6e, 0x64,
2378	0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6f, 0x6c, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
2379	0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
2380	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x69, 0x6e,
2381	0x67, 0x50, 0x6f, 0x6c, 0x79, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0d, 0x62, 0x6f, 0x75, 0x6e,
2382	0x64, 0x69, 0x6e, 0x67, 0x50, 0x6f, 0x6c, 0x79, 0x73, 0x3a, 0x88, 0x01, 0xea, 0x41, 0x84, 0x01,
2383	0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
2384	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
2385	0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
2386	0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x7d, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
2387	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x7d, 0x2f,
2388	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
2389	0x74, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67,
2390	0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d,
2391	0x61, 0x67, 0x65, 0x7d, 0x22, 0xb8, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50,
2392	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a,
2393	0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0,
2394	0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
2395	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
2396	0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
2397	0x12, 0x3e, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
2398	0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
2399	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75,
2400	0x63, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
2401	0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03,
2402	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x22,
2403	0x94, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73,
2404	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
2405	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a,
2406	0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2407	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
2408	0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61,
2409	0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70,
2410	0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f,
2411	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67,
2412	0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x7b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
2413	0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b,
2414	0x0a, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
2415	0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
2416	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2417	0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e,
2418	0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02,
2419	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f,
2420	0x6b, 0x65, 0x6e, 0x22, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2421	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
2422	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d,
2423	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
2424	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e,
2425	0x61, 0x6d, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72,
2426	0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x07,
2427	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
2428	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
2429	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x42, 0x03,
2430	0xe0, 0x41, 0x02, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x0b,
2431	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28,
2432	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
2433	0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75,
2434	0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x51, 0x0a, 0x14, 0x44, 0x65, 0x6c,
2435	0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
2436	0x74, 0x12, 0x39, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
2437	0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
2438	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50,
2439	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xcc, 0x01, 0x0a,
2440	0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
2441	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65,
2442	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23,
2443	0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2444	0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74,
2445	0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x70,
2446	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
2447	0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
2448	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2449	0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75,
2450	0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
2451	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70,
2452	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x16,
2453	0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52,
2454	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
2455	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21,
2456	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2457	0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
2458	0x6e, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67,
2459	0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61,
2460	0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74,
2461	0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65,
2462	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x88, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
2463	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
2464	0x65, 0x12, 0x45, 0x0a, 0x0c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74,
2465	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2466	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
2467	0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x0b, 0x70, 0x72, 0x6f,
2468	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74,
2469	0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
2470	0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e,
2471	0x22, 0x54, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
2472	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
2473	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20,
2474	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
2475	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74,
2476	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74,
2477	0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
2478	0x73, 0x74, 0x12, 0x48, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65,
2479	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2480	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31,
2481	0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x42, 0x03, 0xe0, 0x41, 0x02,
2482	0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x3b, 0x0a, 0x0b,
2483	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28,
2484	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
2485	0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75,
2486	0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x57, 0x0a, 0x17, 0x44, 0x65, 0x6c,
2487	0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71,
2488	0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
2489	0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69,
2490	0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
2491	0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61,
2492	0x6d, 0x65, 0x22, 0xe0, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66,
2493	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
2494	0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
2495	0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69,
2496	0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
2497	0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e,
2498	0x74, 0x12, 0x54, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69,
2499	0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f,
2500	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
2501	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61,
2502	0x67, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
2503	0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x66, 0x65, 0x72,
2504	0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
2505	0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d,
2506	0x61, 0x67, 0x65, 0x49, 0x64, 0x22, 0x97, 0x01, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65,
2507	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71,
2508	0x75, 0x65, 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01,
2509	0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69,
2510	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
2511	0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x06, 0x70, 0x61, 0x72,
2512	0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65,
2513	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65,
2514	0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03,
2515	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
2516	0xb5, 0x01, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
2517	0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
2518	0x51, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61,
2519	0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2520	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
2521	0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67,
2522	0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67,
2523	0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
2524	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12,
2525	0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b,
2526	0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61,
2527	0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x5c, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65,
2528	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75,
2529	0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
2530	0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69, 0x6f,
2531	0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
2532	0x2f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52,
2533	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52,
2534	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71,
2535	0x75, 0x65, 0x73, 0x74, 0x12, 0x40, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
2536	0x28, 0x09, 0x42, 0x2c, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x26, 0x0a, 0x24, 0x76, 0x69, 0x73, 0x69,
2537	0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f,
2538	0x6d, 0x2f, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65,
2539	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x9e, 0x01, 0x0a, 0x1d, 0x41, 0x64, 0x64, 0x50, 0x72,
2540	0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
2541	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
2542	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20,
2543	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
2544	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74,
2545	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
2546	0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a,
2547	0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70,
2548	0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07,
2549	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0xa3, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f,
2550	0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f,
2551	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c,
2552	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x28, 0xe0, 0x41,
2553	0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f, 0x6f,
2554	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f, 0x64,
2555	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x07,
2556	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x25, 0xe0,
2557	0x41, 0x02, 0xfa, 0x41, 0x1f, 0x0a, 0x1d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x67, 0x6f,
2558	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50, 0x72, 0x6f,
2559	0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x9b, 0x01,
2560	0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e,
2561	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
2562	0x74, 0x12, 0x3c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
2563	0x28, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x22, 0x0a, 0x20, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
2564	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x50,
2565	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
2566	0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01,
2567	0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
2568	0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
2569	0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x87, 0x01, 0x0a, 0x20,
2570	0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72,
2571	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
2572	0x12, 0x3b, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03,
2573	0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
2574	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64,
2575	0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x26, 0x0a,
2576	0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
2577	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65,
2578	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3e, 0x0a, 0x1a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50,
2579	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75,
2580	0x72, 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x73, 0x76, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f,
2581	0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x73, 0x76, 0x46, 0x69,
2582	0x6c, 0x65, 0x55, 0x72, 0x69, 0x22, 0x7d, 0x0a, 0x1c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50,
2583	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43,
2584	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x53, 0x0a, 0x0a, 0x67, 0x63, 0x73, 0x5f, 0x73, 0x6f, 0x75,
2585	0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2586	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
2587	0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
2588	0x53, 0x65, 0x74, 0x73, 0x47, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52,
2589	0x09, 0x67, 0x63, 0x73, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x73, 0x6f,
2590	0x75, 0x72, 0x63, 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50,
2591	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
2592	0x74, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
2593	0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63, 0x61, 0x74,
2594	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e,
2595	0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x70, 0x61,
2596	0x72, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x63, 0x6f,
2597	0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f,
2598	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
2599	0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2600	0x74, 0x53, 0x65, 0x74, 0x73, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
2601	0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66,
2602	0x69, 0x67, 0x22, 0x9e, 0x01, 0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f,
2603	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
2604	0x12, 0x51, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d,
2605	0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f,
2606	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
2607	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61,
2608	0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61,
2609	0x67, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18,
2610	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72,
2611	0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75,
2612	0x73, 0x65, 0x73, 0x22, 0xb3, 0x02, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65,
2613	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x4a,
2614	0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e,
2615	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
2616	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72,
2617	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x53, 0x74,
2618	0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x75,
2619	0x62, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
2620	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
2621	0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x73, 0x75, 0x62,
2622	0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
2623	0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2624	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
2625	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x59,
2626	0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x41, 0x54, 0x45,
2627	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e,
2628	0x0a, 0x0a, 0x50, 0x52, 0x4f, 0x43, 0x45, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0e,
2629	0x0a, 0x0a, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x46, 0x55, 0x4c, 0x10, 0x02, 0x12, 0x0a,
2630	0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41,
2631	0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x22, 0x3d, 0x0a, 0x15, 0x50, 0x72, 0x6f,
2632	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x50, 0x75, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
2633	0x69, 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65,
2634	0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x64,
2635	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x49, 0x64, 0x22, 0x9b, 0x02, 0x0a, 0x14, 0x50, 0x75, 0x72,
2636	0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
2637	0x74, 0x12, 0x68, 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74,
2638	0x5f, 0x70, 0x75, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20,
2639	0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
2640	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f,
2641	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x50, 0x75, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66,
2642	0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74,
2643	0x50, 0x75, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x16, 0x64,
2644	0x65, 0x6c, 0x65, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x5f, 0x70, 0x72, 0x6f,
2645	0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x14, 0x64,
2646	0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x72, 0x70, 0x68, 0x61, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75,
2647	0x63, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20,
2648	0x01, 0x28, 0x09, 0x42, 0x29, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x23, 0x0a, 0x21, 0x6c, 0x6f, 0x63,
2649	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
2650	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06,
2651	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18,
2652	0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x42, 0x08, 0x0a, 0x06,
2653	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x32, 0xf4, 0x1d, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x64, 0x75,
2654	0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0xd1, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65,
2655	0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x2f, 0x2e,
2656	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
2657	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f,
2658	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
2659	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
2660	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
2661	0x65, 0x74, 0x22, 0x68, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3e, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f,
2662	0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
2663	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f,
2664	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x0b, 0x70, 0x72, 0x6f,
2665	0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0xda, 0x41, 0x21, 0x70, 0x61, 0x72, 0x65, 0x6e,
2666	0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2c, 0x70, 0x72,
2667	0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x69, 0x64, 0x12, 0xb4, 0x01, 0x0a,
2668	0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73,
2669	0x12, 0x2e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
2670	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
2671	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
2672	0x1a, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
2673	0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72,
2674	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
2675	0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
2676	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
2677	0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70,
2678	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72,
2679	0x65, 0x6e, 0x74, 0x12, 0xa1, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75,
2680	0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
2681	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47,
2682	0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
2683	0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
2684	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f,
2685	0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x22, 0x3e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x12,
2686	0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
2687	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
2688	0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d,
2689	0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xd3, 0x01, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61,
2690	0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x2f, 0x2e, 0x67,
2691	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
2692	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64,
2693	0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
2694	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
2695	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
2696	0x74, 0x22, 0x6a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x32, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x7b,
2697	0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65,
2698	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
2699	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
2700	0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f,
2701	0x73, 0x65, 0x74, 0xda, 0x41, 0x17, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x73, 0x65,
2702	0x74, 0x2c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x9b, 0x01,
2703	0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53,
2704	0x65, 0x74, 0x12, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
2705	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
2706	0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75,
2707	0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
2708	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x3e, 0x82, 0xd3, 0xe4,
2709	0x93, 0x02, 0x31, 0x2a, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70,
2710	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
2711	0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74,
2712	0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xb9, 0x01, 0x0a, 0x0d,
2713	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2c, 0x2e,
2714	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73,
2715	0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f,
2716	0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f,
2717	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
2718	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x59, 0x82, 0xd3,
2719	0xe4, 0x93, 0x02, 0x37, 0x22, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e,
2720	0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63,
2721	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
2722	0x74, 0x73, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0xda, 0x41, 0x19, 0x70, 0x61,
2723	0x72, 0x65, 0x6e, 0x74, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x70, 0x72, 0x6f,
2724	0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x12, 0xa8, 0x01, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74,
2725	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2726	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
2727	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65,
2728	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
2729	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
2730	0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
2731	0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31,
2732	0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
2733	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d,
2734	0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65,
2735	0x6e, 0x74, 0x12, 0x95, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2736	0x74, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
2737	0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72,
2738	0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67,
2739	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
2740	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x3b, 0x82,
2741	0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65,
2742	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
2743	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73,
2744	0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xbb, 0x01, 0x0a, 0x0d, 0x55,
2745	0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2c, 0x2e, 0x67,
2746	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69,
2747	0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64,
2748	0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x6f,
2749	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
2750	0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x5b, 0x82, 0xd3, 0xe4,
2751	0x93, 0x02, 0x3f, 0x32, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
2752	0x74, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
2753	0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72,
2754	0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x07, 0x70, 0x72, 0x6f, 0x64, 0x75,
2755	0x63, 0x74, 0xda, 0x41, 0x13, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x2c, 0x75, 0x70, 0x64,
2756	0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x12, 0x92, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c,
2757	0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x2c, 0x2e, 0x67, 0x6f, 0x6f,
2758	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
2759	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2760	0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2761	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79,
2762	0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x2a, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e,
2763	0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
2764	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75,
2765	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xf9, 0x01,
2766	0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
2767	0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
2768	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
2769	0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49,
2770	0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f,
2771	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
2772	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d,
2773	0x61, 0x67, 0x65, 0x22, 0x83, 0x01, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x51, 0x22, 0x3e, 0x2f, 0x76,
2774	0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
2775	0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a,
2776	0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66,
2777	0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x0f, 0x72, 0x65,
2778	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0xda, 0x41, 0x29,
2779	0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
2780	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2c, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
2781	0x5f, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x12, 0xb2, 0x01, 0x0a, 0x14, 0x44, 0x65,
2782	0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61,
2783	0x67, 0x65, 0x12, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
2784	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65,
2785	0x74, 0x65, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65,
2786	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
2787	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22,
2788	0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x2a, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61,
2789	0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
2790	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63,
2791	0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d,
2792	0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xcf,
2793	0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
2794	0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
2795	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
2796	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61,
2797	0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f,
2798	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
2799	0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
2800	0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
2801	0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61,
2802	0x72, 0x65, 0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f,
2803	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64,
2804	0x75, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
2805	0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x73, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
2806	0x12, 0xbc, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63,
2807	0x65, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
2808	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e,
2809	0x47, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67,
2810	0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2811	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76,
2812	0x31, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x6d, 0x61, 0x67, 0x65,
2813	0x22, 0x4d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e,
2814	0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c,
2815	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75,
2816	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x49,
2817	0x6d, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x2a, 0x7d, 0xda, 0x41, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
2818	0xbd, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f,
2819	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x35, 0x2e, 0x67, 0x6f, 0x6f,
2820	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
2821	0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x54, 0x6f,
2822	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
2823	0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
2824	0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02,
2825	0x3f, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f,
2826	0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
2827	0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f,
2828	0x2a, 0x7d, 0x3a, 0x61, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, 0x01, 0x2a,
2829	0xda, 0x41, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12,
2830	0xca, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2831	0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12,
2832	0x3a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76,
2833	0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50,
2834	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x46, 0x72, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2835	0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f,
2836	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d,
2837	0x70, 0x74, 0x79, 0x22, 0x57, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x42, 0x22, 0x3d, 0x2f, 0x76, 0x31,
2838	0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f,
2839	0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72,
2840	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x72, 0x65, 0x6d,
2841	0x6f, 0x76, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x0c,
2842	0x6e, 0x61, 0x6d, 0x65, 0x2c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0xd6, 0x01, 0x0a,
2843	0x18, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50,
2844	0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x12, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
2845	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
2846	0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49,
2847	0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65,
2848	0x73, 0x74, 0x1a, 0x38, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
2849	0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
2850	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63,
2851	0x74, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3,
2852	0xe4, 0x93, 0x02, 0x3a, 0x12, 0x38, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x3d,
2853	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74,
2854	0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65,
2855	0x74, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0xda, 0x41,
2856	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0xf4, 0x01, 0x0a, 0x11, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
2857	0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x6f,
2858	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f,
2859	0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75,
2860	0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e,
2861	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69,
2862	0x6e, 0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8d, 0x01, 0x82,
2863	0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x22, 0x36, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65,
2864	0x6e, 0x74, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f,
2865	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75,
2866	0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x3a, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x3a, 0x01, 0x2a,
2867	0xda, 0x41, 0x13, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x2c, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f,
2868	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0xca, 0x41, 0x33, 0x0a, 0x19, 0x49, 0x6d, 0x70, 0x6f, 0x72,
2869	0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70,
2870	0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61,
2871	0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xd6, 0x01, 0x0a,
2872	0x0d, 0x50, 0x75, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x2c,
2873	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x76, 0x69,
2874	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x50, 0x72, 0x6f,
2875	0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67,
2876	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x6e, 0x67, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e,
2877	0x67, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x78, 0x82, 0xd3, 0xe4,
2878	0x93, 0x02, 0x37, 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x7b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74,
2879	0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61,
2880	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74,
2881	0x73, 0x3a, 0x70, 0x75, 0x72, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0xda, 0x41, 0x06, 0x70, 0x61, 0x72,
2882	0x65, 0x6e, 0x74, 0xca, 0x41, 0x2f, 0x0a, 0x15, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
2883	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x16, 0x42,
2884	0x61, 0x74, 0x63, 0x68, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74,
2885	0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x76, 0xca, 0x41, 0x15, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
2886	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2,
2887	0x41, 0x5b, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f,
2888	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74,
2889	0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
2890	0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f,
2891	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68,
2892	0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x81, 0x01,
2893	0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
2894	0x75, 0x64, 0x2e, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x76, 0x31, 0x42, 0x19, 0x50, 0x72,
2895	0x6f, 0x64, 0x75, 0x63, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69,
2896	0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
2897	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x65, 0x6e,
2898	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73,
2899	0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2f, 0x76, 0x31,
2900	0x3b, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x04, 0x47, 0x43, 0x56,
2901	0x4e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
2902}
2903
2904var (
2905	file_google_cloud_vision_v1_product_search_service_proto_rawDescOnce sync.Once
2906	file_google_cloud_vision_v1_product_search_service_proto_rawDescData = file_google_cloud_vision_v1_product_search_service_proto_rawDesc
2907)
2908
2909func file_google_cloud_vision_v1_product_search_service_proto_rawDescGZIP() []byte {
2910	file_google_cloud_vision_v1_product_search_service_proto_rawDescOnce.Do(func() {
2911		file_google_cloud_vision_v1_product_search_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_vision_v1_product_search_service_proto_rawDescData)
2912	})
2913	return file_google_cloud_vision_v1_product_search_service_proto_rawDescData
2914}
2915
2916var file_google_cloud_vision_v1_product_search_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
2917var file_google_cloud_vision_v1_product_search_service_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
2918var file_google_cloud_vision_v1_product_search_service_proto_goTypes = []interface{}{
2919	(BatchOperationMetadata_State)(0),          // 0: google.cloud.vision.v1.BatchOperationMetadata.State
2920	(*Product)(nil),                            // 1: google.cloud.vision.v1.Product
2921	(*ProductSet)(nil),                         // 2: google.cloud.vision.v1.ProductSet
2922	(*ReferenceImage)(nil),                     // 3: google.cloud.vision.v1.ReferenceImage
2923	(*CreateProductRequest)(nil),               // 4: google.cloud.vision.v1.CreateProductRequest
2924	(*ListProductsRequest)(nil),                // 5: google.cloud.vision.v1.ListProductsRequest
2925	(*ListProductsResponse)(nil),               // 6: google.cloud.vision.v1.ListProductsResponse
2926	(*GetProductRequest)(nil),                  // 7: google.cloud.vision.v1.GetProductRequest
2927	(*UpdateProductRequest)(nil),               // 8: google.cloud.vision.v1.UpdateProductRequest
2928	(*DeleteProductRequest)(nil),               // 9: google.cloud.vision.v1.DeleteProductRequest
2929	(*CreateProductSetRequest)(nil),            // 10: google.cloud.vision.v1.CreateProductSetRequest
2930	(*ListProductSetsRequest)(nil),             // 11: google.cloud.vision.v1.ListProductSetsRequest
2931	(*ListProductSetsResponse)(nil),            // 12: google.cloud.vision.v1.ListProductSetsResponse
2932	(*GetProductSetRequest)(nil),               // 13: google.cloud.vision.v1.GetProductSetRequest
2933	(*UpdateProductSetRequest)(nil),            // 14: google.cloud.vision.v1.UpdateProductSetRequest
2934	(*DeleteProductSetRequest)(nil),            // 15: google.cloud.vision.v1.DeleteProductSetRequest
2935	(*CreateReferenceImageRequest)(nil),        // 16: google.cloud.vision.v1.CreateReferenceImageRequest
2936	(*ListReferenceImagesRequest)(nil),         // 17: google.cloud.vision.v1.ListReferenceImagesRequest
2937	(*ListReferenceImagesResponse)(nil),        // 18: google.cloud.vision.v1.ListReferenceImagesResponse
2938	(*GetReferenceImageRequest)(nil),           // 19: google.cloud.vision.v1.GetReferenceImageRequest
2939	(*DeleteReferenceImageRequest)(nil),        // 20: google.cloud.vision.v1.DeleteReferenceImageRequest
2940	(*AddProductToProductSetRequest)(nil),      // 21: google.cloud.vision.v1.AddProductToProductSetRequest
2941	(*RemoveProductFromProductSetRequest)(nil), // 22: google.cloud.vision.v1.RemoveProductFromProductSetRequest
2942	(*ListProductsInProductSetRequest)(nil),    // 23: google.cloud.vision.v1.ListProductsInProductSetRequest
2943	(*ListProductsInProductSetResponse)(nil),   // 24: google.cloud.vision.v1.ListProductsInProductSetResponse
2944	(*ImportProductSetsGcsSource)(nil),         // 25: google.cloud.vision.v1.ImportProductSetsGcsSource
2945	(*ImportProductSetsInputConfig)(nil),       // 26: google.cloud.vision.v1.ImportProductSetsInputConfig
2946	(*ImportProductSetsRequest)(nil),           // 27: google.cloud.vision.v1.ImportProductSetsRequest
2947	(*ImportProductSetsResponse)(nil),          // 28: google.cloud.vision.v1.ImportProductSetsResponse
2948	(*BatchOperationMetadata)(nil),             // 29: google.cloud.vision.v1.BatchOperationMetadata
2949	(*ProductSetPurgeConfig)(nil),              // 30: google.cloud.vision.v1.ProductSetPurgeConfig
2950	(*PurgeProductsRequest)(nil),               // 31: google.cloud.vision.v1.PurgeProductsRequest
2951	(*Product_KeyValue)(nil),                   // 32: google.cloud.vision.v1.Product.KeyValue
2952	(*timestamppb.Timestamp)(nil),              // 33: google.protobuf.Timestamp
2953	(*status.Status)(nil),                      // 34: google.rpc.Status
2954	(*BoundingPoly)(nil),                       // 35: google.cloud.vision.v1.BoundingPoly
2955	(*fieldmaskpb.FieldMask)(nil),              // 36: google.protobuf.FieldMask
2956	(*emptypb.Empty)(nil),                      // 37: google.protobuf.Empty
2957	(*longrunning.Operation)(nil),              // 38: google.longrunning.Operation
2958}
2959var file_google_cloud_vision_v1_product_search_service_proto_depIdxs = []int32{
2960	32, // 0: google.cloud.vision.v1.Product.product_labels:type_name -> google.cloud.vision.v1.Product.KeyValue
2961	33, // 1: google.cloud.vision.v1.ProductSet.index_time:type_name -> google.protobuf.Timestamp
2962	34, // 2: google.cloud.vision.v1.ProductSet.index_error:type_name -> google.rpc.Status
2963	35, // 3: google.cloud.vision.v1.ReferenceImage.bounding_polys:type_name -> google.cloud.vision.v1.BoundingPoly
2964	1,  // 4: google.cloud.vision.v1.CreateProductRequest.product:type_name -> google.cloud.vision.v1.Product
2965	1,  // 5: google.cloud.vision.v1.ListProductsResponse.products:type_name -> google.cloud.vision.v1.Product
2966	1,  // 6: google.cloud.vision.v1.UpdateProductRequest.product:type_name -> google.cloud.vision.v1.Product
2967	36, // 7: google.cloud.vision.v1.UpdateProductRequest.update_mask:type_name -> google.protobuf.FieldMask
2968	2,  // 8: google.cloud.vision.v1.CreateProductSetRequest.product_set:type_name -> google.cloud.vision.v1.ProductSet
2969	2,  // 9: google.cloud.vision.v1.ListProductSetsResponse.product_sets:type_name -> google.cloud.vision.v1.ProductSet
2970	2,  // 10: google.cloud.vision.v1.UpdateProductSetRequest.product_set:type_name -> google.cloud.vision.v1.ProductSet
2971	36, // 11: google.cloud.vision.v1.UpdateProductSetRequest.update_mask:type_name -> google.protobuf.FieldMask
2972	3,  // 12: google.cloud.vision.v1.CreateReferenceImageRequest.reference_image:type_name -> google.cloud.vision.v1.ReferenceImage
2973	3,  // 13: google.cloud.vision.v1.ListReferenceImagesResponse.reference_images:type_name -> google.cloud.vision.v1.ReferenceImage
2974	1,  // 14: google.cloud.vision.v1.ListProductsInProductSetResponse.products:type_name -> google.cloud.vision.v1.Product
2975	25, // 15: google.cloud.vision.v1.ImportProductSetsInputConfig.gcs_source:type_name -> google.cloud.vision.v1.ImportProductSetsGcsSource
2976	26, // 16: google.cloud.vision.v1.ImportProductSetsRequest.input_config:type_name -> google.cloud.vision.v1.ImportProductSetsInputConfig
2977	3,  // 17: google.cloud.vision.v1.ImportProductSetsResponse.reference_images:type_name -> google.cloud.vision.v1.ReferenceImage
2978	34, // 18: google.cloud.vision.v1.ImportProductSetsResponse.statuses:type_name -> google.rpc.Status
2979	0,  // 19: google.cloud.vision.v1.BatchOperationMetadata.state:type_name -> google.cloud.vision.v1.BatchOperationMetadata.State
2980	33, // 20: google.cloud.vision.v1.BatchOperationMetadata.submit_time:type_name -> google.protobuf.Timestamp
2981	33, // 21: google.cloud.vision.v1.BatchOperationMetadata.end_time:type_name -> google.protobuf.Timestamp
2982	30, // 22: google.cloud.vision.v1.PurgeProductsRequest.product_set_purge_config:type_name -> google.cloud.vision.v1.ProductSetPurgeConfig
2983	10, // 23: google.cloud.vision.v1.ProductSearch.CreateProductSet:input_type -> google.cloud.vision.v1.CreateProductSetRequest
2984	11, // 24: google.cloud.vision.v1.ProductSearch.ListProductSets:input_type -> google.cloud.vision.v1.ListProductSetsRequest
2985	13, // 25: google.cloud.vision.v1.ProductSearch.GetProductSet:input_type -> google.cloud.vision.v1.GetProductSetRequest
2986	14, // 26: google.cloud.vision.v1.ProductSearch.UpdateProductSet:input_type -> google.cloud.vision.v1.UpdateProductSetRequest
2987	15, // 27: google.cloud.vision.v1.ProductSearch.DeleteProductSet:input_type -> google.cloud.vision.v1.DeleteProductSetRequest
2988	4,  // 28: google.cloud.vision.v1.ProductSearch.CreateProduct:input_type -> google.cloud.vision.v1.CreateProductRequest
2989	5,  // 29: google.cloud.vision.v1.ProductSearch.ListProducts:input_type -> google.cloud.vision.v1.ListProductsRequest
2990	7,  // 30: google.cloud.vision.v1.ProductSearch.GetProduct:input_type -> google.cloud.vision.v1.GetProductRequest
2991	8,  // 31: google.cloud.vision.v1.ProductSearch.UpdateProduct:input_type -> google.cloud.vision.v1.UpdateProductRequest
2992	9,  // 32: google.cloud.vision.v1.ProductSearch.DeleteProduct:input_type -> google.cloud.vision.v1.DeleteProductRequest
2993	16, // 33: google.cloud.vision.v1.ProductSearch.CreateReferenceImage:input_type -> google.cloud.vision.v1.CreateReferenceImageRequest
2994	20, // 34: google.cloud.vision.v1.ProductSearch.DeleteReferenceImage:input_type -> google.cloud.vision.v1.DeleteReferenceImageRequest
2995	17, // 35: google.cloud.vision.v1.ProductSearch.ListReferenceImages:input_type -> google.cloud.vision.v1.ListReferenceImagesRequest
2996	19, // 36: google.cloud.vision.v1.ProductSearch.GetReferenceImage:input_type -> google.cloud.vision.v1.GetReferenceImageRequest
2997	21, // 37: google.cloud.vision.v1.ProductSearch.AddProductToProductSet:input_type -> google.cloud.vision.v1.AddProductToProductSetRequest
2998	22, // 38: google.cloud.vision.v1.ProductSearch.RemoveProductFromProductSet:input_type -> google.cloud.vision.v1.RemoveProductFromProductSetRequest
2999	23, // 39: google.cloud.vision.v1.ProductSearch.ListProductsInProductSet:input_type -> google.cloud.vision.v1.ListProductsInProductSetRequest
3000	27, // 40: google.cloud.vision.v1.ProductSearch.ImportProductSets:input_type -> google.cloud.vision.v1.ImportProductSetsRequest
3001	31, // 41: google.cloud.vision.v1.ProductSearch.PurgeProducts:input_type -> google.cloud.vision.v1.PurgeProductsRequest
3002	2,  // 42: google.cloud.vision.v1.ProductSearch.CreateProductSet:output_type -> google.cloud.vision.v1.ProductSet
3003	12, // 43: google.cloud.vision.v1.ProductSearch.ListProductSets:output_type -> google.cloud.vision.v1.ListProductSetsResponse
3004	2,  // 44: google.cloud.vision.v1.ProductSearch.GetProductSet:output_type -> google.cloud.vision.v1.ProductSet
3005	2,  // 45: google.cloud.vision.v1.ProductSearch.UpdateProductSet:output_type -> google.cloud.vision.v1.ProductSet
3006	37, // 46: google.cloud.vision.v1.ProductSearch.DeleteProductSet:output_type -> google.protobuf.Empty
3007	1,  // 47: google.cloud.vision.v1.ProductSearch.CreateProduct:output_type -> google.cloud.vision.v1.Product
3008	6,  // 48: google.cloud.vision.v1.ProductSearch.ListProducts:output_type -> google.cloud.vision.v1.ListProductsResponse
3009	1,  // 49: google.cloud.vision.v1.ProductSearch.GetProduct:output_type -> google.cloud.vision.v1.Product
3010	1,  // 50: google.cloud.vision.v1.ProductSearch.UpdateProduct:output_type -> google.cloud.vision.v1.Product
3011	37, // 51: google.cloud.vision.v1.ProductSearch.DeleteProduct:output_type -> google.protobuf.Empty
3012	3,  // 52: google.cloud.vision.v1.ProductSearch.CreateReferenceImage:output_type -> google.cloud.vision.v1.ReferenceImage
3013	37, // 53: google.cloud.vision.v1.ProductSearch.DeleteReferenceImage:output_type -> google.protobuf.Empty
3014	18, // 54: google.cloud.vision.v1.ProductSearch.ListReferenceImages:output_type -> google.cloud.vision.v1.ListReferenceImagesResponse
3015	3,  // 55: google.cloud.vision.v1.ProductSearch.GetReferenceImage:output_type -> google.cloud.vision.v1.ReferenceImage
3016	37, // 56: google.cloud.vision.v1.ProductSearch.AddProductToProductSet:output_type -> google.protobuf.Empty
3017	37, // 57: google.cloud.vision.v1.ProductSearch.RemoveProductFromProductSet:output_type -> google.protobuf.Empty
3018	24, // 58: google.cloud.vision.v1.ProductSearch.ListProductsInProductSet:output_type -> google.cloud.vision.v1.ListProductsInProductSetResponse
3019	38, // 59: google.cloud.vision.v1.ProductSearch.ImportProductSets:output_type -> google.longrunning.Operation
3020	38, // 60: google.cloud.vision.v1.ProductSearch.PurgeProducts:output_type -> google.longrunning.Operation
3021	42, // [42:61] is the sub-list for method output_type
3022	23, // [23:42] is the sub-list for method input_type
3023	23, // [23:23] is the sub-list for extension type_name
3024	23, // [23:23] is the sub-list for extension extendee
3025	0,  // [0:23] is the sub-list for field type_name
3026}
3027
3028func init() { file_google_cloud_vision_v1_product_search_service_proto_init() }
3029func file_google_cloud_vision_v1_product_search_service_proto_init() {
3030	if File_google_cloud_vision_v1_product_search_service_proto != nil {
3031		return
3032	}
3033	file_google_cloud_vision_v1_geometry_proto_init()
3034	if !protoimpl.UnsafeEnabled {
3035		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
3036			switch v := v.(*Product); i {
3037			case 0:
3038				return &v.state
3039			case 1:
3040				return &v.sizeCache
3041			case 2:
3042				return &v.unknownFields
3043			default:
3044				return nil
3045			}
3046		}
3047		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
3048			switch v := v.(*ProductSet); i {
3049			case 0:
3050				return &v.state
3051			case 1:
3052				return &v.sizeCache
3053			case 2:
3054				return &v.unknownFields
3055			default:
3056				return nil
3057			}
3058		}
3059		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
3060			switch v := v.(*ReferenceImage); i {
3061			case 0:
3062				return &v.state
3063			case 1:
3064				return &v.sizeCache
3065			case 2:
3066				return &v.unknownFields
3067			default:
3068				return nil
3069			}
3070		}
3071		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
3072			switch v := v.(*CreateProductRequest); i {
3073			case 0:
3074				return &v.state
3075			case 1:
3076				return &v.sizeCache
3077			case 2:
3078				return &v.unknownFields
3079			default:
3080				return nil
3081			}
3082		}
3083		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
3084			switch v := v.(*ListProductsRequest); i {
3085			case 0:
3086				return &v.state
3087			case 1:
3088				return &v.sizeCache
3089			case 2:
3090				return &v.unknownFields
3091			default:
3092				return nil
3093			}
3094		}
3095		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
3096			switch v := v.(*ListProductsResponse); i {
3097			case 0:
3098				return &v.state
3099			case 1:
3100				return &v.sizeCache
3101			case 2:
3102				return &v.unknownFields
3103			default:
3104				return nil
3105			}
3106		}
3107		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
3108			switch v := v.(*GetProductRequest); i {
3109			case 0:
3110				return &v.state
3111			case 1:
3112				return &v.sizeCache
3113			case 2:
3114				return &v.unknownFields
3115			default:
3116				return nil
3117			}
3118		}
3119		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
3120			switch v := v.(*UpdateProductRequest); i {
3121			case 0:
3122				return &v.state
3123			case 1:
3124				return &v.sizeCache
3125			case 2:
3126				return &v.unknownFields
3127			default:
3128				return nil
3129			}
3130		}
3131		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
3132			switch v := v.(*DeleteProductRequest); i {
3133			case 0:
3134				return &v.state
3135			case 1:
3136				return &v.sizeCache
3137			case 2:
3138				return &v.unknownFields
3139			default:
3140				return nil
3141			}
3142		}
3143		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
3144			switch v := v.(*CreateProductSetRequest); i {
3145			case 0:
3146				return &v.state
3147			case 1:
3148				return &v.sizeCache
3149			case 2:
3150				return &v.unknownFields
3151			default:
3152				return nil
3153			}
3154		}
3155		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
3156			switch v := v.(*ListProductSetsRequest); i {
3157			case 0:
3158				return &v.state
3159			case 1:
3160				return &v.sizeCache
3161			case 2:
3162				return &v.unknownFields
3163			default:
3164				return nil
3165			}
3166		}
3167		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
3168			switch v := v.(*ListProductSetsResponse); i {
3169			case 0:
3170				return &v.state
3171			case 1:
3172				return &v.sizeCache
3173			case 2:
3174				return &v.unknownFields
3175			default:
3176				return nil
3177			}
3178		}
3179		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
3180			switch v := v.(*GetProductSetRequest); i {
3181			case 0:
3182				return &v.state
3183			case 1:
3184				return &v.sizeCache
3185			case 2:
3186				return &v.unknownFields
3187			default:
3188				return nil
3189			}
3190		}
3191		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
3192			switch v := v.(*UpdateProductSetRequest); i {
3193			case 0:
3194				return &v.state
3195			case 1:
3196				return &v.sizeCache
3197			case 2:
3198				return &v.unknownFields
3199			default:
3200				return nil
3201			}
3202		}
3203		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
3204			switch v := v.(*DeleteProductSetRequest); i {
3205			case 0:
3206				return &v.state
3207			case 1:
3208				return &v.sizeCache
3209			case 2:
3210				return &v.unknownFields
3211			default:
3212				return nil
3213			}
3214		}
3215		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
3216			switch v := v.(*CreateReferenceImageRequest); i {
3217			case 0:
3218				return &v.state
3219			case 1:
3220				return &v.sizeCache
3221			case 2:
3222				return &v.unknownFields
3223			default:
3224				return nil
3225			}
3226		}
3227		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
3228			switch v := v.(*ListReferenceImagesRequest); i {
3229			case 0:
3230				return &v.state
3231			case 1:
3232				return &v.sizeCache
3233			case 2:
3234				return &v.unknownFields
3235			default:
3236				return nil
3237			}
3238		}
3239		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
3240			switch v := v.(*ListReferenceImagesResponse); i {
3241			case 0:
3242				return &v.state
3243			case 1:
3244				return &v.sizeCache
3245			case 2:
3246				return &v.unknownFields
3247			default:
3248				return nil
3249			}
3250		}
3251		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
3252			switch v := v.(*GetReferenceImageRequest); i {
3253			case 0:
3254				return &v.state
3255			case 1:
3256				return &v.sizeCache
3257			case 2:
3258				return &v.unknownFields
3259			default:
3260				return nil
3261			}
3262		}
3263		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
3264			switch v := v.(*DeleteReferenceImageRequest); i {
3265			case 0:
3266				return &v.state
3267			case 1:
3268				return &v.sizeCache
3269			case 2:
3270				return &v.unknownFields
3271			default:
3272				return nil
3273			}
3274		}
3275		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
3276			switch v := v.(*AddProductToProductSetRequest); i {
3277			case 0:
3278				return &v.state
3279			case 1:
3280				return &v.sizeCache
3281			case 2:
3282				return &v.unknownFields
3283			default:
3284				return nil
3285			}
3286		}
3287		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
3288			switch v := v.(*RemoveProductFromProductSetRequest); i {
3289			case 0:
3290				return &v.state
3291			case 1:
3292				return &v.sizeCache
3293			case 2:
3294				return &v.unknownFields
3295			default:
3296				return nil
3297			}
3298		}
3299		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
3300			switch v := v.(*ListProductsInProductSetRequest); i {
3301			case 0:
3302				return &v.state
3303			case 1:
3304				return &v.sizeCache
3305			case 2:
3306				return &v.unknownFields
3307			default:
3308				return nil
3309			}
3310		}
3311		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
3312			switch v := v.(*ListProductsInProductSetResponse); i {
3313			case 0:
3314				return &v.state
3315			case 1:
3316				return &v.sizeCache
3317			case 2:
3318				return &v.unknownFields
3319			default:
3320				return nil
3321			}
3322		}
3323		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
3324			switch v := v.(*ImportProductSetsGcsSource); i {
3325			case 0:
3326				return &v.state
3327			case 1:
3328				return &v.sizeCache
3329			case 2:
3330				return &v.unknownFields
3331			default:
3332				return nil
3333			}
3334		}
3335		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
3336			switch v := v.(*ImportProductSetsInputConfig); i {
3337			case 0:
3338				return &v.state
3339			case 1:
3340				return &v.sizeCache
3341			case 2:
3342				return &v.unknownFields
3343			default:
3344				return nil
3345			}
3346		}
3347		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
3348			switch v := v.(*ImportProductSetsRequest); i {
3349			case 0:
3350				return &v.state
3351			case 1:
3352				return &v.sizeCache
3353			case 2:
3354				return &v.unknownFields
3355			default:
3356				return nil
3357			}
3358		}
3359		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
3360			switch v := v.(*ImportProductSetsResponse); i {
3361			case 0:
3362				return &v.state
3363			case 1:
3364				return &v.sizeCache
3365			case 2:
3366				return &v.unknownFields
3367			default:
3368				return nil
3369			}
3370		}
3371		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
3372			switch v := v.(*BatchOperationMetadata); i {
3373			case 0:
3374				return &v.state
3375			case 1:
3376				return &v.sizeCache
3377			case 2:
3378				return &v.unknownFields
3379			default:
3380				return nil
3381			}
3382		}
3383		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
3384			switch v := v.(*ProductSetPurgeConfig); i {
3385			case 0:
3386				return &v.state
3387			case 1:
3388				return &v.sizeCache
3389			case 2:
3390				return &v.unknownFields
3391			default:
3392				return nil
3393			}
3394		}
3395		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
3396			switch v := v.(*PurgeProductsRequest); i {
3397			case 0:
3398				return &v.state
3399			case 1:
3400				return &v.sizeCache
3401			case 2:
3402				return &v.unknownFields
3403			default:
3404				return nil
3405			}
3406		}
3407		file_google_cloud_vision_v1_product_search_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
3408			switch v := v.(*Product_KeyValue); i {
3409			case 0:
3410				return &v.state
3411			case 1:
3412				return &v.sizeCache
3413			case 2:
3414				return &v.unknownFields
3415			default:
3416				return nil
3417			}
3418		}
3419	}
3420	file_google_cloud_vision_v1_product_search_service_proto_msgTypes[25].OneofWrappers = []interface{}{
3421		(*ImportProductSetsInputConfig_GcsSource)(nil),
3422	}
3423	file_google_cloud_vision_v1_product_search_service_proto_msgTypes[30].OneofWrappers = []interface{}{
3424		(*PurgeProductsRequest_ProductSetPurgeConfig)(nil),
3425		(*PurgeProductsRequest_DeleteOrphanProducts)(nil),
3426	}
3427	type x struct{}
3428	out := protoimpl.TypeBuilder{
3429		File: protoimpl.DescBuilder{
3430			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
3431			RawDescriptor: file_google_cloud_vision_v1_product_search_service_proto_rawDesc,
3432			NumEnums:      1,
3433			NumMessages:   32,
3434			NumExtensions: 0,
3435			NumServices:   1,
3436		},
3437		GoTypes:           file_google_cloud_vision_v1_product_search_service_proto_goTypes,
3438		DependencyIndexes: file_google_cloud_vision_v1_product_search_service_proto_depIdxs,
3439		EnumInfos:         file_google_cloud_vision_v1_product_search_service_proto_enumTypes,
3440		MessageInfos:      file_google_cloud_vision_v1_product_search_service_proto_msgTypes,
3441	}.Build()
3442	File_google_cloud_vision_v1_product_search_service_proto = out.File
3443	file_google_cloud_vision_v1_product_search_service_proto_rawDesc = nil
3444	file_google_cloud_vision_v1_product_search_service_proto_goTypes = nil
3445	file_google_cloud_vision_v1_product_search_service_proto_depIdxs = nil
3446}
3447
3448// Reference imports to suppress errors if they are not otherwise used.
3449var _ context.Context
3450var _ grpc.ClientConnInterface
3451
3452// This is a compile-time assertion to ensure that this generated file
3453// is compatible with the grpc package it is being compiled against.
3454const _ = grpc.SupportPackageIsVersion6
3455
3456// ProductSearchClient is the client API for ProductSearch service.
3457//
3458// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
3459type ProductSearchClient interface {
3460	// Creates and returns a new ProductSet resource.
3461	//
3462	// Possible errors:
3463	//
3464	// * Returns INVALID_ARGUMENT if display_name is missing, or is longer than
3465	//   4096 characters.
3466	CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error)
3467	// Lists ProductSets in an unspecified order.
3468	//
3469	// Possible errors:
3470	//
3471	// * Returns INVALID_ARGUMENT if page_size is greater than 100, or less
3472	//   than 1.
3473	ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error)
3474	// Gets information associated with a ProductSet.
3475	//
3476	// Possible errors:
3477	//
3478	// * Returns NOT_FOUND if the ProductSet does not exist.
3479	GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error)
3480	// Makes changes to a ProductSet resource.
3481	// Only display_name can be updated currently.
3482	//
3483	// Possible errors:
3484	//
3485	// * Returns NOT_FOUND if the ProductSet does not exist.
3486	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but
3487	//   missing from the request or longer than 4096 characters.
3488	UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error)
3489	// Permanently deletes a ProductSet. Products and ReferenceImages in the
3490	// ProductSet are not deleted.
3491	//
3492	// The actual image files are not deleted from Google Cloud Storage.
3493	DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
3494	// Creates and returns a new product resource.
3495	//
3496	// Possible errors:
3497	//
3498	// * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096
3499	//   characters.
3500	// * Returns INVALID_ARGUMENT if description is longer than 4096 characters.
3501	// * Returns INVALID_ARGUMENT if product_category is missing or invalid.
3502	CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error)
3503	// Lists products in an unspecified order.
3504	//
3505	// Possible errors:
3506	//
3507	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
3508	ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error)
3509	// Gets information associated with a Product.
3510	//
3511	// Possible errors:
3512	//
3513	// * Returns NOT_FOUND if the Product does not exist.
3514	GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error)
3515	// Makes changes to a Product resource.
3516	// Only the `display_name`, `description`, and `labels` fields can be updated
3517	// right now.
3518	//
3519	// If labels are updated, the change will not be reflected in queries until
3520	// the next index time.
3521	//
3522	// Possible errors:
3523	//
3524	// * Returns NOT_FOUND if the Product does not exist.
3525	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but is
3526	//   missing from the request or longer than 4096 characters.
3527	// * Returns INVALID_ARGUMENT if description is present in update_mask but is
3528	//   longer than 4096 characters.
3529	// * Returns INVALID_ARGUMENT if product_category is present in update_mask.
3530	UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error)
3531	// Permanently deletes a product and its reference images.
3532	//
3533	// Metadata of the product and all its images will be deleted right away, but
3534	// search queries against ProductSets containing the product may still work
3535	// until all related caches are refreshed.
3536	DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
3537	// Creates and returns a new ReferenceImage resource.
3538	//
3539	// The `bounding_poly` field is optional. If `bounding_poly` is not specified,
3540	// the system will try to detect regions of interest in the image that are
3541	// compatible with the product_category on the parent product. If it is
3542	// specified, detection is ALWAYS skipped. The system converts polygons into
3543	// non-rotated rectangles.
3544	//
3545	// Note that the pipeline will resize the image if the image resolution is too
3546	// large to process (above 50MP).
3547	//
3548	// Possible errors:
3549	//
3550	// * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096
3551	//   characters.
3552	// * Returns INVALID_ARGUMENT if the product does not exist.
3553	// * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing
3554	//   compatible with the parent product's product_category is detected.
3555	// * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons.
3556	CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error)
3557	// Permanently deletes a reference image.
3558	//
3559	// The image metadata will be deleted right away, but search queries
3560	// against ProductSets containing the image may still work until all related
3561	// caches are refreshed.
3562	//
3563	// The actual image files are not deleted from Google Cloud Storage.
3564	DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
3565	// Lists reference images.
3566	//
3567	// Possible errors:
3568	//
3569	// * Returns NOT_FOUND if the parent product does not exist.
3570	// * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less
3571	//   than 1.
3572	ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error)
3573	// Gets information associated with a ReferenceImage.
3574	//
3575	// Possible errors:
3576	//
3577	// * Returns NOT_FOUND if the specified image does not exist.
3578	GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error)
3579	// Adds a Product to the specified ProductSet. If the Product is already
3580	// present, no change is made.
3581	//
3582	// One Product can be added to at most 100 ProductSets.
3583	//
3584	// Possible errors:
3585	//
3586	// * Returns NOT_FOUND if the Product or the ProductSet doesn't exist.
3587	AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
3588	// Removes a Product from the specified ProductSet.
3589	RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error)
3590	// Lists the Products in a ProductSet, in an unspecified order. If the
3591	// ProductSet does not exist, the products field of the response will be
3592	// empty.
3593	//
3594	// Possible errors:
3595	//
3596	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
3597	ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error)
3598	// Asynchronous API that imports a list of reference images to specified
3599	// product sets based on a list of image information.
3600	//
3601	// The [google.longrunning.Operation][google.longrunning.Operation] API can be used to keep track of the
3602	// progress and results of the request.
3603	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
3604	// `Operation.response` contains `ImportProductSetsResponse`. (results)
3605	//
3606	// The input source of this method is a csv file on Google Cloud Storage.
3607	// For the format of the csv file please see
3608	// [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1.ImportProductSetsGcsSource.csv_file_uri].
3609	ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
3610	// Asynchronous API to delete all Products in a ProductSet or all Products
3611	// that are in no ProductSet.
3612	//
3613	// If a Product is a member of the specified ProductSet in addition to other
3614	// ProductSets, the Product will still be deleted.
3615	//
3616	// It is recommended to not delete the specified ProductSet until after this
3617	// operation has completed. It is also recommended to not add any of the
3618	// Products involved in the batch delete to a new ProductSet while this
3619	// operation is running because those Products may still end up deleted.
3620	//
3621	// It's not possible to undo the PurgeProducts operation. Therefore, it is
3622	// recommended to keep the csv files used in ImportProductSets (if that was
3623	// how you originally built the Product Set) before starting PurgeProducts, in
3624	// case you need to re-import the data after deletion.
3625	//
3626	// If the plan is to purge all of the Products from a ProductSet and then
3627	// re-use the empty ProductSet to re-import new Products into the empty
3628	// ProductSet, you must wait until the PurgeProducts operation has finished
3629	// for that ProductSet.
3630	//
3631	// The [google.longrunning.Operation][google.longrunning.Operation] API can be used to keep track of the
3632	// progress and results of the request.
3633	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
3634	PurgeProducts(ctx context.Context, in *PurgeProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error)
3635}
3636
3637type productSearchClient struct {
3638	cc grpc.ClientConnInterface
3639}
3640
3641func NewProductSearchClient(cc grpc.ClientConnInterface) ProductSearchClient {
3642	return &productSearchClient{cc}
3643}
3644
3645func (c *productSearchClient) CreateProductSet(ctx context.Context, in *CreateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) {
3646	out := new(ProductSet)
3647	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/CreateProductSet", in, out, opts...)
3648	if err != nil {
3649		return nil, err
3650	}
3651	return out, nil
3652}
3653
3654func (c *productSearchClient) ListProductSets(ctx context.Context, in *ListProductSetsRequest, opts ...grpc.CallOption) (*ListProductSetsResponse, error) {
3655	out := new(ListProductSetsResponse)
3656	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ListProductSets", in, out, opts...)
3657	if err != nil {
3658		return nil, err
3659	}
3660	return out, nil
3661}
3662
3663func (c *productSearchClient) GetProductSet(ctx context.Context, in *GetProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) {
3664	out := new(ProductSet)
3665	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/GetProductSet", in, out, opts...)
3666	if err != nil {
3667		return nil, err
3668	}
3669	return out, nil
3670}
3671
3672func (c *productSearchClient) UpdateProductSet(ctx context.Context, in *UpdateProductSetRequest, opts ...grpc.CallOption) (*ProductSet, error) {
3673	out := new(ProductSet)
3674	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/UpdateProductSet", in, out, opts...)
3675	if err != nil {
3676		return nil, err
3677	}
3678	return out, nil
3679}
3680
3681func (c *productSearchClient) DeleteProductSet(ctx context.Context, in *DeleteProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
3682	out := new(emptypb.Empty)
3683	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/DeleteProductSet", in, out, opts...)
3684	if err != nil {
3685		return nil, err
3686	}
3687	return out, nil
3688}
3689
3690func (c *productSearchClient) CreateProduct(ctx context.Context, in *CreateProductRequest, opts ...grpc.CallOption) (*Product, error) {
3691	out := new(Product)
3692	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/CreateProduct", in, out, opts...)
3693	if err != nil {
3694		return nil, err
3695	}
3696	return out, nil
3697}
3698
3699func (c *productSearchClient) ListProducts(ctx context.Context, in *ListProductsRequest, opts ...grpc.CallOption) (*ListProductsResponse, error) {
3700	out := new(ListProductsResponse)
3701	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ListProducts", in, out, opts...)
3702	if err != nil {
3703		return nil, err
3704	}
3705	return out, nil
3706}
3707
3708func (c *productSearchClient) GetProduct(ctx context.Context, in *GetProductRequest, opts ...grpc.CallOption) (*Product, error) {
3709	out := new(Product)
3710	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/GetProduct", in, out, opts...)
3711	if err != nil {
3712		return nil, err
3713	}
3714	return out, nil
3715}
3716
3717func (c *productSearchClient) UpdateProduct(ctx context.Context, in *UpdateProductRequest, opts ...grpc.CallOption) (*Product, error) {
3718	out := new(Product)
3719	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/UpdateProduct", in, out, opts...)
3720	if err != nil {
3721		return nil, err
3722	}
3723	return out, nil
3724}
3725
3726func (c *productSearchClient) DeleteProduct(ctx context.Context, in *DeleteProductRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
3727	out := new(emptypb.Empty)
3728	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/DeleteProduct", in, out, opts...)
3729	if err != nil {
3730		return nil, err
3731	}
3732	return out, nil
3733}
3734
3735func (c *productSearchClient) CreateReferenceImage(ctx context.Context, in *CreateReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) {
3736	out := new(ReferenceImage)
3737	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/CreateReferenceImage", in, out, opts...)
3738	if err != nil {
3739		return nil, err
3740	}
3741	return out, nil
3742}
3743
3744func (c *productSearchClient) DeleteReferenceImage(ctx context.Context, in *DeleteReferenceImageRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
3745	out := new(emptypb.Empty)
3746	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/DeleteReferenceImage", in, out, opts...)
3747	if err != nil {
3748		return nil, err
3749	}
3750	return out, nil
3751}
3752
3753func (c *productSearchClient) ListReferenceImages(ctx context.Context, in *ListReferenceImagesRequest, opts ...grpc.CallOption) (*ListReferenceImagesResponse, error) {
3754	out := new(ListReferenceImagesResponse)
3755	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ListReferenceImages", in, out, opts...)
3756	if err != nil {
3757		return nil, err
3758	}
3759	return out, nil
3760}
3761
3762func (c *productSearchClient) GetReferenceImage(ctx context.Context, in *GetReferenceImageRequest, opts ...grpc.CallOption) (*ReferenceImage, error) {
3763	out := new(ReferenceImage)
3764	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/GetReferenceImage", in, out, opts...)
3765	if err != nil {
3766		return nil, err
3767	}
3768	return out, nil
3769}
3770
3771func (c *productSearchClient) AddProductToProductSet(ctx context.Context, in *AddProductToProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
3772	out := new(emptypb.Empty)
3773	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/AddProductToProductSet", in, out, opts...)
3774	if err != nil {
3775		return nil, err
3776	}
3777	return out, nil
3778}
3779
3780func (c *productSearchClient) RemoveProductFromProductSet(ctx context.Context, in *RemoveProductFromProductSetRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) {
3781	out := new(emptypb.Empty)
3782	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/RemoveProductFromProductSet", in, out, opts...)
3783	if err != nil {
3784		return nil, err
3785	}
3786	return out, nil
3787}
3788
3789func (c *productSearchClient) ListProductsInProductSet(ctx context.Context, in *ListProductsInProductSetRequest, opts ...grpc.CallOption) (*ListProductsInProductSetResponse, error) {
3790	out := new(ListProductsInProductSetResponse)
3791	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ListProductsInProductSet", in, out, opts...)
3792	if err != nil {
3793		return nil, err
3794	}
3795	return out, nil
3796}
3797
3798func (c *productSearchClient) ImportProductSets(ctx context.Context, in *ImportProductSetsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
3799	out := new(longrunning.Operation)
3800	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/ImportProductSets", in, out, opts...)
3801	if err != nil {
3802		return nil, err
3803	}
3804	return out, nil
3805}
3806
3807func (c *productSearchClient) PurgeProducts(ctx context.Context, in *PurgeProductsRequest, opts ...grpc.CallOption) (*longrunning.Operation, error) {
3808	out := new(longrunning.Operation)
3809	err := c.cc.Invoke(ctx, "/google.cloud.vision.v1.ProductSearch/PurgeProducts", in, out, opts...)
3810	if err != nil {
3811		return nil, err
3812	}
3813	return out, nil
3814}
3815
3816// ProductSearchServer is the server API for ProductSearch service.
3817type ProductSearchServer interface {
3818	// Creates and returns a new ProductSet resource.
3819	//
3820	// Possible errors:
3821	//
3822	// * Returns INVALID_ARGUMENT if display_name is missing, or is longer than
3823	//   4096 characters.
3824	CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error)
3825	// Lists ProductSets in an unspecified order.
3826	//
3827	// Possible errors:
3828	//
3829	// * Returns INVALID_ARGUMENT if page_size is greater than 100, or less
3830	//   than 1.
3831	ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error)
3832	// Gets information associated with a ProductSet.
3833	//
3834	// Possible errors:
3835	//
3836	// * Returns NOT_FOUND if the ProductSet does not exist.
3837	GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error)
3838	// Makes changes to a ProductSet resource.
3839	// Only display_name can be updated currently.
3840	//
3841	// Possible errors:
3842	//
3843	// * Returns NOT_FOUND if the ProductSet does not exist.
3844	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but
3845	//   missing from the request or longer than 4096 characters.
3846	UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error)
3847	// Permanently deletes a ProductSet. Products and ReferenceImages in the
3848	// ProductSet are not deleted.
3849	//
3850	// The actual image files are not deleted from Google Cloud Storage.
3851	DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error)
3852	// Creates and returns a new product resource.
3853	//
3854	// Possible errors:
3855	//
3856	// * Returns INVALID_ARGUMENT if display_name is missing or longer than 4096
3857	//   characters.
3858	// * Returns INVALID_ARGUMENT if description is longer than 4096 characters.
3859	// * Returns INVALID_ARGUMENT if product_category is missing or invalid.
3860	CreateProduct(context.Context, *CreateProductRequest) (*Product, error)
3861	// Lists products in an unspecified order.
3862	//
3863	// Possible errors:
3864	//
3865	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
3866	ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error)
3867	// Gets information associated with a Product.
3868	//
3869	// Possible errors:
3870	//
3871	// * Returns NOT_FOUND if the Product does not exist.
3872	GetProduct(context.Context, *GetProductRequest) (*Product, error)
3873	// Makes changes to a Product resource.
3874	// Only the `display_name`, `description`, and `labels` fields can be updated
3875	// right now.
3876	//
3877	// If labels are updated, the change will not be reflected in queries until
3878	// the next index time.
3879	//
3880	// Possible errors:
3881	//
3882	// * Returns NOT_FOUND if the Product does not exist.
3883	// * Returns INVALID_ARGUMENT if display_name is present in update_mask but is
3884	//   missing from the request or longer than 4096 characters.
3885	// * Returns INVALID_ARGUMENT if description is present in update_mask but is
3886	//   longer than 4096 characters.
3887	// * Returns INVALID_ARGUMENT if product_category is present in update_mask.
3888	UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error)
3889	// Permanently deletes a product and its reference images.
3890	//
3891	// Metadata of the product and all its images will be deleted right away, but
3892	// search queries against ProductSets containing the product may still work
3893	// until all related caches are refreshed.
3894	DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error)
3895	// Creates and returns a new ReferenceImage resource.
3896	//
3897	// The `bounding_poly` field is optional. If `bounding_poly` is not specified,
3898	// the system will try to detect regions of interest in the image that are
3899	// compatible with the product_category on the parent product. If it is
3900	// specified, detection is ALWAYS skipped. The system converts polygons into
3901	// non-rotated rectangles.
3902	//
3903	// Note that the pipeline will resize the image if the image resolution is too
3904	// large to process (above 50MP).
3905	//
3906	// Possible errors:
3907	//
3908	// * Returns INVALID_ARGUMENT if the image_uri is missing or longer than 4096
3909	//   characters.
3910	// * Returns INVALID_ARGUMENT if the product does not exist.
3911	// * Returns INVALID_ARGUMENT if bounding_poly is not provided, and nothing
3912	//   compatible with the parent product's product_category is detected.
3913	// * Returns INVALID_ARGUMENT if bounding_poly contains more than 10 polygons.
3914	CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error)
3915	// Permanently deletes a reference image.
3916	//
3917	// The image metadata will be deleted right away, but search queries
3918	// against ProductSets containing the image may still work until all related
3919	// caches are refreshed.
3920	//
3921	// The actual image files are not deleted from Google Cloud Storage.
3922	DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error)
3923	// Lists reference images.
3924	//
3925	// Possible errors:
3926	//
3927	// * Returns NOT_FOUND if the parent product does not exist.
3928	// * Returns INVALID_ARGUMENT if the page_size is greater than 100, or less
3929	//   than 1.
3930	ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error)
3931	// Gets information associated with a ReferenceImage.
3932	//
3933	// Possible errors:
3934	//
3935	// * Returns NOT_FOUND if the specified image does not exist.
3936	GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error)
3937	// Adds a Product to the specified ProductSet. If the Product is already
3938	// present, no change is made.
3939	//
3940	// One Product can be added to at most 100 ProductSets.
3941	//
3942	// Possible errors:
3943	//
3944	// * Returns NOT_FOUND if the Product or the ProductSet doesn't exist.
3945	AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error)
3946	// Removes a Product from the specified ProductSet.
3947	RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error)
3948	// Lists the Products in a ProductSet, in an unspecified order. If the
3949	// ProductSet does not exist, the products field of the response will be
3950	// empty.
3951	//
3952	// Possible errors:
3953	//
3954	// * Returns INVALID_ARGUMENT if page_size is greater than 100 or less than 1.
3955	ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error)
3956	// Asynchronous API that imports a list of reference images to specified
3957	// product sets based on a list of image information.
3958	//
3959	// The [google.longrunning.Operation][google.longrunning.Operation] API can be used to keep track of the
3960	// progress and results of the request.
3961	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
3962	// `Operation.response` contains `ImportProductSetsResponse`. (results)
3963	//
3964	// The input source of this method is a csv file on Google Cloud Storage.
3965	// For the format of the csv file please see
3966	// [ImportProductSetsGcsSource.csv_file_uri][google.cloud.vision.v1.ImportProductSetsGcsSource.csv_file_uri].
3967	ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error)
3968	// Asynchronous API to delete all Products in a ProductSet or all Products
3969	// that are in no ProductSet.
3970	//
3971	// If a Product is a member of the specified ProductSet in addition to other
3972	// ProductSets, the Product will still be deleted.
3973	//
3974	// It is recommended to not delete the specified ProductSet until after this
3975	// operation has completed. It is also recommended to not add any of the
3976	// Products involved in the batch delete to a new ProductSet while this
3977	// operation is running because those Products may still end up deleted.
3978	//
3979	// It's not possible to undo the PurgeProducts operation. Therefore, it is
3980	// recommended to keep the csv files used in ImportProductSets (if that was
3981	// how you originally built the Product Set) before starting PurgeProducts, in
3982	// case you need to re-import the data after deletion.
3983	//
3984	// If the plan is to purge all of the Products from a ProductSet and then
3985	// re-use the empty ProductSet to re-import new Products into the empty
3986	// ProductSet, you must wait until the PurgeProducts operation has finished
3987	// for that ProductSet.
3988	//
3989	// The [google.longrunning.Operation][google.longrunning.Operation] API can be used to keep track of the
3990	// progress and results of the request.
3991	// `Operation.metadata` contains `BatchOperationMetadata`. (progress)
3992	PurgeProducts(context.Context, *PurgeProductsRequest) (*longrunning.Operation, error)
3993}
3994
3995// UnimplementedProductSearchServer can be embedded to have forward compatible implementations.
3996type UnimplementedProductSearchServer struct {
3997}
3998
3999func (*UnimplementedProductSearchServer) CreateProductSet(context.Context, *CreateProductSetRequest) (*ProductSet, error) {
4000	return nil, status1.Errorf(codes.Unimplemented, "method CreateProductSet not implemented")
4001}
4002func (*UnimplementedProductSearchServer) ListProductSets(context.Context, *ListProductSetsRequest) (*ListProductSetsResponse, error) {
4003	return nil, status1.Errorf(codes.Unimplemented, "method ListProductSets not implemented")
4004}
4005func (*UnimplementedProductSearchServer) GetProductSet(context.Context, *GetProductSetRequest) (*ProductSet, error) {
4006	return nil, status1.Errorf(codes.Unimplemented, "method GetProductSet not implemented")
4007}
4008func (*UnimplementedProductSearchServer) UpdateProductSet(context.Context, *UpdateProductSetRequest) (*ProductSet, error) {
4009	return nil, status1.Errorf(codes.Unimplemented, "method UpdateProductSet not implemented")
4010}
4011func (*UnimplementedProductSearchServer) DeleteProductSet(context.Context, *DeleteProductSetRequest) (*emptypb.Empty, error) {
4012	return nil, status1.Errorf(codes.Unimplemented, "method DeleteProductSet not implemented")
4013}
4014func (*UnimplementedProductSearchServer) CreateProduct(context.Context, *CreateProductRequest) (*Product, error) {
4015	return nil, status1.Errorf(codes.Unimplemented, "method CreateProduct not implemented")
4016}
4017func (*UnimplementedProductSearchServer) ListProducts(context.Context, *ListProductsRequest) (*ListProductsResponse, error) {
4018	return nil, status1.Errorf(codes.Unimplemented, "method ListProducts not implemented")
4019}
4020func (*UnimplementedProductSearchServer) GetProduct(context.Context, *GetProductRequest) (*Product, error) {
4021	return nil, status1.Errorf(codes.Unimplemented, "method GetProduct not implemented")
4022}
4023func (*UnimplementedProductSearchServer) UpdateProduct(context.Context, *UpdateProductRequest) (*Product, error) {
4024	return nil, status1.Errorf(codes.Unimplemented, "method UpdateProduct not implemented")
4025}
4026func (*UnimplementedProductSearchServer) DeleteProduct(context.Context, *DeleteProductRequest) (*emptypb.Empty, error) {
4027	return nil, status1.Errorf(codes.Unimplemented, "method DeleteProduct not implemented")
4028}
4029func (*UnimplementedProductSearchServer) CreateReferenceImage(context.Context, *CreateReferenceImageRequest) (*ReferenceImage, error) {
4030	return nil, status1.Errorf(codes.Unimplemented, "method CreateReferenceImage not implemented")
4031}
4032func (*UnimplementedProductSearchServer) DeleteReferenceImage(context.Context, *DeleteReferenceImageRequest) (*emptypb.Empty, error) {
4033	return nil, status1.Errorf(codes.Unimplemented, "method DeleteReferenceImage not implemented")
4034}
4035func (*UnimplementedProductSearchServer) ListReferenceImages(context.Context, *ListReferenceImagesRequest) (*ListReferenceImagesResponse, error) {
4036	return nil, status1.Errorf(codes.Unimplemented, "method ListReferenceImages not implemented")
4037}
4038func (*UnimplementedProductSearchServer) GetReferenceImage(context.Context, *GetReferenceImageRequest) (*ReferenceImage, error) {
4039	return nil, status1.Errorf(codes.Unimplemented, "method GetReferenceImage not implemented")
4040}
4041func (*UnimplementedProductSearchServer) AddProductToProductSet(context.Context, *AddProductToProductSetRequest) (*emptypb.Empty, error) {
4042	return nil, status1.Errorf(codes.Unimplemented, "method AddProductToProductSet not implemented")
4043}
4044func (*UnimplementedProductSearchServer) RemoveProductFromProductSet(context.Context, *RemoveProductFromProductSetRequest) (*emptypb.Empty, error) {
4045	return nil, status1.Errorf(codes.Unimplemented, "method RemoveProductFromProductSet not implemented")
4046}
4047func (*UnimplementedProductSearchServer) ListProductsInProductSet(context.Context, *ListProductsInProductSetRequest) (*ListProductsInProductSetResponse, error) {
4048	return nil, status1.Errorf(codes.Unimplemented, "method ListProductsInProductSet not implemented")
4049}
4050func (*UnimplementedProductSearchServer) ImportProductSets(context.Context, *ImportProductSetsRequest) (*longrunning.Operation, error) {
4051	return nil, status1.Errorf(codes.Unimplemented, "method ImportProductSets not implemented")
4052}
4053func (*UnimplementedProductSearchServer) PurgeProducts(context.Context, *PurgeProductsRequest) (*longrunning.Operation, error) {
4054	return nil, status1.Errorf(codes.Unimplemented, "method PurgeProducts not implemented")
4055}
4056
4057func RegisterProductSearchServer(s *grpc.Server, srv ProductSearchServer) {
4058	s.RegisterService(&_ProductSearch_serviceDesc, srv)
4059}
4060
4061func _ProductSearch_CreateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4062	in := new(CreateProductSetRequest)
4063	if err := dec(in); err != nil {
4064		return nil, err
4065	}
4066	if interceptor == nil {
4067		return srv.(ProductSearchServer).CreateProductSet(ctx, in)
4068	}
4069	info := &grpc.UnaryServerInfo{
4070		Server:     srv,
4071		FullMethod: "/google.cloud.vision.v1.ProductSearch/CreateProductSet",
4072	}
4073	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4074		return srv.(ProductSearchServer).CreateProductSet(ctx, req.(*CreateProductSetRequest))
4075	}
4076	return interceptor(ctx, in, info, handler)
4077}
4078
4079func _ProductSearch_ListProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4080	in := new(ListProductSetsRequest)
4081	if err := dec(in); err != nil {
4082		return nil, err
4083	}
4084	if interceptor == nil {
4085		return srv.(ProductSearchServer).ListProductSets(ctx, in)
4086	}
4087	info := &grpc.UnaryServerInfo{
4088		Server:     srv,
4089		FullMethod: "/google.cloud.vision.v1.ProductSearch/ListProductSets",
4090	}
4091	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4092		return srv.(ProductSearchServer).ListProductSets(ctx, req.(*ListProductSetsRequest))
4093	}
4094	return interceptor(ctx, in, info, handler)
4095}
4096
4097func _ProductSearch_GetProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4098	in := new(GetProductSetRequest)
4099	if err := dec(in); err != nil {
4100		return nil, err
4101	}
4102	if interceptor == nil {
4103		return srv.(ProductSearchServer).GetProductSet(ctx, in)
4104	}
4105	info := &grpc.UnaryServerInfo{
4106		Server:     srv,
4107		FullMethod: "/google.cloud.vision.v1.ProductSearch/GetProductSet",
4108	}
4109	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4110		return srv.(ProductSearchServer).GetProductSet(ctx, req.(*GetProductSetRequest))
4111	}
4112	return interceptor(ctx, in, info, handler)
4113}
4114
4115func _ProductSearch_UpdateProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4116	in := new(UpdateProductSetRequest)
4117	if err := dec(in); err != nil {
4118		return nil, err
4119	}
4120	if interceptor == nil {
4121		return srv.(ProductSearchServer).UpdateProductSet(ctx, in)
4122	}
4123	info := &grpc.UnaryServerInfo{
4124		Server:     srv,
4125		FullMethod: "/google.cloud.vision.v1.ProductSearch/UpdateProductSet",
4126	}
4127	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4128		return srv.(ProductSearchServer).UpdateProductSet(ctx, req.(*UpdateProductSetRequest))
4129	}
4130	return interceptor(ctx, in, info, handler)
4131}
4132
4133func _ProductSearch_DeleteProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4134	in := new(DeleteProductSetRequest)
4135	if err := dec(in); err != nil {
4136		return nil, err
4137	}
4138	if interceptor == nil {
4139		return srv.(ProductSearchServer).DeleteProductSet(ctx, in)
4140	}
4141	info := &grpc.UnaryServerInfo{
4142		Server:     srv,
4143		FullMethod: "/google.cloud.vision.v1.ProductSearch/DeleteProductSet",
4144	}
4145	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4146		return srv.(ProductSearchServer).DeleteProductSet(ctx, req.(*DeleteProductSetRequest))
4147	}
4148	return interceptor(ctx, in, info, handler)
4149}
4150
4151func _ProductSearch_CreateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4152	in := new(CreateProductRequest)
4153	if err := dec(in); err != nil {
4154		return nil, err
4155	}
4156	if interceptor == nil {
4157		return srv.(ProductSearchServer).CreateProduct(ctx, in)
4158	}
4159	info := &grpc.UnaryServerInfo{
4160		Server:     srv,
4161		FullMethod: "/google.cloud.vision.v1.ProductSearch/CreateProduct",
4162	}
4163	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4164		return srv.(ProductSearchServer).CreateProduct(ctx, req.(*CreateProductRequest))
4165	}
4166	return interceptor(ctx, in, info, handler)
4167}
4168
4169func _ProductSearch_ListProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4170	in := new(ListProductsRequest)
4171	if err := dec(in); err != nil {
4172		return nil, err
4173	}
4174	if interceptor == nil {
4175		return srv.(ProductSearchServer).ListProducts(ctx, in)
4176	}
4177	info := &grpc.UnaryServerInfo{
4178		Server:     srv,
4179		FullMethod: "/google.cloud.vision.v1.ProductSearch/ListProducts",
4180	}
4181	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4182		return srv.(ProductSearchServer).ListProducts(ctx, req.(*ListProductsRequest))
4183	}
4184	return interceptor(ctx, in, info, handler)
4185}
4186
4187func _ProductSearch_GetProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4188	in := new(GetProductRequest)
4189	if err := dec(in); err != nil {
4190		return nil, err
4191	}
4192	if interceptor == nil {
4193		return srv.(ProductSearchServer).GetProduct(ctx, in)
4194	}
4195	info := &grpc.UnaryServerInfo{
4196		Server:     srv,
4197		FullMethod: "/google.cloud.vision.v1.ProductSearch/GetProduct",
4198	}
4199	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4200		return srv.(ProductSearchServer).GetProduct(ctx, req.(*GetProductRequest))
4201	}
4202	return interceptor(ctx, in, info, handler)
4203}
4204
4205func _ProductSearch_UpdateProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4206	in := new(UpdateProductRequest)
4207	if err := dec(in); err != nil {
4208		return nil, err
4209	}
4210	if interceptor == nil {
4211		return srv.(ProductSearchServer).UpdateProduct(ctx, in)
4212	}
4213	info := &grpc.UnaryServerInfo{
4214		Server:     srv,
4215		FullMethod: "/google.cloud.vision.v1.ProductSearch/UpdateProduct",
4216	}
4217	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4218		return srv.(ProductSearchServer).UpdateProduct(ctx, req.(*UpdateProductRequest))
4219	}
4220	return interceptor(ctx, in, info, handler)
4221}
4222
4223func _ProductSearch_DeleteProduct_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4224	in := new(DeleteProductRequest)
4225	if err := dec(in); err != nil {
4226		return nil, err
4227	}
4228	if interceptor == nil {
4229		return srv.(ProductSearchServer).DeleteProduct(ctx, in)
4230	}
4231	info := &grpc.UnaryServerInfo{
4232		Server:     srv,
4233		FullMethod: "/google.cloud.vision.v1.ProductSearch/DeleteProduct",
4234	}
4235	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4236		return srv.(ProductSearchServer).DeleteProduct(ctx, req.(*DeleteProductRequest))
4237	}
4238	return interceptor(ctx, in, info, handler)
4239}
4240
4241func _ProductSearch_CreateReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4242	in := new(CreateReferenceImageRequest)
4243	if err := dec(in); err != nil {
4244		return nil, err
4245	}
4246	if interceptor == nil {
4247		return srv.(ProductSearchServer).CreateReferenceImage(ctx, in)
4248	}
4249	info := &grpc.UnaryServerInfo{
4250		Server:     srv,
4251		FullMethod: "/google.cloud.vision.v1.ProductSearch/CreateReferenceImage",
4252	}
4253	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4254		return srv.(ProductSearchServer).CreateReferenceImage(ctx, req.(*CreateReferenceImageRequest))
4255	}
4256	return interceptor(ctx, in, info, handler)
4257}
4258
4259func _ProductSearch_DeleteReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4260	in := new(DeleteReferenceImageRequest)
4261	if err := dec(in); err != nil {
4262		return nil, err
4263	}
4264	if interceptor == nil {
4265		return srv.(ProductSearchServer).DeleteReferenceImage(ctx, in)
4266	}
4267	info := &grpc.UnaryServerInfo{
4268		Server:     srv,
4269		FullMethod: "/google.cloud.vision.v1.ProductSearch/DeleteReferenceImage",
4270	}
4271	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4272		return srv.(ProductSearchServer).DeleteReferenceImage(ctx, req.(*DeleteReferenceImageRequest))
4273	}
4274	return interceptor(ctx, in, info, handler)
4275}
4276
4277func _ProductSearch_ListReferenceImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4278	in := new(ListReferenceImagesRequest)
4279	if err := dec(in); err != nil {
4280		return nil, err
4281	}
4282	if interceptor == nil {
4283		return srv.(ProductSearchServer).ListReferenceImages(ctx, in)
4284	}
4285	info := &grpc.UnaryServerInfo{
4286		Server:     srv,
4287		FullMethod: "/google.cloud.vision.v1.ProductSearch/ListReferenceImages",
4288	}
4289	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4290		return srv.(ProductSearchServer).ListReferenceImages(ctx, req.(*ListReferenceImagesRequest))
4291	}
4292	return interceptor(ctx, in, info, handler)
4293}
4294
4295func _ProductSearch_GetReferenceImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4296	in := new(GetReferenceImageRequest)
4297	if err := dec(in); err != nil {
4298		return nil, err
4299	}
4300	if interceptor == nil {
4301		return srv.(ProductSearchServer).GetReferenceImage(ctx, in)
4302	}
4303	info := &grpc.UnaryServerInfo{
4304		Server:     srv,
4305		FullMethod: "/google.cloud.vision.v1.ProductSearch/GetReferenceImage",
4306	}
4307	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4308		return srv.(ProductSearchServer).GetReferenceImage(ctx, req.(*GetReferenceImageRequest))
4309	}
4310	return interceptor(ctx, in, info, handler)
4311}
4312
4313func _ProductSearch_AddProductToProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4314	in := new(AddProductToProductSetRequest)
4315	if err := dec(in); err != nil {
4316		return nil, err
4317	}
4318	if interceptor == nil {
4319		return srv.(ProductSearchServer).AddProductToProductSet(ctx, in)
4320	}
4321	info := &grpc.UnaryServerInfo{
4322		Server:     srv,
4323		FullMethod: "/google.cloud.vision.v1.ProductSearch/AddProductToProductSet",
4324	}
4325	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4326		return srv.(ProductSearchServer).AddProductToProductSet(ctx, req.(*AddProductToProductSetRequest))
4327	}
4328	return interceptor(ctx, in, info, handler)
4329}
4330
4331func _ProductSearch_RemoveProductFromProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4332	in := new(RemoveProductFromProductSetRequest)
4333	if err := dec(in); err != nil {
4334		return nil, err
4335	}
4336	if interceptor == nil {
4337		return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, in)
4338	}
4339	info := &grpc.UnaryServerInfo{
4340		Server:     srv,
4341		FullMethod: "/google.cloud.vision.v1.ProductSearch/RemoveProductFromProductSet",
4342	}
4343	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4344		return srv.(ProductSearchServer).RemoveProductFromProductSet(ctx, req.(*RemoveProductFromProductSetRequest))
4345	}
4346	return interceptor(ctx, in, info, handler)
4347}
4348
4349func _ProductSearch_ListProductsInProductSet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4350	in := new(ListProductsInProductSetRequest)
4351	if err := dec(in); err != nil {
4352		return nil, err
4353	}
4354	if interceptor == nil {
4355		return srv.(ProductSearchServer).ListProductsInProductSet(ctx, in)
4356	}
4357	info := &grpc.UnaryServerInfo{
4358		Server:     srv,
4359		FullMethod: "/google.cloud.vision.v1.ProductSearch/ListProductsInProductSet",
4360	}
4361	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4362		return srv.(ProductSearchServer).ListProductsInProductSet(ctx, req.(*ListProductsInProductSetRequest))
4363	}
4364	return interceptor(ctx, in, info, handler)
4365}
4366
4367func _ProductSearch_ImportProductSets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4368	in := new(ImportProductSetsRequest)
4369	if err := dec(in); err != nil {
4370		return nil, err
4371	}
4372	if interceptor == nil {
4373		return srv.(ProductSearchServer).ImportProductSets(ctx, in)
4374	}
4375	info := &grpc.UnaryServerInfo{
4376		Server:     srv,
4377		FullMethod: "/google.cloud.vision.v1.ProductSearch/ImportProductSets",
4378	}
4379	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4380		return srv.(ProductSearchServer).ImportProductSets(ctx, req.(*ImportProductSetsRequest))
4381	}
4382	return interceptor(ctx, in, info, handler)
4383}
4384
4385func _ProductSearch_PurgeProducts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
4386	in := new(PurgeProductsRequest)
4387	if err := dec(in); err != nil {
4388		return nil, err
4389	}
4390	if interceptor == nil {
4391		return srv.(ProductSearchServer).PurgeProducts(ctx, in)
4392	}
4393	info := &grpc.UnaryServerInfo{
4394		Server:     srv,
4395		FullMethod: "/google.cloud.vision.v1.ProductSearch/PurgeProducts",
4396	}
4397	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
4398		return srv.(ProductSearchServer).PurgeProducts(ctx, req.(*PurgeProductsRequest))
4399	}
4400	return interceptor(ctx, in, info, handler)
4401}
4402
4403var _ProductSearch_serviceDesc = grpc.ServiceDesc{
4404	ServiceName: "google.cloud.vision.v1.ProductSearch",
4405	HandlerType: (*ProductSearchServer)(nil),
4406	Methods: []grpc.MethodDesc{
4407		{
4408			MethodName: "CreateProductSet",
4409			Handler:    _ProductSearch_CreateProductSet_Handler,
4410		},
4411		{
4412			MethodName: "ListProductSets",
4413			Handler:    _ProductSearch_ListProductSets_Handler,
4414		},
4415		{
4416			MethodName: "GetProductSet",
4417			Handler:    _ProductSearch_GetProductSet_Handler,
4418		},
4419		{
4420			MethodName: "UpdateProductSet",
4421			Handler:    _ProductSearch_UpdateProductSet_Handler,
4422		},
4423		{
4424			MethodName: "DeleteProductSet",
4425			Handler:    _ProductSearch_DeleteProductSet_Handler,
4426		},
4427		{
4428			MethodName: "CreateProduct",
4429			Handler:    _ProductSearch_CreateProduct_Handler,
4430		},
4431		{
4432			MethodName: "ListProducts",
4433			Handler:    _ProductSearch_ListProducts_Handler,
4434		},
4435		{
4436			MethodName: "GetProduct",
4437			Handler:    _ProductSearch_GetProduct_Handler,
4438		},
4439		{
4440			MethodName: "UpdateProduct",
4441			Handler:    _ProductSearch_UpdateProduct_Handler,
4442		},
4443		{
4444			MethodName: "DeleteProduct",
4445			Handler:    _ProductSearch_DeleteProduct_Handler,
4446		},
4447		{
4448			MethodName: "CreateReferenceImage",
4449			Handler:    _ProductSearch_CreateReferenceImage_Handler,
4450		},
4451		{
4452			MethodName: "DeleteReferenceImage",
4453			Handler:    _ProductSearch_DeleteReferenceImage_Handler,
4454		},
4455		{
4456			MethodName: "ListReferenceImages",
4457			Handler:    _ProductSearch_ListReferenceImages_Handler,
4458		},
4459		{
4460			MethodName: "GetReferenceImage",
4461			Handler:    _ProductSearch_GetReferenceImage_Handler,
4462		},
4463		{
4464			MethodName: "AddProductToProductSet",
4465			Handler:    _ProductSearch_AddProductToProductSet_Handler,
4466		},
4467		{
4468			MethodName: "RemoveProductFromProductSet",
4469			Handler:    _ProductSearch_RemoveProductFromProductSet_Handler,
4470		},
4471		{
4472			MethodName: "ListProductsInProductSet",
4473			Handler:    _ProductSearch_ListProductsInProductSet_Handler,
4474		},
4475		{
4476			MethodName: "ImportProductSets",
4477			Handler:    _ProductSearch_ImportProductSets_Handler,
4478		},
4479		{
4480			MethodName: "PurgeProducts",
4481			Handler:    _ProductSearch_PurgeProducts_Handler,
4482		},
4483	},
4484	Streams:  []grpc.StreamDesc{},
4485	Metadata: "google/cloud/vision/v1/product_search_service.proto",
4486}
4487