// Copyright 2025 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.35.2
// 	protoc        v4.25.3
// source: google/cloud/discoveryengine/v1beta/search_service.proto

package discoveryenginepb

import (
	context "context"
	reflect "reflect"
	sync "sync"

	_ "google.golang.org/genproto/googleapis/api/annotations"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	structpb "google.golang.org/protobuf/types/known/structpb"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

// The relevance threshold of the search results. The higher relevance
// threshold is, the higher relevant results are shown and the less number of
// results are returned.
type SearchRequest_RelevanceThreshold int32

const (
	// Default value. In this case, server behavior defaults to Google defined
	// threshold.
	SearchRequest_RELEVANCE_THRESHOLD_UNSPECIFIED SearchRequest_RelevanceThreshold = 0
	// Lowest relevance threshold.
	SearchRequest_LOWEST SearchRequest_RelevanceThreshold = 1
	// Low relevance threshold.
	SearchRequest_LOW SearchRequest_RelevanceThreshold = 2
	// Medium relevance threshold.
	SearchRequest_MEDIUM SearchRequest_RelevanceThreshold = 3
	// High relevance threshold.
	SearchRequest_HIGH SearchRequest_RelevanceThreshold = 4
)

// Enum value maps for SearchRequest_RelevanceThreshold.
var (
	SearchRequest_RelevanceThreshold_name = map[int32]string{
		0: "RELEVANCE_THRESHOLD_UNSPECIFIED",
		1: "LOWEST",
		2: "LOW",
		3: "MEDIUM",
		4: "HIGH",
	}
	SearchRequest_RelevanceThreshold_value = map[string]int32{
		"RELEVANCE_THRESHOLD_UNSPECIFIED": 0,
		"LOWEST":                          1,
		"LOW":                             2,
		"MEDIUM":                          3,
		"HIGH":                            4,
	}
)

func (x SearchRequest_RelevanceThreshold) Enum() *SearchRequest_RelevanceThreshold {
	p := new(SearchRequest_RelevanceThreshold)
	*p = x
	return p
}

func (x SearchRequest_RelevanceThreshold) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchRequest_RelevanceThreshold) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[0].Descriptor()
}

func (SearchRequest_RelevanceThreshold) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[0]
}

func (x SearchRequest_RelevanceThreshold) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchRequest_RelevanceThreshold.Descriptor instead.
func (SearchRequest_RelevanceThreshold) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 0}
}

// The attribute(or function) for which the custom ranking is to be
// applied.
type SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType int32

const (
	// Unspecified AttributeType.
	SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ATTRIBUTE_TYPE_UNSPECIFIED SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType = 0
	// The value of the numerical field will be used to dynamically update
	// the boost amount. In this case, the attribute_value (the x value)
	// of the control point will be the actual value of the numerical
	// field for which the boost_amount is specified.
	SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_NUMERICAL SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType = 1
	// For the freshness use case the attribute value will be the duration
	// between the current time and the date in the datetime field
	// specified. The value must be formatted as an XSD `dayTimeDuration`
	// value (a restricted subset of an ISO 8601 duration value). The
	// pattern for this is: `[nD][T[nH][nM][nS]]`.
	// For example, `5D`, `3DT12H30M`, `T24H`.
	SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_FRESHNESS SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType = 2
)

// Enum value maps for SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType.
var (
	SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType_name = map[int32]string{
		0: "ATTRIBUTE_TYPE_UNSPECIFIED",
		1: "NUMERICAL",
		2: "FRESHNESS",
	}
	SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType_value = map[string]int32{
		"ATTRIBUTE_TYPE_UNSPECIFIED": 0,
		"NUMERICAL":                  1,
		"FRESHNESS":                  2,
	}
)

func (x SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) Enum() *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType {
	p := new(SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType)
	*p = x
	return p
}

func (x SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[1].Descriptor()
}

func (SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[1]
}

func (x SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType.Descriptor instead.
func (SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 3, 0, 0, 0}
}

// The interpolation type to be applied. Default will be linear
// (Piecewise Linear).
type SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType int32

const (
	// Interpolation type is unspecified. In this case, it defaults to
	// Linear.
	SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_INTERPOLATION_TYPE_UNSPECIFIED SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType = 0
	// Piecewise linear interpolation will be applied.
	SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_LINEAR SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType = 1
)

// Enum value maps for SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType.
var (
	SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType_name = map[int32]string{
		0: "INTERPOLATION_TYPE_UNSPECIFIED",
		1: "LINEAR",
	}
	SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType_value = map[string]int32{
		"INTERPOLATION_TYPE_UNSPECIFIED": 0,
		"LINEAR":                         1,
	}
)

func (x SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) Enum() *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType {
	p := new(SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType)
	*p = x
	return p
}

func (x SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[2].Descriptor()
}

func (SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[2]
}

func (x SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType.Descriptor instead.
func (SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 3, 0, 0, 1}
}

// Enum describing under which condition query expansion should occur.
type SearchRequest_QueryExpansionSpec_Condition int32

const (
	// Unspecified query expansion condition. In this case, server behavior
	// defaults to
	// [Condition.DISABLED][google.cloud.discoveryengine.v1beta.SearchRequest.QueryExpansionSpec.Condition.DISABLED].
	SearchRequest_QueryExpansionSpec_CONDITION_UNSPECIFIED SearchRequest_QueryExpansionSpec_Condition = 0
	// Disabled query expansion. Only the exact search query is used, even if
	// [SearchResponse.total_size][google.cloud.discoveryengine.v1beta.SearchResponse.total_size]
	// is zero.
	SearchRequest_QueryExpansionSpec_DISABLED SearchRequest_QueryExpansionSpec_Condition = 1
	// Automatic query expansion built by the Search API.
	SearchRequest_QueryExpansionSpec_AUTO SearchRequest_QueryExpansionSpec_Condition = 2
)

// Enum value maps for SearchRequest_QueryExpansionSpec_Condition.
var (
	SearchRequest_QueryExpansionSpec_Condition_name = map[int32]string{
		0: "CONDITION_UNSPECIFIED",
		1: "DISABLED",
		2: "AUTO",
	}
	SearchRequest_QueryExpansionSpec_Condition_value = map[string]int32{
		"CONDITION_UNSPECIFIED": 0,
		"DISABLED":              1,
		"AUTO":                  2,
	}
)

func (x SearchRequest_QueryExpansionSpec_Condition) Enum() *SearchRequest_QueryExpansionSpec_Condition {
	p := new(SearchRequest_QueryExpansionSpec_Condition)
	*p = x
	return p
}

func (x SearchRequest_QueryExpansionSpec_Condition) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchRequest_QueryExpansionSpec_Condition) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[3].Descriptor()
}

func (SearchRequest_QueryExpansionSpec_Condition) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[3]
}

func (x SearchRequest_QueryExpansionSpec_Condition) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchRequest_QueryExpansionSpec_Condition.Descriptor instead.
func (SearchRequest_QueryExpansionSpec_Condition) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 4, 0}
}

// Enum describing under which mode spell correction should occur.
type SearchRequest_SpellCorrectionSpec_Mode int32

const (
	// Unspecified spell correction mode. In this case, server behavior
	// defaults to
	// [Mode.AUTO][google.cloud.discoveryengine.v1beta.SearchRequest.SpellCorrectionSpec.Mode.AUTO].
	SearchRequest_SpellCorrectionSpec_MODE_UNSPECIFIED SearchRequest_SpellCorrectionSpec_Mode = 0
	// Search API tries to find a spelling suggestion. If a suggestion is
	// found, it is put in the
	// [SearchResponse.corrected_query][google.cloud.discoveryengine.v1beta.SearchResponse.corrected_query].
	// The spelling suggestion won't be used as the search query.
	SearchRequest_SpellCorrectionSpec_SUGGESTION_ONLY SearchRequest_SpellCorrectionSpec_Mode = 1
	// Automatic spell correction built by the Search API. Search will
	// be based on the corrected query if found.
	SearchRequest_SpellCorrectionSpec_AUTO SearchRequest_SpellCorrectionSpec_Mode = 2
)

// Enum value maps for SearchRequest_SpellCorrectionSpec_Mode.
var (
	SearchRequest_SpellCorrectionSpec_Mode_name = map[int32]string{
		0: "MODE_UNSPECIFIED",
		1: "SUGGESTION_ONLY",
		2: "AUTO",
	}
	SearchRequest_SpellCorrectionSpec_Mode_value = map[string]int32{
		"MODE_UNSPECIFIED": 0,
		"SUGGESTION_ONLY":  1,
		"AUTO":             2,
	}
)

func (x SearchRequest_SpellCorrectionSpec_Mode) Enum() *SearchRequest_SpellCorrectionSpec_Mode {
	p := new(SearchRequest_SpellCorrectionSpec_Mode)
	*p = x
	return p
}

func (x SearchRequest_SpellCorrectionSpec_Mode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchRequest_SpellCorrectionSpec_Mode) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[4].Descriptor()
}

func (SearchRequest_SpellCorrectionSpec_Mode) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[4]
}

func (x SearchRequest_SpellCorrectionSpec_Mode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchRequest_SpellCorrectionSpec_Mode.Descriptor instead.
func (SearchRequest_SpellCorrectionSpec_Mode) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 5, 0}
}

// Specifies the search result mode. If unspecified, the
// search result mode defaults to `DOCUMENTS`.
type SearchRequest_ContentSearchSpec_SearchResultMode int32

const (
	// Default value.
	SearchRequest_ContentSearchSpec_SEARCH_RESULT_MODE_UNSPECIFIED SearchRequest_ContentSearchSpec_SearchResultMode = 0
	// Returns documents in the search result.
	SearchRequest_ContentSearchSpec_DOCUMENTS SearchRequest_ContentSearchSpec_SearchResultMode = 1
	// Returns chunks in the search result. Only available if the
	// [DataStore.DocumentProcessingConfig.chunking_config][] is specified.
	SearchRequest_ContentSearchSpec_CHUNKS SearchRequest_ContentSearchSpec_SearchResultMode = 2
)

// Enum value maps for SearchRequest_ContentSearchSpec_SearchResultMode.
var (
	SearchRequest_ContentSearchSpec_SearchResultMode_name = map[int32]string{
		0: "SEARCH_RESULT_MODE_UNSPECIFIED",
		1: "DOCUMENTS",
		2: "CHUNKS",
	}
	SearchRequest_ContentSearchSpec_SearchResultMode_value = map[string]int32{
		"SEARCH_RESULT_MODE_UNSPECIFIED": 0,
		"DOCUMENTS":                      1,
		"CHUNKS":                         2,
	}
)

func (x SearchRequest_ContentSearchSpec_SearchResultMode) Enum() *SearchRequest_ContentSearchSpec_SearchResultMode {
	p := new(SearchRequest_ContentSearchSpec_SearchResultMode)
	*p = x
	return p
}

func (x SearchRequest_ContentSearchSpec_SearchResultMode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchRequest_ContentSearchSpec_SearchResultMode) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[5].Descriptor()
}

func (SearchRequest_ContentSearchSpec_SearchResultMode) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[5]
}

func (x SearchRequest_ContentSearchSpec_SearchResultMode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchRequest_ContentSearchSpec_SearchResultMode.Descriptor instead.
func (SearchRequest_ContentSearchSpec_SearchResultMode) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 6, 0}
}

// Enum describing under which condition filter extraction should occur.
type SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition int32

const (
	// Server behavior defaults to [Condition.DISABLED][].
	SearchRequest_NaturalLanguageQueryUnderstandingSpec_CONDITION_UNSPECIFIED SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition = 0
	// Disables NL filter extraction.
	SearchRequest_NaturalLanguageQueryUnderstandingSpec_DISABLED SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition = 1
	// Enables NL filter extraction.
	SearchRequest_NaturalLanguageQueryUnderstandingSpec_ENABLED SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition = 2
)

// Enum value maps for SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition.
var (
	SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition_name = map[int32]string{
		0: "CONDITION_UNSPECIFIED",
		1: "DISABLED",
		2: "ENABLED",
	}
	SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition_value = map[string]int32{
		"CONDITION_UNSPECIFIED": 0,
		"DISABLED":              1,
		"ENABLED":               2,
	}
)

func (x SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition) Enum() *SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition {
	p := new(SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition)
	*p = x
	return p
}

func (x SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[6].Descriptor()
}

func (SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[6]
}

func (x SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition.Descriptor instead.
func (SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 8, 0}
}

// Enum describing under which condition search as you type should occur.
type SearchRequest_SearchAsYouTypeSpec_Condition int32

const (
	// Server behavior defaults to
	// [Condition.DISABLED][google.cloud.discoveryengine.v1beta.SearchRequest.SearchAsYouTypeSpec.Condition.DISABLED].
	SearchRequest_SearchAsYouTypeSpec_CONDITION_UNSPECIFIED SearchRequest_SearchAsYouTypeSpec_Condition = 0
	// Disables Search As You Type.
	SearchRequest_SearchAsYouTypeSpec_DISABLED SearchRequest_SearchAsYouTypeSpec_Condition = 1
	// Enables Search As You Type.
	SearchRequest_SearchAsYouTypeSpec_ENABLED SearchRequest_SearchAsYouTypeSpec_Condition = 2
)

// Enum value maps for SearchRequest_SearchAsYouTypeSpec_Condition.
var (
	SearchRequest_SearchAsYouTypeSpec_Condition_name = map[int32]string{
		0: "CONDITION_UNSPECIFIED",
		1: "DISABLED",
		2: "ENABLED",
	}
	SearchRequest_SearchAsYouTypeSpec_Condition_value = map[string]int32{
		"CONDITION_UNSPECIFIED": 0,
		"DISABLED":              1,
		"ENABLED":               2,
	}
)

func (x SearchRequest_SearchAsYouTypeSpec_Condition) Enum() *SearchRequest_SearchAsYouTypeSpec_Condition {
	p := new(SearchRequest_SearchAsYouTypeSpec_Condition)
	*p = x
	return p
}

func (x SearchRequest_SearchAsYouTypeSpec_Condition) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchRequest_SearchAsYouTypeSpec_Condition) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[7].Descriptor()
}

func (SearchRequest_SearchAsYouTypeSpec_Condition) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[7]
}

func (x SearchRequest_SearchAsYouTypeSpec_Condition) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchRequest_SearchAsYouTypeSpec_Condition.Descriptor instead.
func (SearchRequest_SearchAsYouTypeSpec_Condition) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 9, 0}
}

// The personalization mode of each search request.
type SearchRequest_PersonalizationSpec_Mode int32

const (
	// Default value. In this case, server behavior defaults to
	// [Mode.AUTO][google.cloud.discoveryengine.v1beta.SearchRequest.PersonalizationSpec.Mode.AUTO].
	SearchRequest_PersonalizationSpec_MODE_UNSPECIFIED SearchRequest_PersonalizationSpec_Mode = 0
	// Personalization is enabled if data quality requirements are met.
	SearchRequest_PersonalizationSpec_AUTO SearchRequest_PersonalizationSpec_Mode = 1
	// Disable personalization.
	SearchRequest_PersonalizationSpec_DISABLED SearchRequest_PersonalizationSpec_Mode = 2
)

// Enum value maps for SearchRequest_PersonalizationSpec_Mode.
var (
	SearchRequest_PersonalizationSpec_Mode_name = map[int32]string{
		0: "MODE_UNSPECIFIED",
		1: "AUTO",
		2: "DISABLED",
	}
	SearchRequest_PersonalizationSpec_Mode_value = map[string]int32{
		"MODE_UNSPECIFIED": 0,
		"AUTO":             1,
		"DISABLED":         2,
	}
)

func (x SearchRequest_PersonalizationSpec_Mode) Enum() *SearchRequest_PersonalizationSpec_Mode {
	p := new(SearchRequest_PersonalizationSpec_Mode)
	*p = x
	return p
}

func (x SearchRequest_PersonalizationSpec_Mode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchRequest_PersonalizationSpec_Mode) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[8].Descriptor()
}

func (SearchRequest_PersonalizationSpec_Mode) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[8]
}

func (x SearchRequest_PersonalizationSpec_Mode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchRequest_PersonalizationSpec_Mode.Descriptor instead.
func (SearchRequest_PersonalizationSpec_Mode) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 11, 0}
}

// An Enum for summary-skipped reasons.
type SearchResponse_Summary_SummarySkippedReason int32

const (
	// Default value. The summary skipped reason is not specified.
	SearchResponse_Summary_SUMMARY_SKIPPED_REASON_UNSPECIFIED SearchResponse_Summary_SummarySkippedReason = 0
	// The adversarial query ignored case.
	//
	// Only used when
	// [SummarySpec.ignore_adversarial_query][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.ignore_adversarial_query]
	// is set to `true`.
	SearchResponse_Summary_ADVERSARIAL_QUERY_IGNORED SearchResponse_Summary_SummarySkippedReason = 1
	// The non-summary seeking query ignored case.
	//
	// Google skips the summary if the query is chit chat.
	// Only used when
	// [SummarySpec.ignore_non_summary_seeking_query][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.ignore_non_summary_seeking_query]
	// is set to `true`.
	SearchResponse_Summary_NON_SUMMARY_SEEKING_QUERY_IGNORED SearchResponse_Summary_SummarySkippedReason = 2
	// The out-of-domain query ignored case.
	//
	// Google skips the summary if there are no high-relevance search results.
	// For example, the data store contains facts about company A but the
	// user query is asking questions about company B.
	SearchResponse_Summary_OUT_OF_DOMAIN_QUERY_IGNORED SearchResponse_Summary_SummarySkippedReason = 3
	// The potential policy violation case.
	//
	// Google skips the summary if there is a potential policy violation
	// detected. This includes content that may be violent or toxic.
	SearchResponse_Summary_POTENTIAL_POLICY_VIOLATION SearchResponse_Summary_SummarySkippedReason = 4
	// The LLM addon not enabled case.
	//
	// Google skips the summary if the LLM addon is not enabled.
	SearchResponse_Summary_LLM_ADDON_NOT_ENABLED SearchResponse_Summary_SummarySkippedReason = 5
	// The no relevant content case.
	//
	// Google skips the summary if there is no relevant content in the
	// retrieved search results.
	SearchResponse_Summary_NO_RELEVANT_CONTENT SearchResponse_Summary_SummarySkippedReason = 6
	// The jail-breaking query ignored case.
	//
	// For example, "Reply in the tone of a competing company's CEO".
	// Only used when
	// [SearchRequest.ContentSearchSpec.SummarySpec.ignore_jail_breaking_query]
	// is set to `true`.
	SearchResponse_Summary_JAIL_BREAKING_QUERY_IGNORED SearchResponse_Summary_SummarySkippedReason = 7
	// The customer policy violation case.
	//
	// Google skips the summary if there is a customer policy violation
	// detected. The policy is defined by the customer.
	SearchResponse_Summary_CUSTOMER_POLICY_VIOLATION SearchResponse_Summary_SummarySkippedReason = 8
	// The non-answer seeking query ignored case.
	//
	// Google skips the summary if the query doesn't have clear intent.
	// Only used when
	// [SearchRequest.ContentSearchSpec.SummarySpec.ignore_non_answer_seeking_query]
	// is set to `true`.
	SearchResponse_Summary_NON_SUMMARY_SEEKING_QUERY_IGNORED_V2 SearchResponse_Summary_SummarySkippedReason = 9
)

// Enum value maps for SearchResponse_Summary_SummarySkippedReason.
var (
	SearchResponse_Summary_SummarySkippedReason_name = map[int32]string{
		0: "SUMMARY_SKIPPED_REASON_UNSPECIFIED",
		1: "ADVERSARIAL_QUERY_IGNORED",
		2: "NON_SUMMARY_SEEKING_QUERY_IGNORED",
		3: "OUT_OF_DOMAIN_QUERY_IGNORED",
		4: "POTENTIAL_POLICY_VIOLATION",
		5: "LLM_ADDON_NOT_ENABLED",
		6: "NO_RELEVANT_CONTENT",
		7: "JAIL_BREAKING_QUERY_IGNORED",
		8: "CUSTOMER_POLICY_VIOLATION",
		9: "NON_SUMMARY_SEEKING_QUERY_IGNORED_V2",
	}
	SearchResponse_Summary_SummarySkippedReason_value = map[string]int32{
		"SUMMARY_SKIPPED_REASON_UNSPECIFIED":   0,
		"ADVERSARIAL_QUERY_IGNORED":            1,
		"NON_SUMMARY_SEEKING_QUERY_IGNORED":    2,
		"OUT_OF_DOMAIN_QUERY_IGNORED":          3,
		"POTENTIAL_POLICY_VIOLATION":           4,
		"LLM_ADDON_NOT_ENABLED":                5,
		"NO_RELEVANT_CONTENT":                  6,
		"JAIL_BREAKING_QUERY_IGNORED":          7,
		"CUSTOMER_POLICY_VIOLATION":            8,
		"NON_SUMMARY_SEEKING_QUERY_IGNORED_V2": 9,
	}
)

func (x SearchResponse_Summary_SummarySkippedReason) Enum() *SearchResponse_Summary_SummarySkippedReason {
	p := new(SearchResponse_Summary_SummarySkippedReason)
	*p = x
	return p
}

func (x SearchResponse_Summary_SummarySkippedReason) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchResponse_Summary_SummarySkippedReason) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[9].Descriptor()
}

func (SearchResponse_Summary_SummarySkippedReason) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[9]
}

func (x SearchResponse_Summary_SummarySkippedReason) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchResponse_Summary_SummarySkippedReason.Descriptor instead.
func (SearchResponse_Summary_SummarySkippedReason) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 3, 0}
}

// The comparison operation that was performed.
type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison int32

const (
	// Undefined comparison operator.
	SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_COMPARISON_UNSPECIFIED SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison = 0
	// Denotes equality `=` operator.
	SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_EQUALS SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison = 1
	// Denotes less than or equal to `<=` operator.
	SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_LESS_THAN_EQUALS SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison = 2
	// Denotes less than `<` operator.
	SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_LESS_THAN SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison = 3
	// Denotes greater than or equal to `>=` operator.
	SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_GREATER_THAN_EQUALS SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison = 4
	// Denotes greater than `>` operator.
	SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_GREATER_THAN SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison = 5
)

// Enum value maps for SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison.
var (
	SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison_name = map[int32]string{
		0: "COMPARISON_UNSPECIFIED",
		1: "EQUALS",
		2: "LESS_THAN_EQUALS",
		3: "LESS_THAN",
		4: "GREATER_THAN_EQUALS",
		5: "GREATER_THAN",
	}
	SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison_value = map[string]int32{
		"COMPARISON_UNSPECIFIED": 0,
		"EQUALS":                 1,
		"LESS_THAN_EQUALS":       2,
		"LESS_THAN":              3,
		"GREATER_THAN_EQUALS":    4,
		"GREATER_THAN":           5,
	}
)

func (x SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison) Enum() *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison {
	p := new(SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison)
	*p = x
	return p
}

func (x SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[10].Descriptor()
}

func (SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[10]
}

func (x SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison.Descriptor instead.
func (SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 6, 0, 1, 0}
}

// The type of One Box result.
type SearchResponse_OneBoxResult_OneBoxType int32

const (
	// Default value. Should not be used.
	SearchResponse_OneBoxResult_ONE_BOX_TYPE_UNSPECIFIED SearchResponse_OneBoxResult_OneBoxType = 0
	// One Box result contains people results.
	SearchResponse_OneBoxResult_PEOPLE SearchResponse_OneBoxResult_OneBoxType = 1
	// One Box result contains organization results.
	SearchResponse_OneBoxResult_ORGANIZATION SearchResponse_OneBoxResult_OneBoxType = 2
	// One Box result contains slack results.
	SearchResponse_OneBoxResult_SLACK SearchResponse_OneBoxResult_OneBoxType = 3
	// One Box result contains Knowledge Graph search responses.
	SearchResponse_OneBoxResult_KNOWLEDGE_GRAPH SearchResponse_OneBoxResult_OneBoxType = 4
)

// Enum value maps for SearchResponse_OneBoxResult_OneBoxType.
var (
	SearchResponse_OneBoxResult_OneBoxType_name = map[int32]string{
		0: "ONE_BOX_TYPE_UNSPECIFIED",
		1: "PEOPLE",
		2: "ORGANIZATION",
		3: "SLACK",
		4: "KNOWLEDGE_GRAPH",
	}
	SearchResponse_OneBoxResult_OneBoxType_value = map[string]int32{
		"ONE_BOX_TYPE_UNSPECIFIED": 0,
		"PEOPLE":                   1,
		"ORGANIZATION":             2,
		"SLACK":                    3,
		"KNOWLEDGE_GRAPH":          4,
	}
)

func (x SearchResponse_OneBoxResult_OneBoxType) Enum() *SearchResponse_OneBoxResult_OneBoxType {
	p := new(SearchResponse_OneBoxResult_OneBoxType)
	*p = x
	return p
}

func (x SearchResponse_OneBoxResult_OneBoxType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (SearchResponse_OneBoxResult_OneBoxType) Descriptor() protoreflect.EnumDescriptor {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[11].Descriptor()
}

func (SearchResponse_OneBoxResult_OneBoxType) Type() protoreflect.EnumType {
	return &file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes[11]
}

func (x SearchResponse_OneBoxResult_OneBoxType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use SearchResponse_OneBoxResult_OneBoxType.Descriptor instead.
func (SearchResponse_OneBoxResult_OneBoxType) EnumDescriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 8, 0}
}

// Request message for
// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
// method.
type SearchRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The resource name of the Search serving config, such as
	// `projects/*/locations/global/collections/default_collection/engines/*/servingConfigs/default_serving_config`,
	// or
	// `projects/*/locations/global/collections/default_collection/dataStores/default_data_store/servingConfigs/default_serving_config`.
	// This field is used to identify the serving configuration name, set
	// of models used to make the search.
	ServingConfig string `protobuf:"bytes,1,opt,name=serving_config,json=servingConfig,proto3" json:"serving_config,omitempty"`
	// The branch resource name, such as
	// `projects/*/locations/global/collections/default_collection/dataStores/default_data_store/branches/0`.
	//
	// Use `default_branch` as the branch ID or leave this field empty, to search
	// documents under the default branch.
	Branch string `protobuf:"bytes,2,opt,name=branch,proto3" json:"branch,omitempty"`
	// Raw search query.
	Query string `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"`
	// Raw image query.
	ImageQuery *SearchRequest_ImageQuery `protobuf:"bytes,19,opt,name=image_query,json=imageQuery,proto3" json:"image_query,omitempty"`
	// Maximum number of [Document][google.cloud.discoveryengine.v1beta.Document]s
	// to return. The maximum allowed value depends on the data type. Values above
	// the maximum value are coerced to the maximum value.
	//
	// * Websites with basic indexing: Default `10`, Maximum `25`.
	// * Websites with advanced indexing: Default `25`, Maximum `50`.
	// * Other: Default `50`, Maximum `100`.
	//
	// If this field is negative, an  `INVALID_ARGUMENT` is returned.
	PageSize int32 `protobuf:"varint,4,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
	// A page token received from a previous
	// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
	// call. Provide this to retrieve the subsequent page.
	//
	// When paginating, all other parameters provided to
	// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
	// must match the call that provided the page token. Otherwise, an
	//
	//	`INVALID_ARGUMENT`  error is returned.
	PageToken string `protobuf:"bytes,5,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
	// A 0-indexed integer that specifies the current offset (that is, starting
	// result location, amongst the
	// [Document][google.cloud.discoveryengine.v1beta.Document]s deemed by the API
	// as relevant) in search results. This field is only considered if
	// [page_token][google.cloud.discoveryengine.v1beta.SearchRequest.page_token]
	// is unset.
	//
	// If this field is negative, an  `INVALID_ARGUMENT`  is returned.
	Offset int32 `protobuf:"varint,6,opt,name=offset,proto3" json:"offset,omitempty"`
	// The maximum number of results to return for OneBox.
	// This applies to each OneBox type individually.
	// Default number is 10.
	OneBoxPageSize int32 `protobuf:"varint,47,opt,name=one_box_page_size,json=oneBoxPageSize,proto3" json:"one_box_page_size,omitempty"`
	// Specs defining dataStores to filter on in a search call and configurations
	// for those dataStores. This is only considered for engines with multiple
	// dataStores use case. For single dataStore within an engine, they should
	// use the specs at the top level.
	DataStoreSpecs []*SearchRequest_DataStoreSpec `protobuf:"bytes,32,rep,name=data_store_specs,json=dataStoreSpecs,proto3" json:"data_store_specs,omitempty"`
	// The filter syntax consists of an expression language for constructing a
	// predicate from one or more fields of the documents being filtered. Filter
	// expression is case-sensitive.
	//
	// If this field is unrecognizable, an  `INVALID_ARGUMENT`  is returned.
	//
	// Filtering in Vertex AI Search is done by mapping the LHS filter key to a
	// key property defined in the Vertex AI Search backend -- this mapping is
	// defined by the customer in their schema. For example a media customer might
	// have a field 'name' in their schema. In this case the filter would look
	// like this: filter --> name:'ANY("king kong")'
	//
	// For more information about filtering including syntax and filter
	// operators, see
	// [Filter](https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata)
	Filter string `protobuf:"bytes,7,opt,name=filter,proto3" json:"filter,omitempty"`
	// The default filter that is applied when a user performs a search without
	// checking any filters on the search page.
	//
	// The filter applied to every search request when quality improvement such as
	// query expansion is needed. In the case a query does not have a sufficient
	// amount of results this filter will be used to determine whether or not to
	// enable the query expansion flow. The original filter will still be used for
	// the query expanded search.
	// This field is strongly recommended to achieve high search quality.
	//
	// For more information about filter syntax, see
	// [SearchRequest.filter][google.cloud.discoveryengine.v1beta.SearchRequest.filter].
	CanonicalFilter string `protobuf:"bytes,29,opt,name=canonical_filter,json=canonicalFilter,proto3" json:"canonical_filter,omitempty"`
	// The order in which documents are returned. Documents can be ordered by
	// a field in an [Document][google.cloud.discoveryengine.v1beta.Document]
	// object. Leave it unset if ordered by relevance. `order_by` expression is
	// case-sensitive.
	//
	// For more information on ordering the website search results, see
	// [Order web search
	// results](https://cloud.google.com/generative-ai-app-builder/docs/order-web-search-results).
	// For more information on ordering the healthcare search results, see
	// [Order healthcare search
	// results](https://cloud.google.com/generative-ai-app-builder/docs/order-hc-results).
	// If this field is unrecognizable, an `INVALID_ARGUMENT` is returned.
	OrderBy string `protobuf:"bytes,8,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
	// Information about the end user.
	// Highly recommended for analytics.
	// [UserInfo.user_agent][google.cloud.discoveryengine.v1beta.UserInfo.user_agent]
	// is used to deduce `device_type` for analytics.
	UserInfo *UserInfo `protobuf:"bytes,21,opt,name=user_info,json=userInfo,proto3" json:"user_info,omitempty"`
	// The BCP-47 language code, such as "en-US" or "sr-Latn". For more
	// information, see [Standard
	// fields](https://cloud.google.com/apis/design/standard_fields). This field
	// helps to better interpret the query. If a value isn't specified, the query
	// language code is automatically detected, which may not be accurate.
	LanguageCode string `protobuf:"bytes,35,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"`
	// The Unicode country/region code (CLDR) of a location, such as "US" and
	// "419". For more information, see [Standard
	// fields](https://cloud.google.com/apis/design/standard_fields). If set,
	// then results will be boosted based on the region_code provided.
	RegionCode string `protobuf:"bytes,36,opt,name=region_code,json=regionCode,proto3" json:"region_code,omitempty"`
	// Facet specifications for faceted search. If empty, no facets are returned.
	//
	// A maximum of 100 values are allowed. Otherwise, an  `INVALID_ARGUMENT`
	// error is returned.
	FacetSpecs []*SearchRequest_FacetSpec `protobuf:"bytes,9,rep,name=facet_specs,json=facetSpecs,proto3" json:"facet_specs,omitempty"`
	// Boost specification to boost certain documents.
	// For more information on boosting, see
	// [Boosting](https://cloud.google.com/generative-ai-app-builder/docs/boost-search-results)
	BoostSpec *SearchRequest_BoostSpec `protobuf:"bytes,10,opt,name=boost_spec,json=boostSpec,proto3" json:"boost_spec,omitempty"`
	// Additional search parameters.
	//
	// For public website search only, supported values are:
	//
	//   - `user_country_code`: string. Default empty. If set to non-empty, results
	//     are restricted or boosted based on the location provided.
	//     For example, `user_country_code: "au"`
	//
	//     For available codes see [Country
	//     Codes](https://developers.google.com/custom-search/docs/json_api_reference#countryCodes)
	//
	//   - `search_type`: double. Default empty. Enables non-webpage searching
	//     depending on the value. The only valid non-default value is 1,
	//     which enables image searching.
	//     For example, `search_type: 1`
	Params map[string]*structpb.Value `protobuf:"bytes,11,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// The query expansion specification that specifies the conditions under which
	// query expansion occurs.
	QueryExpansionSpec *SearchRequest_QueryExpansionSpec `protobuf:"bytes,13,opt,name=query_expansion_spec,json=queryExpansionSpec,proto3" json:"query_expansion_spec,omitempty"`
	// The spell correction specification that specifies the mode under
	// which spell correction takes effect.
	SpellCorrectionSpec *SearchRequest_SpellCorrectionSpec `protobuf:"bytes,14,opt,name=spell_correction_spec,json=spellCorrectionSpec,proto3" json:"spell_correction_spec,omitempty"`
	// A unique identifier for tracking visitors. For example, this could be
	// implemented with an HTTP cookie, which should be able to uniquely identify
	// a visitor on a single device. This unique identifier should not change if
	// the visitor logs in or out of the website.
	//
	// This field should NOT have a fixed value such as `unknown_visitor`.
	//
	// This should be the same identifier as
	// [UserEvent.user_pseudo_id][google.cloud.discoveryengine.v1beta.UserEvent.user_pseudo_id]
	// and
	// [CompleteQueryRequest.user_pseudo_id][google.cloud.discoveryengine.v1beta.CompleteQueryRequest.user_pseudo_id]
	//
	// The field must be a UTF-8 encoded string with a length limit of 128
	// characters. Otherwise, an  `INVALID_ARGUMENT`  error is returned.
	UserPseudoId string `protobuf:"bytes,15,opt,name=user_pseudo_id,json=userPseudoId,proto3" json:"user_pseudo_id,omitempty"`
	// A specification for configuring the behavior of content search.
	ContentSearchSpec *SearchRequest_ContentSearchSpec `protobuf:"bytes,24,opt,name=content_search_spec,json=contentSearchSpec,proto3" json:"content_search_spec,omitempty"`
	// Uses the provided embedding to do additional semantic document retrieval.
	// The retrieval is based on the dot product of
	// [SearchRequest.EmbeddingSpec.EmbeddingVector.vector][google.cloud.discoveryengine.v1beta.SearchRequest.EmbeddingSpec.EmbeddingVector.vector]
	// and the document embedding that is provided in
	// [SearchRequest.EmbeddingSpec.EmbeddingVector.field_path][google.cloud.discoveryengine.v1beta.SearchRequest.EmbeddingSpec.EmbeddingVector.field_path].
	//
	// If
	// [SearchRequest.EmbeddingSpec.EmbeddingVector.field_path][google.cloud.discoveryengine.v1beta.SearchRequest.EmbeddingSpec.EmbeddingVector.field_path]
	// is not provided, it will use
	// [ServingConfig.EmbeddingConfig.field_path][google.cloud.discoveryengine.v1beta.ServingConfig.embedding_config].
	EmbeddingSpec *SearchRequest_EmbeddingSpec `protobuf:"bytes,23,opt,name=embedding_spec,json=embeddingSpec,proto3" json:"embedding_spec,omitempty"`
	// The ranking expression controls the customized ranking on retrieval
	// documents. This overrides
	// [ServingConfig.ranking_expression][google.cloud.discoveryengine.v1beta.ServingConfig.ranking_expression].
	// The ranking expression is a single function or multiple functions that are
	// joined by "+".
	//
	//   - ranking_expression = function, { " + ", function };
	//
	// Supported functions:
	//
	//   - double * relevance_score
	//   - double * dotProduct(embedding_field_path)
	//
	// Function variables:
	//
	//   - `relevance_score`: pre-defined keywords, used for measure relevance
	//     between query and document.
	//
	//   - `embedding_field_path`: the document embedding field
	//     used with query embedding vector.
	//
	//   - `dotProduct`: embedding function between embedding_field_path and query
	//     embedding vector.
	//
	//     Example ranking expression:
	//
	//     If document has an embedding field doc_embedding, the ranking expression
	//     could be `0.5 * relevance_score + 0.3 * dotProduct(doc_embedding)`.
	RankingExpression string `protobuf:"bytes,26,opt,name=ranking_expression,json=rankingExpression,proto3" json:"ranking_expression,omitempty"`
	// Whether to turn on safe search. This is only supported for
	// website search.
	SafeSearch bool `protobuf:"varint,20,opt,name=safe_search,json=safeSearch,proto3" json:"safe_search,omitempty"`
	// The user labels applied to a resource must meet the following requirements:
	//
	//   - Each resource can have multiple labels, up to a maximum of 64.
	//   - Each label must be a key-value pair.
	//   - Keys have a minimum length of 1 character and a maximum length of 63
	//     characters and cannot be empty. Values can be empty and have a maximum
	//     length of 63 characters.
	//   - Keys and values can contain only lowercase letters, numeric characters,
	//     underscores, and dashes. All characters must use UTF-8 encoding, and
	//     international characters are allowed.
	//   - The key portion of a label must be unique. However, you can use the same
	//     key with multiple resources.
	//   - Keys must start with a lowercase letter or international character.
	//
	// See [Google Cloud
	// Document](https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements)
	// for more details.
	UserLabels map[string]string `protobuf:"bytes,22,rep,name=user_labels,json=userLabels,proto3" json:"user_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// If `naturalLanguageQueryUnderstandingSpec` is not specified, no additional
	// natural language query understanding will be done.
	NaturalLanguageQueryUnderstandingSpec *SearchRequest_NaturalLanguageQueryUnderstandingSpec `protobuf:"bytes,28,opt,name=natural_language_query_understanding_spec,json=naturalLanguageQueryUnderstandingSpec,proto3" json:"natural_language_query_understanding_spec,omitempty"`
	// Search as you type configuration. Only supported for the
	// [IndustryVertical.MEDIA][google.cloud.discoveryengine.v1beta.IndustryVertical.MEDIA]
	// vertical.
	SearchAsYouTypeSpec *SearchRequest_SearchAsYouTypeSpec `protobuf:"bytes,31,opt,name=search_as_you_type_spec,json=searchAsYouTypeSpec,proto3" json:"search_as_you_type_spec,omitempty"`
	// The session resource name. Optional.
	//
	// Session allows users to do multi-turn /search API calls or coordination
	// between /search API calls and /answer API calls.
	//
	// Example #1 (multi-turn /search API calls):
	//  1. Call /search API with the auto-session mode (see below).
	//  2. Call /search API with the session ID generated in the first call.
	//     Here, the previous search query gets considered in query
	//     standing. I.e., if the first query is "How did Alphabet do in 2022?"
	//     and the current query is "How about 2023?", the current query will
	//     be interpreted as "How did Alphabet do in 2023?".
	//
	// Example #2 (coordination between /search API calls and /answer API calls):
	//  1. Call /search API with the auto-session mode (see below).
	//  2. Call /answer API with the session ID generated in the first call.
	//     Here, the answer generation happens in the context of the search
	//     results from the first search call.
	//
	// Auto-session mode: when `projects/.../sessions/-` is used, a new session
	// gets automatically created. Otherwise, users can use the create-session API
	// to create a session manually.
	//
	// Multi-turn Search feature is currently at private GA stage. Please use
	// v1alpha or v1beta version instead before we launch this feature to public
	// GA. Or ask for allowlisting through Google Support team.
	Session string `protobuf:"bytes,41,opt,name=session,proto3" json:"session,omitempty"`
	// Session specification.
	//
	// Can be used only when `session` is set.
	SessionSpec *SearchRequest_SessionSpec `protobuf:"bytes,42,opt,name=session_spec,json=sessionSpec,proto3" json:"session_spec,omitempty"`
	// The relevance threshold of the search results.
	//
	// Default to Google defined threshold, leveraging a balance of
	// precision and recall to deliver both highly accurate results and
	// comprehensive coverage of relevant information.
	RelevanceThreshold SearchRequest_RelevanceThreshold `protobuf:"varint,44,opt,name=relevance_threshold,json=relevanceThreshold,proto3,enum=google.cloud.discoveryengine.v1beta.SearchRequest_RelevanceThreshold" json:"relevance_threshold,omitempty"`
	// The specification for personalization.
	//
	// Notice that if both
	// [ServingConfig.personalization_spec][google.cloud.discoveryengine.v1beta.ServingConfig.personalization_spec]
	// and
	// [SearchRequest.personalization_spec][google.cloud.discoveryengine.v1beta.SearchRequest.personalization_spec]
	// are set,
	// [SearchRequest.personalization_spec][google.cloud.discoveryengine.v1beta.SearchRequest.personalization_spec]
	// overrides
	// [ServingConfig.personalization_spec][google.cloud.discoveryengine.v1beta.ServingConfig.personalization_spec].
	PersonalizationSpec *SearchRequest_PersonalizationSpec `protobuf:"bytes,46,opt,name=personalization_spec,json=personalizationSpec,proto3" json:"personalization_spec,omitempty"`
}

func (x *SearchRequest) Reset() {
	*x = SearchRequest{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest) ProtoMessage() {}

func (x *SearchRequest) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest.ProtoReflect.Descriptor instead.
func (*SearchRequest) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0}
}

func (x *SearchRequest) GetServingConfig() string {
	if x != nil {
		return x.ServingConfig
	}
	return ""
}

func (x *SearchRequest) GetBranch() string {
	if x != nil {
		return x.Branch
	}
	return ""
}

func (x *SearchRequest) GetQuery() string {
	if x != nil {
		return x.Query
	}
	return ""
}

func (x *SearchRequest) GetImageQuery() *SearchRequest_ImageQuery {
	if x != nil {
		return x.ImageQuery
	}
	return nil
}

func (x *SearchRequest) GetPageSize() int32 {
	if x != nil {
		return x.PageSize
	}
	return 0
}

func (x *SearchRequest) GetPageToken() string {
	if x != nil {
		return x.PageToken
	}
	return ""
}

func (x *SearchRequest) GetOffset() int32 {
	if x != nil {
		return x.Offset
	}
	return 0
}

func (x *SearchRequest) GetOneBoxPageSize() int32 {
	if x != nil {
		return x.OneBoxPageSize
	}
	return 0
}

func (x *SearchRequest) GetDataStoreSpecs() []*SearchRequest_DataStoreSpec {
	if x != nil {
		return x.DataStoreSpecs
	}
	return nil
}

func (x *SearchRequest) GetFilter() string {
	if x != nil {
		return x.Filter
	}
	return ""
}

func (x *SearchRequest) GetCanonicalFilter() string {
	if x != nil {
		return x.CanonicalFilter
	}
	return ""
}

func (x *SearchRequest) GetOrderBy() string {
	if x != nil {
		return x.OrderBy
	}
	return ""
}

func (x *SearchRequest) GetUserInfo() *UserInfo {
	if x != nil {
		return x.UserInfo
	}
	return nil
}

func (x *SearchRequest) GetLanguageCode() string {
	if x != nil {
		return x.LanguageCode
	}
	return ""
}

func (x *SearchRequest) GetRegionCode() string {
	if x != nil {
		return x.RegionCode
	}
	return ""
}

func (x *SearchRequest) GetFacetSpecs() []*SearchRequest_FacetSpec {
	if x != nil {
		return x.FacetSpecs
	}
	return nil
}

func (x *SearchRequest) GetBoostSpec() *SearchRequest_BoostSpec {
	if x != nil {
		return x.BoostSpec
	}
	return nil
}

func (x *SearchRequest) GetParams() map[string]*structpb.Value {
	if x != nil {
		return x.Params
	}
	return nil
}

func (x *SearchRequest) GetQueryExpansionSpec() *SearchRequest_QueryExpansionSpec {
	if x != nil {
		return x.QueryExpansionSpec
	}
	return nil
}

func (x *SearchRequest) GetSpellCorrectionSpec() *SearchRequest_SpellCorrectionSpec {
	if x != nil {
		return x.SpellCorrectionSpec
	}
	return nil
}

func (x *SearchRequest) GetUserPseudoId() string {
	if x != nil {
		return x.UserPseudoId
	}
	return ""
}

func (x *SearchRequest) GetContentSearchSpec() *SearchRequest_ContentSearchSpec {
	if x != nil {
		return x.ContentSearchSpec
	}
	return nil
}

func (x *SearchRequest) GetEmbeddingSpec() *SearchRequest_EmbeddingSpec {
	if x != nil {
		return x.EmbeddingSpec
	}
	return nil
}

func (x *SearchRequest) GetRankingExpression() string {
	if x != nil {
		return x.RankingExpression
	}
	return ""
}

func (x *SearchRequest) GetSafeSearch() bool {
	if x != nil {
		return x.SafeSearch
	}
	return false
}

func (x *SearchRequest) GetUserLabels() map[string]string {
	if x != nil {
		return x.UserLabels
	}
	return nil
}

func (x *SearchRequest) GetNaturalLanguageQueryUnderstandingSpec() *SearchRequest_NaturalLanguageQueryUnderstandingSpec {
	if x != nil {
		return x.NaturalLanguageQueryUnderstandingSpec
	}
	return nil
}

func (x *SearchRequest) GetSearchAsYouTypeSpec() *SearchRequest_SearchAsYouTypeSpec {
	if x != nil {
		return x.SearchAsYouTypeSpec
	}
	return nil
}

func (x *SearchRequest) GetSession() string {
	if x != nil {
		return x.Session
	}
	return ""
}

func (x *SearchRequest) GetSessionSpec() *SearchRequest_SessionSpec {
	if x != nil {
		return x.SessionSpec
	}
	return nil
}

func (x *SearchRequest) GetRelevanceThreshold() SearchRequest_RelevanceThreshold {
	if x != nil {
		return x.RelevanceThreshold
	}
	return SearchRequest_RELEVANCE_THRESHOLD_UNSPECIFIED
}

func (x *SearchRequest) GetPersonalizationSpec() *SearchRequest_PersonalizationSpec {
	if x != nil {
		return x.PersonalizationSpec
	}
	return nil
}

// Response message for
// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
// method.
type SearchResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of matched documents. The order represents the ranking.
	Results []*SearchResponse_SearchResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
	// Results of facets requested by user.
	Facets []*SearchResponse_Facet `protobuf:"bytes,2,rep,name=facets,proto3" json:"facets,omitempty"`
	// Guided search result.
	GuidedSearchResult *SearchResponse_GuidedSearchResult `protobuf:"bytes,8,opt,name=guided_search_result,json=guidedSearchResult,proto3" json:"guided_search_result,omitempty"`
	// The estimated total count of matched items irrespective of pagination. The
	// count of
	// [results][google.cloud.discoveryengine.v1beta.SearchResponse.results]
	// returned by pagination may be less than the
	// [total_size][google.cloud.discoveryengine.v1beta.SearchResponse.total_size]
	// that matches.
	TotalSize int32 `protobuf:"varint,3,opt,name=total_size,json=totalSize,proto3" json:"total_size,omitempty"`
	// A unique search token. This should be included in the
	// [UserEvent][google.cloud.discoveryengine.v1beta.UserEvent] logs resulting
	// from this search, which enables accurate attribution of search model
	// performance. This also helps to identify a request during the customer
	// support scenarios.
	AttributionToken string `protobuf:"bytes,4,opt,name=attribution_token,json=attributionToken,proto3" json:"attribution_token,omitempty"`
	// The URI of a customer-defined redirect page. If redirect action is
	// triggered, no search is performed, and only
	// [redirect_uri][google.cloud.discoveryengine.v1beta.SearchResponse.redirect_uri]
	// and
	// [attribution_token][google.cloud.discoveryengine.v1beta.SearchResponse.attribution_token]
	// are set in the response.
	RedirectUri string `protobuf:"bytes,12,opt,name=redirect_uri,json=redirectUri,proto3" json:"redirect_uri,omitempty"`
	// A token that can be sent as
	// [SearchRequest.page_token][google.cloud.discoveryengine.v1beta.SearchRequest.page_token]
	// to retrieve the next page. If this field is omitted, there are no
	// subsequent pages.
	NextPageToken string `protobuf:"bytes,5,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
	// Contains the spell corrected query, if found. If the spell correction type
	// is AUTOMATIC, then the search results are based on corrected_query.
	// Otherwise the original query is used for search.
	CorrectedQuery string `protobuf:"bytes,7,opt,name=corrected_query,json=correctedQuery,proto3" json:"corrected_query,omitempty"`
	// A summary as part of the search results.
	// This field is only returned if
	// [SearchRequest.ContentSearchSpec.summary_spec][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.summary_spec]
	// is set.
	Summary *SearchResponse_Summary `protobuf:"bytes,9,opt,name=summary,proto3" json:"summary,omitempty"`
	// Controls applied as part of the Control service.
	AppliedControls    []string                             `protobuf:"bytes,10,rep,name=applied_controls,json=appliedControls,proto3" json:"applied_controls,omitempty"`
	GeoSearchDebugInfo []*SearchResponse_GeoSearchDebugInfo `protobuf:"bytes,16,rep,name=geo_search_debug_info,json=geoSearchDebugInfo,proto3" json:"geo_search_debug_info,omitempty"`
	// Query expansion information for the returned results.
	QueryExpansionInfo *SearchResponse_QueryExpansionInfo `protobuf:"bytes,14,opt,name=query_expansion_info,json=queryExpansionInfo,proto3" json:"query_expansion_info,omitempty"`
	// Natural language query understanding information for the returned results.
	NaturalLanguageQueryUnderstandingInfo *SearchResponse_NaturalLanguageQueryUnderstandingInfo `protobuf:"bytes,15,opt,name=natural_language_query_understanding_info,json=naturalLanguageQueryUnderstandingInfo,proto3" json:"natural_language_query_understanding_info,omitempty"`
	// Session information.
	//
	// Only set if
	// [SearchRequest.session][google.cloud.discoveryengine.v1beta.SearchRequest.session]
	// is provided. See its description for more details.
	SessionInfo *SearchResponse_SessionInfo `protobuf:"bytes,19,opt,name=session_info,json=sessionInfo,proto3" json:"session_info,omitempty"`
	// A list of One Box results. There can be multiple One Box results of
	// different types.
	OneBoxResults []*SearchResponse_OneBoxResult `protobuf:"bytes,20,rep,name=one_box_results,json=oneBoxResults,proto3" json:"one_box_results,omitempty"`
}

func (x *SearchResponse) Reset() {
	*x = SearchResponse{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse) ProtoMessage() {}

func (x *SearchResponse) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead.
func (*SearchResponse) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1}
}

func (x *SearchResponse) GetResults() []*SearchResponse_SearchResult {
	if x != nil {
		return x.Results
	}
	return nil
}

func (x *SearchResponse) GetFacets() []*SearchResponse_Facet {
	if x != nil {
		return x.Facets
	}
	return nil
}

func (x *SearchResponse) GetGuidedSearchResult() *SearchResponse_GuidedSearchResult {
	if x != nil {
		return x.GuidedSearchResult
	}
	return nil
}

func (x *SearchResponse) GetTotalSize() int32 {
	if x != nil {
		return x.TotalSize
	}
	return 0
}

func (x *SearchResponse) GetAttributionToken() string {
	if x != nil {
		return x.AttributionToken
	}
	return ""
}

func (x *SearchResponse) GetRedirectUri() string {
	if x != nil {
		return x.RedirectUri
	}
	return ""
}

func (x *SearchResponse) GetNextPageToken() string {
	if x != nil {
		return x.NextPageToken
	}
	return ""
}

func (x *SearchResponse) GetCorrectedQuery() string {
	if x != nil {
		return x.CorrectedQuery
	}
	return ""
}

func (x *SearchResponse) GetSummary() *SearchResponse_Summary {
	if x != nil {
		return x.Summary
	}
	return nil
}

func (x *SearchResponse) GetAppliedControls() []string {
	if x != nil {
		return x.AppliedControls
	}
	return nil
}

func (x *SearchResponse) GetGeoSearchDebugInfo() []*SearchResponse_GeoSearchDebugInfo {
	if x != nil {
		return x.GeoSearchDebugInfo
	}
	return nil
}

func (x *SearchResponse) GetQueryExpansionInfo() *SearchResponse_QueryExpansionInfo {
	if x != nil {
		return x.QueryExpansionInfo
	}
	return nil
}

func (x *SearchResponse) GetNaturalLanguageQueryUnderstandingInfo() *SearchResponse_NaturalLanguageQueryUnderstandingInfo {
	if x != nil {
		return x.NaturalLanguageQueryUnderstandingInfo
	}
	return nil
}

func (x *SearchResponse) GetSessionInfo() *SearchResponse_SessionInfo {
	if x != nil {
		return x.SessionInfo
	}
	return nil
}

func (x *SearchResponse) GetOneBoxResults() []*SearchResponse_OneBoxResult {
	if x != nil {
		return x.OneBoxResults
	}
	return nil
}

// Specifies the image query input.
type SearchRequest_ImageQuery struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Image:
	//
	//	*SearchRequest_ImageQuery_ImageBytes
	Image isSearchRequest_ImageQuery_Image `protobuf_oneof:"image"`
}

func (x *SearchRequest_ImageQuery) Reset() {
	*x = SearchRequest_ImageQuery{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_ImageQuery) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_ImageQuery) ProtoMessage() {}

func (x *SearchRequest_ImageQuery) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_ImageQuery.ProtoReflect.Descriptor instead.
func (*SearchRequest_ImageQuery) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 0}
}

func (m *SearchRequest_ImageQuery) GetImage() isSearchRequest_ImageQuery_Image {
	if m != nil {
		return m.Image
	}
	return nil
}

func (x *SearchRequest_ImageQuery) GetImageBytes() string {
	if x, ok := x.GetImage().(*SearchRequest_ImageQuery_ImageBytes); ok {
		return x.ImageBytes
	}
	return ""
}

type isSearchRequest_ImageQuery_Image interface {
	isSearchRequest_ImageQuery_Image()
}

type SearchRequest_ImageQuery_ImageBytes struct {
	// Base64 encoded image bytes. Supported image formats: JPEG, PNG, and
	// BMP.
	ImageBytes string `protobuf:"bytes,1,opt,name=image_bytes,json=imageBytes,proto3,oneof"`
}

func (*SearchRequest_ImageQuery_ImageBytes) isSearchRequest_ImageQuery_Image() {}

// A struct to define data stores to filter on in a search call and
// configurations for those data stores. Otherwise, an `INVALID_ARGUMENT`
// error is returned.
type SearchRequest_DataStoreSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Full resource name of
	// [DataStore][google.cloud.discoveryengine.v1beta.DataStore], such as
	// `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`.
	DataStore string `protobuf:"bytes,1,opt,name=data_store,json=dataStore,proto3" json:"data_store,omitempty"`
	// Optional. Filter specification to filter documents in the data store
	// specified by data_store field. For more information on filtering, see
	// [Filtering](https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata)
	Filter string `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"`
}

func (x *SearchRequest_DataStoreSpec) Reset() {
	*x = SearchRequest_DataStoreSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_DataStoreSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_DataStoreSpec) ProtoMessage() {}

func (x *SearchRequest_DataStoreSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_DataStoreSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_DataStoreSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 1}
}

func (x *SearchRequest_DataStoreSpec) GetDataStore() string {
	if x != nil {
		return x.DataStore
	}
	return ""
}

func (x *SearchRequest_DataStoreSpec) GetFilter() string {
	if x != nil {
		return x.Filter
	}
	return ""
}

// A facet specification to perform faceted search.
type SearchRequest_FacetSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. The facet key specification.
	FacetKey *SearchRequest_FacetSpec_FacetKey `protobuf:"bytes,1,opt,name=facet_key,json=facetKey,proto3" json:"facet_key,omitempty"`
	// Maximum facet values that are returned for this facet. If
	// unspecified, defaults to 20. The maximum allowed value is 300. Values
	// above 300 are coerced to 300.
	// For aggregation in healthcare search, when the [FacetKey.key] is
	// "healthcare_aggregation_key", the limit will be overridden to
	// 10,000 internally, regardless of the value set here.
	//
	// If this field is negative, an  `INVALID_ARGUMENT`  is returned.
	Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
	// List of keys to exclude when faceting.
	//
	// By default,
	// [FacetKey.key][google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec.FacetKey.key]
	// is not excluded from the filter unless it is listed in this field.
	//
	// Listing a facet key in this field allows its values to appear as facet
	// results, even when they are filtered out of search results. Using this
	// field does not affect what search results are returned.
	//
	// For example, suppose there are 100 documents with the color facet "Red"
	// and 200 documents with the color facet "Blue". A query containing the
	// filter "color:ANY("Red")" and having "color" as
	// [FacetKey.key][google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec.FacetKey.key]
	// would by default return only "Red" documents in the search results, and
	// also return "Red" with count 100 as the only color facet. Although there
	// are also blue documents available, "Blue" would not be shown as an
	// available facet value.
	//
	// If "color" is listed in "excludedFilterKeys", then the query returns the
	// facet values "Red" with count 100 and "Blue" with count 200, because the
	// "color" key is now excluded from the filter. Because this field doesn't
	// affect search results, the search results are still correctly filtered to
	// return only "Red" documents.
	//
	// A maximum of 100 values are allowed. Otherwise, an  `INVALID_ARGUMENT`
	// error is returned.
	ExcludedFilterKeys []string `protobuf:"bytes,3,rep,name=excluded_filter_keys,json=excludedFilterKeys,proto3" json:"excluded_filter_keys,omitempty"`
	// Enables dynamic position for this facet. If set to true, the position of
	// this facet among all facets in the response is determined automatically.
	// If dynamic facets are enabled, it is ordered together.
	// If set to false, the position of this facet in the
	// response is the same as in the request, and it is ranked before
	// the facets with dynamic position enable and all dynamic facets.
	//
	// For example, you may always want to have rating facet returned in
	// the response, but it's not necessarily to always display the rating facet
	// at the top. In that case, you can set enable_dynamic_position to true so
	// that the position of rating facet in response is determined
	// automatically.
	//
	// Another example, assuming you have the following facets in the request:
	//
	// * "rating", enable_dynamic_position = true
	//
	// * "price", enable_dynamic_position = false
	//
	// * "brands", enable_dynamic_position = false
	//
	// And also you have a dynamic facets enabled, which generates a facet
	// `gender`. Then the final order of the facets in the response can be
	// ("price", "brands", "rating", "gender") or ("price", "brands", "gender",
	// "rating") depends on how API orders "gender" and "rating" facets.
	// However, notice that "price" and "brands" are always
	// ranked at first and second position because their enable_dynamic_position
	// is false.
	EnableDynamicPosition bool `protobuf:"varint,4,opt,name=enable_dynamic_position,json=enableDynamicPosition,proto3" json:"enable_dynamic_position,omitempty"`
}

func (x *SearchRequest_FacetSpec) Reset() {
	*x = SearchRequest_FacetSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_FacetSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_FacetSpec) ProtoMessage() {}

func (x *SearchRequest_FacetSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_FacetSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_FacetSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 2}
}

func (x *SearchRequest_FacetSpec) GetFacetKey() *SearchRequest_FacetSpec_FacetKey {
	if x != nil {
		return x.FacetKey
	}
	return nil
}

func (x *SearchRequest_FacetSpec) GetLimit() int32 {
	if x != nil {
		return x.Limit
	}
	return 0
}

func (x *SearchRequest_FacetSpec) GetExcludedFilterKeys() []string {
	if x != nil {
		return x.ExcludedFilterKeys
	}
	return nil
}

func (x *SearchRequest_FacetSpec) GetEnableDynamicPosition() bool {
	if x != nil {
		return x.EnableDynamicPosition
	}
	return false
}

// Boost specification to boost certain documents.
type SearchRequest_BoostSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Condition boost specifications. If a document matches multiple conditions
	// in the specifictions, boost scores from these specifications are all
	// applied and combined in a non-linear way. Maximum number of
	// specifications is 20.
	ConditionBoostSpecs []*SearchRequest_BoostSpec_ConditionBoostSpec `protobuf:"bytes,1,rep,name=condition_boost_specs,json=conditionBoostSpecs,proto3" json:"condition_boost_specs,omitempty"`
}

func (x *SearchRequest_BoostSpec) Reset() {
	*x = SearchRequest_BoostSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_BoostSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_BoostSpec) ProtoMessage() {}

func (x *SearchRequest_BoostSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_BoostSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_BoostSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 3}
}

func (x *SearchRequest_BoostSpec) GetConditionBoostSpecs() []*SearchRequest_BoostSpec_ConditionBoostSpec {
	if x != nil {
		return x.ConditionBoostSpecs
	}
	return nil
}

// Specification to determine under which conditions query expansion should
// occur.
type SearchRequest_QueryExpansionSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The condition under which query expansion should occur. Default to
	// [Condition.DISABLED][google.cloud.discoveryengine.v1beta.SearchRequest.QueryExpansionSpec.Condition.DISABLED].
	Condition SearchRequest_QueryExpansionSpec_Condition `protobuf:"varint,1,opt,name=condition,proto3,enum=google.cloud.discoveryengine.v1beta.SearchRequest_QueryExpansionSpec_Condition" json:"condition,omitempty"`
	// Whether to pin unexpanded results. If this field is set to true,
	// unexpanded products are always at the top of the search results, followed
	// by the expanded results.
	PinUnexpandedResults bool `protobuf:"varint,2,opt,name=pin_unexpanded_results,json=pinUnexpandedResults,proto3" json:"pin_unexpanded_results,omitempty"`
}

func (x *SearchRequest_QueryExpansionSpec) Reset() {
	*x = SearchRequest_QueryExpansionSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_QueryExpansionSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_QueryExpansionSpec) ProtoMessage() {}

func (x *SearchRequest_QueryExpansionSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_QueryExpansionSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_QueryExpansionSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 4}
}

func (x *SearchRequest_QueryExpansionSpec) GetCondition() SearchRequest_QueryExpansionSpec_Condition {
	if x != nil {
		return x.Condition
	}
	return SearchRequest_QueryExpansionSpec_CONDITION_UNSPECIFIED
}

func (x *SearchRequest_QueryExpansionSpec) GetPinUnexpandedResults() bool {
	if x != nil {
		return x.PinUnexpandedResults
	}
	return false
}

// The specification for query spell correction.
type SearchRequest_SpellCorrectionSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The mode under which spell correction
	// replaces the original search query. Defaults to
	// [Mode.AUTO][google.cloud.discoveryengine.v1beta.SearchRequest.SpellCorrectionSpec.Mode.AUTO].
	Mode SearchRequest_SpellCorrectionSpec_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=google.cloud.discoveryengine.v1beta.SearchRequest_SpellCorrectionSpec_Mode" json:"mode,omitempty"`
}

func (x *SearchRequest_SpellCorrectionSpec) Reset() {
	*x = SearchRequest_SpellCorrectionSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_SpellCorrectionSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_SpellCorrectionSpec) ProtoMessage() {}

func (x *SearchRequest_SpellCorrectionSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_SpellCorrectionSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_SpellCorrectionSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 5}
}

func (x *SearchRequest_SpellCorrectionSpec) GetMode() SearchRequest_SpellCorrectionSpec_Mode {
	if x != nil {
		return x.Mode
	}
	return SearchRequest_SpellCorrectionSpec_MODE_UNSPECIFIED
}

// A specification for configuring the behavior of content search.
type SearchRequest_ContentSearchSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If `snippetSpec` is not specified, snippets are not included in the
	// search response.
	SnippetSpec *SearchRequest_ContentSearchSpec_SnippetSpec `protobuf:"bytes,1,opt,name=snippet_spec,json=snippetSpec,proto3" json:"snippet_spec,omitempty"`
	// If `summarySpec` is not specified, summaries are not included in the
	// search response.
	SummarySpec *SearchRequest_ContentSearchSpec_SummarySpec `protobuf:"bytes,2,opt,name=summary_spec,json=summarySpec,proto3" json:"summary_spec,omitempty"`
	// If there is no extractive_content_spec provided, there will be no
	// extractive answer in the search response.
	ExtractiveContentSpec *SearchRequest_ContentSearchSpec_ExtractiveContentSpec `protobuf:"bytes,3,opt,name=extractive_content_spec,json=extractiveContentSpec,proto3" json:"extractive_content_spec,omitempty"`
	// Specifies the search result mode. If unspecified, the
	// search result mode defaults to `DOCUMENTS`.
	SearchResultMode SearchRequest_ContentSearchSpec_SearchResultMode `protobuf:"varint,4,opt,name=search_result_mode,json=searchResultMode,proto3,enum=google.cloud.discoveryengine.v1beta.SearchRequest_ContentSearchSpec_SearchResultMode" json:"search_result_mode,omitempty"`
	// Specifies the chunk spec to be returned from the search response.
	// Only available if the
	// [SearchRequest.ContentSearchSpec.search_result_mode][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.search_result_mode]
	// is set to
	// [CHUNKS][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SearchResultMode.CHUNKS]
	ChunkSpec *SearchRequest_ContentSearchSpec_ChunkSpec `protobuf:"bytes,5,opt,name=chunk_spec,json=chunkSpec,proto3" json:"chunk_spec,omitempty"`
}

func (x *SearchRequest_ContentSearchSpec) Reset() {
	*x = SearchRequest_ContentSearchSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_ContentSearchSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_ContentSearchSpec) ProtoMessage() {}

func (x *SearchRequest_ContentSearchSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_ContentSearchSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_ContentSearchSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 6}
}

func (x *SearchRequest_ContentSearchSpec) GetSnippetSpec() *SearchRequest_ContentSearchSpec_SnippetSpec {
	if x != nil {
		return x.SnippetSpec
	}
	return nil
}

func (x *SearchRequest_ContentSearchSpec) GetSummarySpec() *SearchRequest_ContentSearchSpec_SummarySpec {
	if x != nil {
		return x.SummarySpec
	}
	return nil
}

func (x *SearchRequest_ContentSearchSpec) GetExtractiveContentSpec() *SearchRequest_ContentSearchSpec_ExtractiveContentSpec {
	if x != nil {
		return x.ExtractiveContentSpec
	}
	return nil
}

func (x *SearchRequest_ContentSearchSpec) GetSearchResultMode() SearchRequest_ContentSearchSpec_SearchResultMode {
	if x != nil {
		return x.SearchResultMode
	}
	return SearchRequest_ContentSearchSpec_SEARCH_RESULT_MODE_UNSPECIFIED
}

func (x *SearchRequest_ContentSearchSpec) GetChunkSpec() *SearchRequest_ContentSearchSpec_ChunkSpec {
	if x != nil {
		return x.ChunkSpec
	}
	return nil
}

// The specification that uses customized query embedding vector to do
// semantic document retrieval.
type SearchRequest_EmbeddingSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The embedding vector used for retrieval. Limit to 1.
	EmbeddingVectors []*SearchRequest_EmbeddingSpec_EmbeddingVector `protobuf:"bytes,1,rep,name=embedding_vectors,json=embeddingVectors,proto3" json:"embedding_vectors,omitempty"`
}

func (x *SearchRequest_EmbeddingSpec) Reset() {
	*x = SearchRequest_EmbeddingSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_EmbeddingSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_EmbeddingSpec) ProtoMessage() {}

func (x *SearchRequest_EmbeddingSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_EmbeddingSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_EmbeddingSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 7}
}

func (x *SearchRequest_EmbeddingSpec) GetEmbeddingVectors() []*SearchRequest_EmbeddingSpec_EmbeddingVector {
	if x != nil {
		return x.EmbeddingVectors
	}
	return nil
}

// Specification to enable natural language understanding capabilities for
// search requests.
type SearchRequest_NaturalLanguageQueryUnderstandingSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The condition under which filter extraction should occur.
	// Default to [Condition.DISABLED][].
	FilterExtractionCondition SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition `protobuf:"varint,1,opt,name=filter_extraction_condition,json=filterExtractionCondition,proto3,enum=google.cloud.discoveryengine.v1beta.SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition" json:"filter_extraction_condition,omitempty"`
	// Field names used for location-based filtering, where geolocation filters
	// are detected in natural language search queries.
	// Only valid when the FilterExtractionCondition is set to `ENABLED`.
	//
	// If this field is set, it overrides the field names set in
	// [ServingConfig.geo_search_query_detection_field_names][google.cloud.discoveryengine.v1beta.ServingConfig.geo_search_query_detection_field_names].
	GeoSearchQueryDetectionFieldNames []string `protobuf:"bytes,2,rep,name=geo_search_query_detection_field_names,json=geoSearchQueryDetectionFieldNames,proto3" json:"geo_search_query_detection_field_names,omitempty"`
}

func (x *SearchRequest_NaturalLanguageQueryUnderstandingSpec) Reset() {
	*x = SearchRequest_NaturalLanguageQueryUnderstandingSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_NaturalLanguageQueryUnderstandingSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_NaturalLanguageQueryUnderstandingSpec) ProtoMessage() {}

func (x *SearchRequest_NaturalLanguageQueryUnderstandingSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_NaturalLanguageQueryUnderstandingSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_NaturalLanguageQueryUnderstandingSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 8}
}

func (x *SearchRequest_NaturalLanguageQueryUnderstandingSpec) GetFilterExtractionCondition() SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition {
	if x != nil {
		return x.FilterExtractionCondition
	}
	return SearchRequest_NaturalLanguageQueryUnderstandingSpec_CONDITION_UNSPECIFIED
}

func (x *SearchRequest_NaturalLanguageQueryUnderstandingSpec) GetGeoSearchQueryDetectionFieldNames() []string {
	if x != nil {
		return x.GeoSearchQueryDetectionFieldNames
	}
	return nil
}

// Specification for search as you type in search requests.
type SearchRequest_SearchAsYouTypeSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The condition under which search as you type should occur.
	// Default to
	// [Condition.DISABLED][google.cloud.discoveryengine.v1beta.SearchRequest.SearchAsYouTypeSpec.Condition.DISABLED].
	Condition SearchRequest_SearchAsYouTypeSpec_Condition `protobuf:"varint,1,opt,name=condition,proto3,enum=google.cloud.discoveryengine.v1beta.SearchRequest_SearchAsYouTypeSpec_Condition" json:"condition,omitempty"`
}

func (x *SearchRequest_SearchAsYouTypeSpec) Reset() {
	*x = SearchRequest_SearchAsYouTypeSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_SearchAsYouTypeSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_SearchAsYouTypeSpec) ProtoMessage() {}

func (x *SearchRequest_SearchAsYouTypeSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[11]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_SearchAsYouTypeSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_SearchAsYouTypeSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 9}
}

func (x *SearchRequest_SearchAsYouTypeSpec) GetCondition() SearchRequest_SearchAsYouTypeSpec_Condition {
	if x != nil {
		return x.Condition
	}
	return SearchRequest_SearchAsYouTypeSpec_CONDITION_UNSPECIFIED
}

// Session specification.
//
// Multi-turn Search feature is currently at private GA stage. Please use
// v1alpha or v1beta version instead before we launch this feature to public
// GA. Or ask for allowlisting through Google Support team.
type SearchRequest_SessionSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If set, the search result gets stored to the "turn" specified by this
	// query ID.
	//
	// Example: Let's say the session looks like this:
	//
	//	session {
	//	  name: ".../sessions/xxx"
	//	  turns {
	//	    query { text: "What is foo?" query_id: ".../questions/yyy" }
	//	    answer: "Foo is ..."
	//	  }
	//	  turns {
	//	    query { text: "How about bar then?" query_id: ".../questions/zzz" }
	//	  }
	//	}
	//
	// The user can call /search API with a request like this:
	//
	//	session: ".../sessions/xxx"
	//	session_spec { query_id: ".../questions/zzz" }
	//
	// Then, the API stores the search result, associated with the last turn.
	// The stored search result can be used by a subsequent /answer API call
	// (with the session ID and the query ID specified). Also, it is possible
	// to call /search and /answer in parallel with the same session ID & query
	// ID.
	QueryId string `protobuf:"bytes,1,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"`
	// The number of top search results to persist. The persisted search results
	// can be used for the subsequent /answer api call.
	//
	// This field is simliar to the `summary_result_count` field in
	// [SearchRequest.ContentSearchSpec.SummarySpec.summary_result_count][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.summary_result_count].
	//
	// At most 10 results for documents mode, or 50 for chunks mode.
	SearchResultPersistenceCount *int32 `protobuf:"varint,2,opt,name=search_result_persistence_count,json=searchResultPersistenceCount,proto3,oneof" json:"search_result_persistence_count,omitempty"`
}

func (x *SearchRequest_SessionSpec) Reset() {
	*x = SearchRequest_SessionSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_SessionSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_SessionSpec) ProtoMessage() {}

func (x *SearchRequest_SessionSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[12]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_SessionSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_SessionSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 10}
}

func (x *SearchRequest_SessionSpec) GetQueryId() string {
	if x != nil {
		return x.QueryId
	}
	return ""
}

func (x *SearchRequest_SessionSpec) GetSearchResultPersistenceCount() int32 {
	if x != nil && x.SearchResultPersistenceCount != nil {
		return *x.SearchResultPersistenceCount
	}
	return 0
}

// The specification for personalization.
type SearchRequest_PersonalizationSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The personalization mode of the search request.
	// Defaults to
	// [Mode.AUTO][google.cloud.discoveryengine.v1beta.SearchRequest.PersonalizationSpec.Mode.AUTO].
	Mode SearchRequest_PersonalizationSpec_Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=google.cloud.discoveryengine.v1beta.SearchRequest_PersonalizationSpec_Mode" json:"mode,omitempty"`
}

func (x *SearchRequest_PersonalizationSpec) Reset() {
	*x = SearchRequest_PersonalizationSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_PersonalizationSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_PersonalizationSpec) ProtoMessage() {}

func (x *SearchRequest_PersonalizationSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[13]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_PersonalizationSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_PersonalizationSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 11}
}

func (x *SearchRequest_PersonalizationSpec) GetMode() SearchRequest_PersonalizationSpec_Mode {
	if x != nil {
		return x.Mode
	}
	return SearchRequest_PersonalizationSpec_MODE_UNSPECIFIED
}

// Specifies how a facet is computed.
type SearchRequest_FacetSpec_FacetKey struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Required. Supported textual and numerical facet keys in
	// [Document][google.cloud.discoveryengine.v1beta.Document] object, over
	// which the facet values are computed. Facet key is case-sensitive.
	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// Set only if values should be bucketed into intervals. Must be set
	// for facets with numerical values. Must not be set for facet with text
	// values. Maximum number of intervals is 30.
	Intervals []*Interval `protobuf:"bytes,2,rep,name=intervals,proto3" json:"intervals,omitempty"`
	// Only get facet for the given restricted values. Only supported on
	// textual fields. For example, suppose "category" has three values
	// "Action > 2022", "Action > 2021" and "Sci-Fi > 2022". If set
	// "restricted_values" to "Action > 2022", the "category" facet only
	// contains "Action > 2022". Only supported on textual fields. Maximum
	// is 10.
	RestrictedValues []string `protobuf:"bytes,3,rep,name=restricted_values,json=restrictedValues,proto3" json:"restricted_values,omitempty"`
	// Only get facet values that start with the given string prefix. For
	// example, suppose "category" has three values "Action > 2022",
	// "Action > 2021" and "Sci-Fi > 2022". If set "prefixes" to "Action", the
	// "category" facet only contains "Action > 2022" and "Action > 2021".
	// Only supported on textual fields. Maximum is 10.
	Prefixes []string `protobuf:"bytes,4,rep,name=prefixes,proto3" json:"prefixes,omitempty"`
	// Only get facet values that contain the given strings. For example,
	// suppose "category" has three values "Action > 2022",
	// "Action > 2021" and "Sci-Fi > 2022". If set "contains" to "2022", the
	// "category" facet only contains "Action > 2022" and "Sci-Fi > 2022".
	// Only supported on textual fields. Maximum is 10.
	Contains []string `protobuf:"bytes,5,rep,name=contains,proto3" json:"contains,omitempty"`
	// True to make facet keys case insensitive when getting faceting
	// values with prefixes or contains; false otherwise.
	CaseInsensitive bool `protobuf:"varint,6,opt,name=case_insensitive,json=caseInsensitive,proto3" json:"case_insensitive,omitempty"`
	// The order in which documents are returned.
	//
	// Allowed values are:
	//
	// * "count desc", which means order by
	// [SearchResponse.Facet.values.count][google.cloud.discoveryengine.v1beta.SearchResponse.Facet.FacetValue.count]
	// descending.
	//
	// * "value desc", which means order by
	// [SearchResponse.Facet.values.value][google.cloud.discoveryengine.v1beta.SearchResponse.Facet.FacetValue.value]
	// descending.
	//
	//	Only applies to textual facets.
	//
	// If not set, textual values are sorted in [natural
	// order](https://en.wikipedia.org/wiki/Natural_sort_order); numerical
	// intervals are sorted in the order given by
	// [FacetSpec.FacetKey.intervals][google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec.FacetKey.intervals].
	OrderBy string `protobuf:"bytes,7,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"`
}

func (x *SearchRequest_FacetSpec_FacetKey) Reset() {
	*x = SearchRequest_FacetSpec_FacetKey{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_FacetSpec_FacetKey) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_FacetSpec_FacetKey) ProtoMessage() {}

func (x *SearchRequest_FacetSpec_FacetKey) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[16]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_FacetSpec_FacetKey.ProtoReflect.Descriptor instead.
func (*SearchRequest_FacetSpec_FacetKey) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 2, 0}
}

func (x *SearchRequest_FacetSpec_FacetKey) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *SearchRequest_FacetSpec_FacetKey) GetIntervals() []*Interval {
	if x != nil {
		return x.Intervals
	}
	return nil
}

func (x *SearchRequest_FacetSpec_FacetKey) GetRestrictedValues() []string {
	if x != nil {
		return x.RestrictedValues
	}
	return nil
}

func (x *SearchRequest_FacetSpec_FacetKey) GetPrefixes() []string {
	if x != nil {
		return x.Prefixes
	}
	return nil
}

func (x *SearchRequest_FacetSpec_FacetKey) GetContains() []string {
	if x != nil {
		return x.Contains
	}
	return nil
}

func (x *SearchRequest_FacetSpec_FacetKey) GetCaseInsensitive() bool {
	if x != nil {
		return x.CaseInsensitive
	}
	return false
}

func (x *SearchRequest_FacetSpec_FacetKey) GetOrderBy() string {
	if x != nil {
		return x.OrderBy
	}
	return ""
}

// Boost applies to documents which match a condition.
type SearchRequest_BoostSpec_ConditionBoostSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// An expression which specifies a boost condition. The syntax and
	// supported fields are the same as a filter expression. See
	// [SearchRequest.filter][google.cloud.discoveryengine.v1beta.SearchRequest.filter]
	// for detail syntax and limitations.
	//
	// Examples:
	//
	// * To boost documents with document ID "doc_1" or "doc_2", and
	// color "Red" or "Blue":
	// `(document_id: ANY("doc_1", "doc_2")) AND (color: ANY("Red", "Blue"))`
	Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"`
	// Strength of the condition boost, which should be in [-1, 1]. Negative
	// boost means demotion. Default is 0.0.
	//
	// Setting to 1.0 gives the document a big promotion. However, it does
	// not necessarily mean that the boosted document will be the top result
	// at all times, nor that other documents will be excluded. Results
	// could still be shown even when none of them matches the condition.
	// And results that are significantly more relevant to the search query
	// can still trump your heavily favored but irrelevant documents.
	//
	// Setting to -1.0 gives the document a big demotion. However, results
	// that are deeply relevant might still be shown. The document will have
	// an upstream battle to get a fairly high ranking, but it is not
	// blocked out completely.
	//
	// Setting to 0.0 means no boost applied. The boosting condition is
	// ignored. Only one of the (condition, boost) combination or the
	// boost_control_spec below are set. If both are set then the global boost
	// is ignored and the more fine-grained boost_control_spec is applied.
	Boost float32 `protobuf:"fixed32,2,opt,name=boost,proto3" json:"boost,omitempty"`
	// Complex specification for custom ranking based on customer defined
	// attribute value.
	BoostControlSpec *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec `protobuf:"bytes,3,opt,name=boost_control_spec,json=boostControlSpec,proto3" json:"boost_control_spec,omitempty"`
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec) Reset() {
	*x = SearchRequest_BoostSpec_ConditionBoostSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_BoostSpec_ConditionBoostSpec) ProtoMessage() {}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[17]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_BoostSpec_ConditionBoostSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_BoostSpec_ConditionBoostSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 3, 0}
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec) GetCondition() string {
	if x != nil {
		return x.Condition
	}
	return ""
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec) GetBoost() float32 {
	if x != nil {
		return x.Boost
	}
	return 0
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec) GetBoostControlSpec() *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec {
	if x != nil {
		return x.BoostControlSpec
	}
	return nil
}

// Specification for custom ranking based on customer specified attribute
// value. It provides more controls for customized ranking than the simple
// (condition, boost) combination above.
type SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name of the field whose value will be used to determine the
	// boost amount.
	FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"`
	// The attribute type to be used to determine the boost amount. The
	// attribute value can be derived from the field value of the specified
	// field_name. In the case of numerical it is straightforward i.e.
	// attribute_value = numerical_field_value. In the case of freshness
	// however, attribute_value = (time.now() - datetime_field_value).
	AttributeType SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType `protobuf:"varint,2,opt,name=attribute_type,json=attributeType,proto3,enum=google.cloud.discoveryengine.v1beta.SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType" json:"attribute_type,omitempty"`
	// The interpolation type to be applied to connect the control points
	// listed below.
	InterpolationType SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType `protobuf:"varint,3,opt,name=interpolation_type,json=interpolationType,proto3,enum=google.cloud.discoveryengine.v1beta.SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType" json:"interpolation_type,omitempty"`
	// The control points used to define the curve. The monotonic function
	// (defined through the interpolation_type above) passes through the
	// control points listed here.
	ControlPoints []*SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint `protobuf:"bytes,4,rep,name=control_points,json=controlPoints,proto3" json:"control_points,omitempty"`
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec) Reset() {
	*x = SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec) ProtoMessage() {}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[18]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 3, 0, 0}
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec) GetFieldName() string {
	if x != nil {
		return x.FieldName
	}
	return ""
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec) GetAttributeType() SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType {
	if x != nil {
		return x.AttributeType
	}
	return SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ATTRIBUTE_TYPE_UNSPECIFIED
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec) GetInterpolationType() SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType {
	if x != nil {
		return x.InterpolationType
	}
	return SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_INTERPOLATION_TYPE_UNSPECIFIED
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec) GetControlPoints() []*SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint {
	if x != nil {
		return x.ControlPoints
	}
	return nil
}

// The control points used to define the curve. The curve defined
// through these control points can only be monotonically increasing
// or decreasing(constant values are acceptable).
type SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Can be one of:
	// 1. The numerical field value.
	// 2. The duration spec for freshness:
	// The value must be formatted as an XSD `dayTimeDuration` value (a
	// restricted subset of an ISO 8601 duration value). The pattern for
	// this is: `[nD][T[nH][nM][nS]]`.
	AttributeValue string `protobuf:"bytes,1,opt,name=attribute_value,json=attributeValue,proto3" json:"attribute_value,omitempty"`
	// The value between -1 to 1 by which to boost the score if the
	// attribute_value evaluates to the value specified above.
	BoostAmount float32 `protobuf:"fixed32,2,opt,name=boost_amount,json=boostAmount,proto3" json:"boost_amount,omitempty"`
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) Reset() {
	*x = SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) ProtoMessage() {}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[19]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint.ProtoReflect.Descriptor instead.
func (*SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 3, 0, 0, 0}
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) GetAttributeValue() string {
	if x != nil {
		return x.AttributeValue
	}
	return ""
}

func (x *SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint) GetBoostAmount() float32 {
	if x != nil {
		return x.BoostAmount
	}
	return 0
}

// A specification for configuring snippets in a search response.
type SearchRequest_ContentSearchSpec_SnippetSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// [DEPRECATED] This field is deprecated. To control snippet return, use
	// `return_snippet` field. For backwards compatibility, we will return
	// snippet if max_snippet_count > 0.
	//
	// Deprecated: Marked as deprecated in google/cloud/discoveryengine/v1beta/search_service.proto.
	MaxSnippetCount int32 `protobuf:"varint,1,opt,name=max_snippet_count,json=maxSnippetCount,proto3" json:"max_snippet_count,omitempty"`
	// [DEPRECATED] This field is deprecated and will have no affect on the
	// snippet.
	//
	// Deprecated: Marked as deprecated in google/cloud/discoveryengine/v1beta/search_service.proto.
	ReferenceOnly bool `protobuf:"varint,2,opt,name=reference_only,json=referenceOnly,proto3" json:"reference_only,omitempty"`
	// If `true`, then return snippet. If no snippet can be generated, we
	// return "No snippet is available for this page." A `snippet_status` with
	// `SUCCESS` or `NO_SNIPPET_AVAILABLE` will also be returned.
	ReturnSnippet bool `protobuf:"varint,3,opt,name=return_snippet,json=returnSnippet,proto3" json:"return_snippet,omitempty"`
}

func (x *SearchRequest_ContentSearchSpec_SnippetSpec) Reset() {
	*x = SearchRequest_ContentSearchSpec_SnippetSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[20]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_ContentSearchSpec_SnippetSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_ContentSearchSpec_SnippetSpec) ProtoMessage() {}

func (x *SearchRequest_ContentSearchSpec_SnippetSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[20]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_ContentSearchSpec_SnippetSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_ContentSearchSpec_SnippetSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 6, 0}
}

// Deprecated: Marked as deprecated in google/cloud/discoveryengine/v1beta/search_service.proto.
func (x *SearchRequest_ContentSearchSpec_SnippetSpec) GetMaxSnippetCount() int32 {
	if x != nil {
		return x.MaxSnippetCount
	}
	return 0
}

// Deprecated: Marked as deprecated in google/cloud/discoveryengine/v1beta/search_service.proto.
func (x *SearchRequest_ContentSearchSpec_SnippetSpec) GetReferenceOnly() bool {
	if x != nil {
		return x.ReferenceOnly
	}
	return false
}

func (x *SearchRequest_ContentSearchSpec_SnippetSpec) GetReturnSnippet() bool {
	if x != nil {
		return x.ReturnSnippet
	}
	return false
}

// A specification for configuring a summary returned in a search
// response.
type SearchRequest_ContentSearchSpec_SummarySpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The number of top results to generate the summary from. If the number
	// of results returned is less than `summaryResultCount`, the summary is
	// generated from all of the results.
	//
	// At most 10 results for documents mode, or 50 for chunks mode, can be
	// used to generate a summary. The chunks mode is used when
	// [SearchRequest.ContentSearchSpec.search_result_mode][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.search_result_mode]
	// is set to
	// [CHUNKS][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SearchResultMode.CHUNKS].
	SummaryResultCount int32 `protobuf:"varint,1,opt,name=summary_result_count,json=summaryResultCount,proto3" json:"summary_result_count,omitempty"`
	// Specifies whether to include citations in the summary. The default
	// value is `false`.
	//
	// When this field is set to `true`, summaries include in-line citation
	// numbers.
	//
	// Example summary including citations:
	//
	// BigQuery is Google Cloud's fully managed and completely serverless
	// enterprise data warehouse [1]. BigQuery supports all data types, works
	// across clouds, and has built-in machine learning and business
	// intelligence, all within a unified platform [2, 3].
	//
	// The citation numbers refer to the returned search results and are
	// 1-indexed. For example, [1] means that the sentence is attributed to
	// the first search result. [2, 3] means that the sentence is attributed
	// to both the second and third search results.
	IncludeCitations bool `protobuf:"varint,2,opt,name=include_citations,json=includeCitations,proto3" json:"include_citations,omitempty"`
	// Specifies whether to filter out adversarial queries. The default value
	// is `false`.
	//
	// Google employs search-query classification to detect adversarial
	// queries. No summary is returned if the search query is classified as an
	// adversarial query. For example, a user might ask a question regarding
	// negative comments about the company or submit a query designed to
	// generate unsafe, policy-violating output. If this field is set to
	// `true`, we skip generating summaries for adversarial queries and return
	// fallback messages instead.
	IgnoreAdversarialQuery bool `protobuf:"varint,3,opt,name=ignore_adversarial_query,json=ignoreAdversarialQuery,proto3" json:"ignore_adversarial_query,omitempty"`
	// Specifies whether to filter out queries that are not summary-seeking.
	// The default value is `false`.
	//
	// Google employs search-query classification to detect summary-seeking
	// queries. No summary is returned if the search query is classified as a
	// non-summary seeking query. For example, `why is the sky blue` and `Who
	// is the best soccer player in the world?` are summary-seeking queries,
	// but `SFO airport` and `world cup 2026` are not. They are most likely
	// navigational queries. If this field is set to `true`, we skip
	// generating summaries for non-summary seeking queries and return
	// fallback messages instead.
	IgnoreNonSummarySeekingQuery bool `protobuf:"varint,4,opt,name=ignore_non_summary_seeking_query,json=ignoreNonSummarySeekingQuery,proto3" json:"ignore_non_summary_seeking_query,omitempty"`
	// Specifies whether to filter out queries that have low relevance. The
	// default value is `false`.
	//
	// If this field is set to `false`, all search results are used regardless
	// of relevance to generate answers. If set to `true`, only queries with
	// high relevance search results will generate answers.
	IgnoreLowRelevantContent bool `protobuf:"varint,9,opt,name=ignore_low_relevant_content,json=ignoreLowRelevantContent,proto3" json:"ignore_low_relevant_content,omitempty"`
	// Optional. Specifies whether to filter out jail-breaking queries. The
	// default value is `false`.
	//
	// Google employs search-query classification to detect jail-breaking
	// queries. No summary is returned if the search query is classified as a
	// jail-breaking query. A user might add instructions to the query to
	// change the tone, style, language, content of the answer, or ask the
	// model to act as a different entity, e.g. "Reply in the tone of a
	// competing company's CEO". If this field is set to `true`, we skip
	// generating summaries for jail-breaking queries and return fallback
	// messages instead.
	IgnoreJailBreakingQuery bool `protobuf:"varint,10,opt,name=ignore_jail_breaking_query,json=ignoreJailBreakingQuery,proto3" json:"ignore_jail_breaking_query,omitempty"`
	// If specified, the spec will be used to modify the prompt provided to
	// the LLM.
	ModelPromptSpec *SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec `protobuf:"bytes,5,opt,name=model_prompt_spec,json=modelPromptSpec,proto3" json:"model_prompt_spec,omitempty"`
	// Language code for Summary. Use language tags defined by
	// [BCP47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt).
	// Note: This is an experimental feature.
	LanguageCode string `protobuf:"bytes,6,opt,name=language_code,json=languageCode,proto3" json:"language_code,omitempty"`
	// If specified, the spec will be used to modify the model specification
	// provided to the LLM.
	ModelSpec *SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec `protobuf:"bytes,7,opt,name=model_spec,json=modelSpec,proto3" json:"model_spec,omitempty"`
	// If true, answer will be generated from most relevant chunks from top
	// search results. This feature will improve summary quality.
	// Note that with this feature enabled, not all top search results
	// will be referenced and included in the reference list, so the citation
	// source index only points to the search results listed in the reference
	// list.
	UseSemanticChunks bool `protobuf:"varint,8,opt,name=use_semantic_chunks,json=useSemanticChunks,proto3" json:"use_semantic_chunks,omitempty"`
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) Reset() {
	*x = SearchRequest_ContentSearchSpec_SummarySpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[21]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_ContentSearchSpec_SummarySpec) ProtoMessage() {}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[21]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_ContentSearchSpec_SummarySpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_ContentSearchSpec_SummarySpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 6, 1}
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetSummaryResultCount() int32 {
	if x != nil {
		return x.SummaryResultCount
	}
	return 0
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetIncludeCitations() bool {
	if x != nil {
		return x.IncludeCitations
	}
	return false
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetIgnoreAdversarialQuery() bool {
	if x != nil {
		return x.IgnoreAdversarialQuery
	}
	return false
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetIgnoreNonSummarySeekingQuery() bool {
	if x != nil {
		return x.IgnoreNonSummarySeekingQuery
	}
	return false
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetIgnoreLowRelevantContent() bool {
	if x != nil {
		return x.IgnoreLowRelevantContent
	}
	return false
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetIgnoreJailBreakingQuery() bool {
	if x != nil {
		return x.IgnoreJailBreakingQuery
	}
	return false
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetModelPromptSpec() *SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec {
	if x != nil {
		return x.ModelPromptSpec
	}
	return nil
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetLanguageCode() string {
	if x != nil {
		return x.LanguageCode
	}
	return ""
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetModelSpec() *SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec {
	if x != nil {
		return x.ModelSpec
	}
	return nil
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec) GetUseSemanticChunks() bool {
	if x != nil {
		return x.UseSemanticChunks
	}
	return false
}

// A specification for configuring the extractive content in a search
// response.
type SearchRequest_ContentSearchSpec_ExtractiveContentSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The maximum number of extractive answers returned in each search
	// result.
	//
	// An extractive answer is a verbatim answer extracted from the original
	// document, which provides a precise and contextually relevant answer to
	// the search query.
	//
	// If the number of matching answers is less than the
	// `max_extractive_answer_count`, return all of the answers. Otherwise,
	// return the `max_extractive_answer_count`.
	//
	// At most five answers are returned for each
	// [SearchResult][google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult].
	MaxExtractiveAnswerCount int32 `protobuf:"varint,1,opt,name=max_extractive_answer_count,json=maxExtractiveAnswerCount,proto3" json:"max_extractive_answer_count,omitempty"`
	// The max number of extractive segments returned in each search result.
	// Only applied if the
	// [DataStore][google.cloud.discoveryengine.v1beta.DataStore] is set to
	// [DataStore.ContentConfig.CONTENT_REQUIRED][google.cloud.discoveryengine.v1beta.DataStore.ContentConfig.CONTENT_REQUIRED]
	// or
	// [DataStore.solution_types][google.cloud.discoveryengine.v1beta.DataStore.solution_types]
	// is
	// [SOLUTION_TYPE_CHAT][google.cloud.discoveryengine.v1beta.SolutionType.SOLUTION_TYPE_CHAT].
	//
	// An extractive segment is a text segment extracted from the original
	// document that is relevant to the search query, and, in general, more
	// verbose than an extractive answer. The segment could then be used as
	// input for LLMs to generate summaries and answers.
	//
	// If the number of matching segments is less than
	// `max_extractive_segment_count`, return all of the segments. Otherwise,
	// return the `max_extractive_segment_count`.
	MaxExtractiveSegmentCount int32 `protobuf:"varint,2,opt,name=max_extractive_segment_count,json=maxExtractiveSegmentCount,proto3" json:"max_extractive_segment_count,omitempty"`
	// Specifies whether to return the confidence score from the extractive
	// segments in each search result. This feature is available only for new
	// or allowlisted data stores. To allowlist your data store,
	// contact your Customer Engineer. The default value is `false`.
	ReturnExtractiveSegmentScore bool `protobuf:"varint,3,opt,name=return_extractive_segment_score,json=returnExtractiveSegmentScore,proto3" json:"return_extractive_segment_score,omitempty"`
	// Specifies whether to also include the adjacent from each selected
	// segments.
	// Return at most `num_previous_segments` segments before each selected
	// segments.
	NumPreviousSegments int32 `protobuf:"varint,4,opt,name=num_previous_segments,json=numPreviousSegments,proto3" json:"num_previous_segments,omitempty"`
	// Return at most `num_next_segments` segments after each selected
	// segments.
	NumNextSegments int32 `protobuf:"varint,5,opt,name=num_next_segments,json=numNextSegments,proto3" json:"num_next_segments,omitempty"`
}

func (x *SearchRequest_ContentSearchSpec_ExtractiveContentSpec) Reset() {
	*x = SearchRequest_ContentSearchSpec_ExtractiveContentSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_ContentSearchSpec_ExtractiveContentSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_ContentSearchSpec_ExtractiveContentSpec) ProtoMessage() {}

func (x *SearchRequest_ContentSearchSpec_ExtractiveContentSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[22]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_ContentSearchSpec_ExtractiveContentSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_ContentSearchSpec_ExtractiveContentSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 6, 2}
}

func (x *SearchRequest_ContentSearchSpec_ExtractiveContentSpec) GetMaxExtractiveAnswerCount() int32 {
	if x != nil {
		return x.MaxExtractiveAnswerCount
	}
	return 0
}

func (x *SearchRequest_ContentSearchSpec_ExtractiveContentSpec) GetMaxExtractiveSegmentCount() int32 {
	if x != nil {
		return x.MaxExtractiveSegmentCount
	}
	return 0
}

func (x *SearchRequest_ContentSearchSpec_ExtractiveContentSpec) GetReturnExtractiveSegmentScore() bool {
	if x != nil {
		return x.ReturnExtractiveSegmentScore
	}
	return false
}

func (x *SearchRequest_ContentSearchSpec_ExtractiveContentSpec) GetNumPreviousSegments() int32 {
	if x != nil {
		return x.NumPreviousSegments
	}
	return 0
}

func (x *SearchRequest_ContentSearchSpec_ExtractiveContentSpec) GetNumNextSegments() int32 {
	if x != nil {
		return x.NumNextSegments
	}
	return 0
}

// Specifies the chunk spec to be returned from the search response.
// Only available if the
// [SearchRequest.ContentSearchSpec.search_result_mode][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.search_result_mode]
// is set to
// [CHUNKS][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SearchResultMode.CHUNKS]
type SearchRequest_ContentSearchSpec_ChunkSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The number of previous chunks to be returned of the current chunk. The
	// maximum allowed value is 3.
	// If not specified, no previous chunks will be returned.
	NumPreviousChunks int32 `protobuf:"varint,1,opt,name=num_previous_chunks,json=numPreviousChunks,proto3" json:"num_previous_chunks,omitempty"`
	// The number of next chunks to be returned of the current chunk. The
	// maximum allowed value is 3.
	// If not specified, no next chunks will be returned.
	NumNextChunks int32 `protobuf:"varint,2,opt,name=num_next_chunks,json=numNextChunks,proto3" json:"num_next_chunks,omitempty"`
}

func (x *SearchRequest_ContentSearchSpec_ChunkSpec) Reset() {
	*x = SearchRequest_ContentSearchSpec_ChunkSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_ContentSearchSpec_ChunkSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_ContentSearchSpec_ChunkSpec) ProtoMessage() {}

func (x *SearchRequest_ContentSearchSpec_ChunkSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[23]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_ContentSearchSpec_ChunkSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_ContentSearchSpec_ChunkSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 6, 3}
}

func (x *SearchRequest_ContentSearchSpec_ChunkSpec) GetNumPreviousChunks() int32 {
	if x != nil {
		return x.NumPreviousChunks
	}
	return 0
}

func (x *SearchRequest_ContentSearchSpec_ChunkSpec) GetNumNextChunks() int32 {
	if x != nil {
		return x.NumNextChunks
	}
	return 0
}

// Specification of the prompt to use with the model.
type SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Text at the beginning of the prompt that instructs the assistant.
	// Examples are available in the user guide.
	Preamble string `protobuf:"bytes,1,opt,name=preamble,proto3" json:"preamble,omitempty"`
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec) Reset() {
	*x = SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec) ProtoMessage() {}

func (x *SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[24]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 6, 1, 0}
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec) GetPreamble() string {
	if x != nil {
		return x.Preamble
	}
	return ""
}

// Specification of the model.
type SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The model version used to generate the summary.
	//
	// Supported values are:
	//
	//   - `stable`: string. Default value when no value is specified. Uses a
	//     generally available, fine-tuned model. For more information, see
	//     [Answer generation model versions and
	//     lifecycle](https://cloud.google.com/generative-ai-app-builder/docs/answer-generation-models).
	//   - `preview`: string. (Public preview) Uses a preview model. For more
	//     information, see
	//     [Answer generation model versions and
	//     lifecycle](https://cloud.google.com/generative-ai-app-builder/docs/answer-generation-models).
	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec) Reset() {
	*x = SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec) ProtoMessage() {}

func (x *SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[25]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec.ProtoReflect.Descriptor instead.
func (*SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 6, 1, 1}
}

func (x *SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec) GetVersion() string {
	if x != nil {
		return x.Version
	}
	return ""
}

// Embedding vector.
type SearchRequest_EmbeddingSpec_EmbeddingVector struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Embedding field path in schema.
	FieldPath string `protobuf:"bytes,1,opt,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"`
	// Query embedding vector.
	Vector []float32 `protobuf:"fixed32,2,rep,packed,name=vector,proto3" json:"vector,omitempty"`
}

func (x *SearchRequest_EmbeddingSpec_EmbeddingVector) Reset() {
	*x = SearchRequest_EmbeddingSpec_EmbeddingVector{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchRequest_EmbeddingSpec_EmbeddingVector) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchRequest_EmbeddingSpec_EmbeddingVector) ProtoMessage() {}

func (x *SearchRequest_EmbeddingSpec_EmbeddingVector) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[26]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchRequest_EmbeddingSpec_EmbeddingVector.ProtoReflect.Descriptor instead.
func (*SearchRequest_EmbeddingSpec_EmbeddingVector) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{0, 7, 0}
}

func (x *SearchRequest_EmbeddingSpec_EmbeddingVector) GetFieldPath() string {
	if x != nil {
		return x.FieldPath
	}
	return ""
}

func (x *SearchRequest_EmbeddingSpec_EmbeddingVector) GetVector() []float32 {
	if x != nil {
		return x.Vector
	}
	return nil
}

// Represents the search results.
type SearchResponse_SearchResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// [Document.id][google.cloud.discoveryengine.v1beta.Document.id] of the
	// searched [Document][google.cloud.discoveryengine.v1beta.Document].
	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	// The document data snippet in the search response. Only fields that are
	// marked as `retrievable` are populated.
	Document *Document `protobuf:"bytes,2,opt,name=document,proto3" json:"document,omitempty"`
	// The chunk data in the search response if the
	// [SearchRequest.ContentSearchSpec.search_result_mode][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.search_result_mode]
	// is set to
	// [CHUNKS][google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SearchResultMode.CHUNKS].
	Chunk *Chunk `protobuf:"bytes,18,opt,name=chunk,proto3" json:"chunk,omitempty"`
	// Google provided available scores.
	ModelScores map[string]*DoubleList `protobuf:"bytes,4,rep,name=model_scores,json=modelScores,proto3" json:"model_scores,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *SearchResponse_SearchResult) Reset() {
	*x = SearchResponse_SearchResult{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_SearchResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_SearchResult) ProtoMessage() {}

func (x *SearchResponse_SearchResult) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[27]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_SearchResult.ProtoReflect.Descriptor instead.
func (*SearchResponse_SearchResult) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 0}
}

func (x *SearchResponse_SearchResult) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *SearchResponse_SearchResult) GetDocument() *Document {
	if x != nil {
		return x.Document
	}
	return nil
}

func (x *SearchResponse_SearchResult) GetChunk() *Chunk {
	if x != nil {
		return x.Chunk
	}
	return nil
}

func (x *SearchResponse_SearchResult) GetModelScores() map[string]*DoubleList {
	if x != nil {
		return x.ModelScores
	}
	return nil
}

// A facet result.
type SearchResponse_Facet struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The key for this facet. For example, `"colors"` or `"price"`. It matches
	// [SearchRequest.FacetSpec.FacetKey.key][google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec.FacetKey.key].
	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	// The facet values for this field.
	Values []*SearchResponse_Facet_FacetValue `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"`
	// Whether the facet is dynamically generated.
	DynamicFacet bool `protobuf:"varint,3,opt,name=dynamic_facet,json=dynamicFacet,proto3" json:"dynamic_facet,omitempty"`
}

func (x *SearchResponse_Facet) Reset() {
	*x = SearchResponse_Facet{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Facet) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Facet) ProtoMessage() {}

func (x *SearchResponse_Facet) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[28]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Facet.ProtoReflect.Descriptor instead.
func (*SearchResponse_Facet) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 1}
}

func (x *SearchResponse_Facet) GetKey() string {
	if x != nil {
		return x.Key
	}
	return ""
}

func (x *SearchResponse_Facet) GetValues() []*SearchResponse_Facet_FacetValue {
	if x != nil {
		return x.Values
	}
	return nil
}

func (x *SearchResponse_Facet) GetDynamicFacet() bool {
	if x != nil {
		return x.DynamicFacet
	}
	return false
}

// Guided search result. The guided search helps user to refine the search
// results and narrow down to the real needs from a broaded search results.
type SearchResponse_GuidedSearchResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A list of ranked refinement attributes.
	RefinementAttributes []*SearchResponse_GuidedSearchResult_RefinementAttribute `protobuf:"bytes,1,rep,name=refinement_attributes,json=refinementAttributes,proto3" json:"refinement_attributes,omitempty"`
	// Suggested follow-up questions.
	FollowUpQuestions []string `protobuf:"bytes,2,rep,name=follow_up_questions,json=followUpQuestions,proto3" json:"follow_up_questions,omitempty"`
}

func (x *SearchResponse_GuidedSearchResult) Reset() {
	*x = SearchResponse_GuidedSearchResult{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_GuidedSearchResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_GuidedSearchResult) ProtoMessage() {}

func (x *SearchResponse_GuidedSearchResult) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[29]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_GuidedSearchResult.ProtoReflect.Descriptor instead.
func (*SearchResponse_GuidedSearchResult) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 2}
}

func (x *SearchResponse_GuidedSearchResult) GetRefinementAttributes() []*SearchResponse_GuidedSearchResult_RefinementAttribute {
	if x != nil {
		return x.RefinementAttributes
	}
	return nil
}

func (x *SearchResponse_GuidedSearchResult) GetFollowUpQuestions() []string {
	if x != nil {
		return x.FollowUpQuestions
	}
	return nil
}

// Summary of the top N search results specified by the summary spec.
type SearchResponse_Summary struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The summary content.
	SummaryText string `protobuf:"bytes,1,opt,name=summary_text,json=summaryText,proto3" json:"summary_text,omitempty"`
	// Additional summary-skipped reasons. This provides the reason for ignored
	// cases. If nothing is skipped, this field is not set.
	SummarySkippedReasons []SearchResponse_Summary_SummarySkippedReason `protobuf:"varint,2,rep,packed,name=summary_skipped_reasons,json=summarySkippedReasons,proto3,enum=google.cloud.discoveryengine.v1beta.SearchResponse_Summary_SummarySkippedReason" json:"summary_skipped_reasons,omitempty"`
	// A collection of Safety Attribute categories and their associated
	// confidence scores.
	SafetyAttributes *SearchResponse_Summary_SafetyAttributes `protobuf:"bytes,3,opt,name=safety_attributes,json=safetyAttributes,proto3" json:"safety_attributes,omitempty"`
	// Summary with metadata information.
	SummaryWithMetadata *SearchResponse_Summary_SummaryWithMetadata `protobuf:"bytes,4,opt,name=summary_with_metadata,json=summaryWithMetadata,proto3" json:"summary_with_metadata,omitempty"`
}

func (x *SearchResponse_Summary) Reset() {
	*x = SearchResponse_Summary{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Summary) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Summary) ProtoMessage() {}

func (x *SearchResponse_Summary) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[30]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Summary.ProtoReflect.Descriptor instead.
func (*SearchResponse_Summary) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 3}
}

func (x *SearchResponse_Summary) GetSummaryText() string {
	if x != nil {
		return x.SummaryText
	}
	return ""
}

func (x *SearchResponse_Summary) GetSummarySkippedReasons() []SearchResponse_Summary_SummarySkippedReason {
	if x != nil {
		return x.SummarySkippedReasons
	}
	return nil
}

func (x *SearchResponse_Summary) GetSafetyAttributes() *SearchResponse_Summary_SafetyAttributes {
	if x != nil {
		return x.SafetyAttributes
	}
	return nil
}

func (x *SearchResponse_Summary) GetSummaryWithMetadata() *SearchResponse_Summary_SummaryWithMetadata {
	if x != nil {
		return x.SummaryWithMetadata
	}
	return nil
}

// Debug information specifically related to forward geocoding issues arising
// from Geolocation Search.
type SearchResponse_GeoSearchDebugInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The address from which forward geocoding ingestion produced issues.
	OriginalAddressQuery string `protobuf:"bytes,1,opt,name=original_address_query,json=originalAddressQuery,proto3" json:"original_address_query,omitempty"`
	// The error produced.
	ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
}

func (x *SearchResponse_GeoSearchDebugInfo) Reset() {
	*x = SearchResponse_GeoSearchDebugInfo{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_GeoSearchDebugInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_GeoSearchDebugInfo) ProtoMessage() {}

func (x *SearchResponse_GeoSearchDebugInfo) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[31]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_GeoSearchDebugInfo.ProtoReflect.Descriptor instead.
func (*SearchResponse_GeoSearchDebugInfo) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 4}
}

func (x *SearchResponse_GeoSearchDebugInfo) GetOriginalAddressQuery() string {
	if x != nil {
		return x.OriginalAddressQuery
	}
	return ""
}

func (x *SearchResponse_GeoSearchDebugInfo) GetErrorMessage() string {
	if x != nil {
		return x.ErrorMessage
	}
	return ""
}

// Information describing query expansion including whether expansion has
// occurred.
type SearchResponse_QueryExpansionInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Bool describing whether query expansion has occurred.
	ExpandedQuery bool `protobuf:"varint,1,opt,name=expanded_query,json=expandedQuery,proto3" json:"expanded_query,omitempty"`
	// Number of pinned results. This field will only be set when expansion
	// happens and
	// [SearchRequest.QueryExpansionSpec.pin_unexpanded_results][google.cloud.discoveryengine.v1beta.SearchRequest.QueryExpansionSpec.pin_unexpanded_results]
	// is set to true.
	PinnedResultCount int64 `protobuf:"varint,2,opt,name=pinned_result_count,json=pinnedResultCount,proto3" json:"pinned_result_count,omitempty"`
}

func (x *SearchResponse_QueryExpansionInfo) Reset() {
	*x = SearchResponse_QueryExpansionInfo{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_QueryExpansionInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_QueryExpansionInfo) ProtoMessage() {}

func (x *SearchResponse_QueryExpansionInfo) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[32]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_QueryExpansionInfo.ProtoReflect.Descriptor instead.
func (*SearchResponse_QueryExpansionInfo) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 5}
}

func (x *SearchResponse_QueryExpansionInfo) GetExpandedQuery() bool {
	if x != nil {
		return x.ExpandedQuery
	}
	return false
}

func (x *SearchResponse_QueryExpansionInfo) GetPinnedResultCount() int64 {
	if x != nil {
		return x.PinnedResultCount
	}
	return 0
}

// Information describing what natural language understanding was
// done on the input query.
type SearchResponse_NaturalLanguageQueryUnderstandingInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The filters that were extracted from the input query.
	ExtractedFilters string `protobuf:"bytes,1,opt,name=extracted_filters,json=extractedFilters,proto3" json:"extracted_filters,omitempty"`
	// Rewritten input query minus the extracted filters.
	RewrittenQuery string `protobuf:"bytes,2,opt,name=rewritten_query,json=rewrittenQuery,proto3" json:"rewritten_query,omitempty"`
	// The filters that were extracted from the input query represented in a
	// structured form.
	StructuredExtractedFilter *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter `protobuf:"bytes,3,opt,name=structured_extracted_filter,json=structuredExtractedFilter,proto3" json:"structured_extracted_filter,omitempty"`
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo) Reset() {
	*x = SearchResponse_NaturalLanguageQueryUnderstandingInfo{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo) ProtoMessage() {}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[33]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_NaturalLanguageQueryUnderstandingInfo.ProtoReflect.Descriptor instead.
func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 6}
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo) GetExtractedFilters() string {
	if x != nil {
		return x.ExtractedFilters
	}
	return ""
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo) GetRewrittenQuery() string {
	if x != nil {
		return x.RewrittenQuery
	}
	return ""
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo) GetStructuredExtractedFilter() *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter {
	if x != nil {
		return x.StructuredExtractedFilter
	}
	return nil
}

// Information about the session.
type SearchResponse_SessionInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Name of the session.
	// If the auto-session mode is used (when
	// [SearchRequest.session][google.cloud.discoveryengine.v1beta.SearchRequest.session]
	// ends with "-"), this field holds the newly generated session name.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// Query ID that corresponds to this search API call.
	// One session can have multiple turns, each with a unique query ID.
	//
	// By specifying the session name and this query ID in the Answer API call,
	// the answer generation happens in the context of the search results from
	// this search call.
	QueryId string `protobuf:"bytes,2,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"`
}

func (x *SearchResponse_SessionInfo) Reset() {
	*x = SearchResponse_SessionInfo{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_SessionInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_SessionInfo) ProtoMessage() {}

func (x *SearchResponse_SessionInfo) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[34]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_SessionInfo.ProtoReflect.Descriptor instead.
func (*SearchResponse_SessionInfo) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 7}
}

func (x *SearchResponse_SessionInfo) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *SearchResponse_SessionInfo) GetQueryId() string {
	if x != nil {
		return x.QueryId
	}
	return ""
}

// OneBoxResult is a holder for all results of specific type that we want
// to display in UI differently.
type SearchResponse_OneBoxResult struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The type of One Box result.
	OneBoxType SearchResponse_OneBoxResult_OneBoxType `protobuf:"varint,1,opt,name=one_box_type,json=oneBoxType,proto3,enum=google.cloud.discoveryengine.v1beta.SearchResponse_OneBoxResult_OneBoxType" json:"one_box_type,omitempty"`
	// The search results for this One Box.
	SearchResults []*SearchResponse_SearchResult `protobuf:"bytes,2,rep,name=search_results,json=searchResults,proto3" json:"search_results,omitempty"`
}

func (x *SearchResponse_OneBoxResult) Reset() {
	*x = SearchResponse_OneBoxResult{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_OneBoxResult) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_OneBoxResult) ProtoMessage() {}

func (x *SearchResponse_OneBoxResult) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[35]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_OneBoxResult.ProtoReflect.Descriptor instead.
func (*SearchResponse_OneBoxResult) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 8}
}

func (x *SearchResponse_OneBoxResult) GetOneBoxType() SearchResponse_OneBoxResult_OneBoxType {
	if x != nil {
		return x.OneBoxType
	}
	return SearchResponse_OneBoxResult_ONE_BOX_TYPE_UNSPECIFIED
}

func (x *SearchResponse_OneBoxResult) GetSearchResults() []*SearchResponse_SearchResult {
	if x != nil {
		return x.SearchResults
	}
	return nil
}

// A facet value which contains value names and their count.
type SearchResponse_Facet_FacetValue struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// A facet value which contains values.
	//
	// Types that are assignable to FacetValue:
	//
	//	*SearchResponse_Facet_FacetValue_Value
	//	*SearchResponse_Facet_FacetValue_Interval
	FacetValue isSearchResponse_Facet_FacetValue_FacetValue `protobuf_oneof:"facet_value"`
	// Number of items that have this facet value.
	Count int64 `protobuf:"varint,3,opt,name=count,proto3" json:"count,omitempty"`
}

func (x *SearchResponse_Facet_FacetValue) Reset() {
	*x = SearchResponse_Facet_FacetValue{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Facet_FacetValue) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Facet_FacetValue) ProtoMessage() {}

func (x *SearchResponse_Facet_FacetValue) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[37]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Facet_FacetValue.ProtoReflect.Descriptor instead.
func (*SearchResponse_Facet_FacetValue) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 1, 0}
}

func (m *SearchResponse_Facet_FacetValue) GetFacetValue() isSearchResponse_Facet_FacetValue_FacetValue {
	if m != nil {
		return m.FacetValue
	}
	return nil
}

func (x *SearchResponse_Facet_FacetValue) GetValue() string {
	if x, ok := x.GetFacetValue().(*SearchResponse_Facet_FacetValue_Value); ok {
		return x.Value
	}
	return ""
}

func (x *SearchResponse_Facet_FacetValue) GetInterval() *Interval {
	if x, ok := x.GetFacetValue().(*SearchResponse_Facet_FacetValue_Interval); ok {
		return x.Interval
	}
	return nil
}

func (x *SearchResponse_Facet_FacetValue) GetCount() int64 {
	if x != nil {
		return x.Count
	}
	return 0
}

type isSearchResponse_Facet_FacetValue_FacetValue interface {
	isSearchResponse_Facet_FacetValue_FacetValue()
}

type SearchResponse_Facet_FacetValue_Value struct {
	// Text value of a facet, such as "Black" for facet "colors".
	Value string `protobuf:"bytes,1,opt,name=value,proto3,oneof"`
}

type SearchResponse_Facet_FacetValue_Interval struct {
	// Interval value for a facet, such as [10, 20) for facet "price". It
	// matches
	// [SearchRequest.FacetSpec.FacetKey.intervals][google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec.FacetKey.intervals].
	Interval *Interval `protobuf:"bytes,2,opt,name=interval,proto3,oneof"`
}

func (*SearchResponse_Facet_FacetValue_Value) isSearchResponse_Facet_FacetValue_FacetValue() {}

func (*SearchResponse_Facet_FacetValue_Interval) isSearchResponse_Facet_FacetValue_FacetValue() {}

// Useful attribute for search result refinements.
type SearchResponse_GuidedSearchResult_RefinementAttribute struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Attribute key used to refine the results. For example, `"movie_type"`.
	AttributeKey string `protobuf:"bytes,1,opt,name=attribute_key,json=attributeKey,proto3" json:"attribute_key,omitempty"`
	// Attribute value used to refine the results. For example, `"drama"`.
	AttributeValue string `protobuf:"bytes,2,opt,name=attribute_value,json=attributeValue,proto3" json:"attribute_value,omitempty"`
}

func (x *SearchResponse_GuidedSearchResult_RefinementAttribute) Reset() {
	*x = SearchResponse_GuidedSearchResult_RefinementAttribute{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_GuidedSearchResult_RefinementAttribute) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_GuidedSearchResult_RefinementAttribute) ProtoMessage() {}

func (x *SearchResponse_GuidedSearchResult_RefinementAttribute) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[38]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_GuidedSearchResult_RefinementAttribute.ProtoReflect.Descriptor instead.
func (*SearchResponse_GuidedSearchResult_RefinementAttribute) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 2, 0}
}

func (x *SearchResponse_GuidedSearchResult_RefinementAttribute) GetAttributeKey() string {
	if x != nil {
		return x.AttributeKey
	}
	return ""
}

func (x *SearchResponse_GuidedSearchResult_RefinementAttribute) GetAttributeValue() string {
	if x != nil {
		return x.AttributeValue
	}
	return ""
}

// Safety Attribute categories and their associated confidence scores.
type SearchResponse_Summary_SafetyAttributes struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The display names of Safety Attribute categories associated with the
	// generated content. Order matches the Scores.
	Categories []string `protobuf:"bytes,1,rep,name=categories,proto3" json:"categories,omitempty"`
	// The confidence scores of the each category, higher
	// value means higher confidence. Order matches the Categories.
	Scores []float32 `protobuf:"fixed32,2,rep,packed,name=scores,proto3" json:"scores,omitempty"`
}

func (x *SearchResponse_Summary_SafetyAttributes) Reset() {
	*x = SearchResponse_Summary_SafetyAttributes{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Summary_SafetyAttributes) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Summary_SafetyAttributes) ProtoMessage() {}

func (x *SearchResponse_Summary_SafetyAttributes) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[39]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Summary_SafetyAttributes.ProtoReflect.Descriptor instead.
func (*SearchResponse_Summary_SafetyAttributes) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 3, 0}
}

func (x *SearchResponse_Summary_SafetyAttributes) GetCategories() []string {
	if x != nil {
		return x.Categories
	}
	return nil
}

func (x *SearchResponse_Summary_SafetyAttributes) GetScores() []float32 {
	if x != nil {
		return x.Scores
	}
	return nil
}

// Citation metadata.
type SearchResponse_Summary_CitationMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Citations for segments.
	Citations []*SearchResponse_Summary_Citation `protobuf:"bytes,1,rep,name=citations,proto3" json:"citations,omitempty"`
}

func (x *SearchResponse_Summary_CitationMetadata) Reset() {
	*x = SearchResponse_Summary_CitationMetadata{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Summary_CitationMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Summary_CitationMetadata) ProtoMessage() {}

func (x *SearchResponse_Summary_CitationMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[40]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Summary_CitationMetadata.ProtoReflect.Descriptor instead.
func (*SearchResponse_Summary_CitationMetadata) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 3, 1}
}

func (x *SearchResponse_Summary_CitationMetadata) GetCitations() []*SearchResponse_Summary_Citation {
	if x != nil {
		return x.Citations
	}
	return nil
}

// Citation info for a segment.
type SearchResponse_Summary_Citation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Index indicates the start of the segment, measured in bytes/unicode.
	StartIndex int64 `protobuf:"varint,1,opt,name=start_index,json=startIndex,proto3" json:"start_index,omitempty"`
	// End of the attributed segment, exclusive.
	EndIndex int64 `protobuf:"varint,2,opt,name=end_index,json=endIndex,proto3" json:"end_index,omitempty"`
	// Citation sources for the attributed segment.
	Sources []*SearchResponse_Summary_CitationSource `protobuf:"bytes,3,rep,name=sources,proto3" json:"sources,omitempty"`
}

func (x *SearchResponse_Summary_Citation) Reset() {
	*x = SearchResponse_Summary_Citation{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Summary_Citation) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Summary_Citation) ProtoMessage() {}

func (x *SearchResponse_Summary_Citation) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[41]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Summary_Citation.ProtoReflect.Descriptor instead.
func (*SearchResponse_Summary_Citation) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 3, 2}
}

func (x *SearchResponse_Summary_Citation) GetStartIndex() int64 {
	if x != nil {
		return x.StartIndex
	}
	return 0
}

func (x *SearchResponse_Summary_Citation) GetEndIndex() int64 {
	if x != nil {
		return x.EndIndex
	}
	return 0
}

func (x *SearchResponse_Summary_Citation) GetSources() []*SearchResponse_Summary_CitationSource {
	if x != nil {
		return x.Sources
	}
	return nil
}

// Citation source.
type SearchResponse_Summary_CitationSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Document reference index from SummaryWithMetadata.references.
	// It is 0-indexed and the value will be zero if the reference_index is
	// not set explicitly.
	ReferenceIndex int64 `protobuf:"varint,4,opt,name=reference_index,json=referenceIndex,proto3" json:"reference_index,omitempty"`
}

func (x *SearchResponse_Summary_CitationSource) Reset() {
	*x = SearchResponse_Summary_CitationSource{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Summary_CitationSource) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Summary_CitationSource) ProtoMessage() {}

func (x *SearchResponse_Summary_CitationSource) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[42]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Summary_CitationSource.ProtoReflect.Descriptor instead.
func (*SearchResponse_Summary_CitationSource) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 3, 3}
}

func (x *SearchResponse_Summary_CitationSource) GetReferenceIndex() int64 {
	if x != nil {
		return x.ReferenceIndex
	}
	return 0
}

// Document reference.
type SearchResponse_Summary_Reference struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Title of the document.
	Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
	// Required.
	// [Document.name][google.cloud.discoveryengine.v1beta.Document.name] of
	// the document. Full resource name of the referenced document, in the
	// format
	// `projects/*/locations/*/collections/*/dataStores/*/branches/*/documents/*`.
	Document string `protobuf:"bytes,2,opt,name=document,proto3" json:"document,omitempty"`
	// Cloud Storage or HTTP uri for the document.
	Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"`
	// List of cited chunk contents derived from document content.
	ChunkContents []*SearchResponse_Summary_Reference_ChunkContent `protobuf:"bytes,4,rep,name=chunk_contents,json=chunkContents,proto3" json:"chunk_contents,omitempty"`
}

func (x *SearchResponse_Summary_Reference) Reset() {
	*x = SearchResponse_Summary_Reference{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Summary_Reference) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Summary_Reference) ProtoMessage() {}

func (x *SearchResponse_Summary_Reference) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[43]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Summary_Reference.ProtoReflect.Descriptor instead.
func (*SearchResponse_Summary_Reference) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 3, 4}
}

func (x *SearchResponse_Summary_Reference) GetTitle() string {
	if x != nil {
		return x.Title
	}
	return ""
}

func (x *SearchResponse_Summary_Reference) GetDocument() string {
	if x != nil {
		return x.Document
	}
	return ""
}

func (x *SearchResponse_Summary_Reference) GetUri() string {
	if x != nil {
		return x.Uri
	}
	return ""
}

func (x *SearchResponse_Summary_Reference) GetChunkContents() []*SearchResponse_Summary_Reference_ChunkContent {
	if x != nil {
		return x.ChunkContents
	}
	return nil
}

// Summary with metadata information.
type SearchResponse_Summary_SummaryWithMetadata struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Summary text with no citation information.
	Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"`
	// Citation metadata for given summary.
	CitationMetadata *SearchResponse_Summary_CitationMetadata `protobuf:"bytes,2,opt,name=citation_metadata,json=citationMetadata,proto3" json:"citation_metadata,omitempty"`
	// Document References.
	References []*SearchResponse_Summary_Reference `protobuf:"bytes,3,rep,name=references,proto3" json:"references,omitempty"`
}

func (x *SearchResponse_Summary_SummaryWithMetadata) Reset() {
	*x = SearchResponse_Summary_SummaryWithMetadata{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Summary_SummaryWithMetadata) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Summary_SummaryWithMetadata) ProtoMessage() {}

func (x *SearchResponse_Summary_SummaryWithMetadata) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[44]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Summary_SummaryWithMetadata.ProtoReflect.Descriptor instead.
func (*SearchResponse_Summary_SummaryWithMetadata) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 3, 5}
}

func (x *SearchResponse_Summary_SummaryWithMetadata) GetSummary() string {
	if x != nil {
		return x.Summary
	}
	return ""
}

func (x *SearchResponse_Summary_SummaryWithMetadata) GetCitationMetadata() *SearchResponse_Summary_CitationMetadata {
	if x != nil {
		return x.CitationMetadata
	}
	return nil
}

func (x *SearchResponse_Summary_SummaryWithMetadata) GetReferences() []*SearchResponse_Summary_Reference {
	if x != nil {
		return x.References
	}
	return nil
}

// Chunk content.
type SearchResponse_Summary_Reference_ChunkContent struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Chunk textual content.
	Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
	// Page identifier.
	PageIdentifier string `protobuf:"bytes,2,opt,name=page_identifier,json=pageIdentifier,proto3" json:"page_identifier,omitempty"`
}

func (x *SearchResponse_Summary_Reference_ChunkContent) Reset() {
	*x = SearchResponse_Summary_Reference_ChunkContent{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_Summary_Reference_ChunkContent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_Summary_Reference_ChunkContent) ProtoMessage() {}

func (x *SearchResponse_Summary_Reference_ChunkContent) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[45]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_Summary_Reference_ChunkContent.ProtoReflect.Descriptor instead.
func (*SearchResponse_Summary_Reference_ChunkContent) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 3, 4, 0}
}

func (x *SearchResponse_Summary_Reference_ChunkContent) GetContent() string {
	if x != nil {
		return x.Content
	}
	return ""
}

func (x *SearchResponse_Summary_Reference_ChunkContent) GetPageIdentifier() string {
	if x != nil {
		return x.PageIdentifier
	}
	return ""
}

// The filters that were extracted from the input query represented in a
// structured form.
type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The expression denoting the filter that was extracted from the input
	// query in a structured form. It can be a simple expression denoting a
	// single string, numerical or geolocation constraint or a compound
	// expression which is a combination of multiple expressions connected
	// using logical (OR and AND) operators.
	Expression *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"`
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter) Reset() {
	*x = SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[46]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter) ProtoMessage() {
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[46]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter.ProtoReflect.Descriptor instead.
func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 6, 0}
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter) GetExpression() *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression {
	if x != nil {
		return x.Expression
	}
	return nil
}

// Constraint expression of a string field.
type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Name of the string field as defined in the schema.
	FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"`
	// Values of the string field. The record will only be returned if the
	// field value matches one of the values specified here.
	Values []string `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"`
	// Identifies the keywords within the search query that match a filter.
	QuerySegment string `protobuf:"bytes,3,opt,name=query_segment,json=querySegment,proto3" json:"query_segment,omitempty"`
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint) Reset() {
	*x = SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[47]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint) ProtoMessage() {
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[47]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint.ProtoReflect.Descriptor instead.
func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 6, 0, 0}
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint) GetFieldName() string {
	if x != nil {
		return x.FieldName
	}
	return ""
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint) GetValues() []string {
	if x != nil {
		return x.Values
	}
	return nil
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint) GetQuerySegment() string {
	if x != nil {
		return x.QuerySegment
	}
	return ""
}

// Constraint expression of a number field. Example: price < 100.
type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Name of the numerical field as defined in the schema.
	FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"`
	// The comparison operation performed between the field value and the
	// value specified in the constraint.
	Comparison SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison `protobuf:"varint,2,opt,name=comparison,proto3,enum=google.cloud.discoveryengine.v1beta.SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison" json:"comparison,omitempty"`
	// The value specified in the numerical constraint.
	Value float64 `protobuf:"fixed64,3,opt,name=value,proto3" json:"value,omitempty"`
	// Identifies the keywords within the search query that match a filter.
	QuerySegment string `protobuf:"bytes,4,opt,name=query_segment,json=querySegment,proto3" json:"query_segment,omitempty"`
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint) Reset() {
	*x = SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[48]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint) ProtoMessage() {
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[48]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint.ProtoReflect.Descriptor instead.
func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 6, 0, 1}
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint) GetFieldName() string {
	if x != nil {
		return x.FieldName
	}
	return ""
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint) GetComparison() SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison {
	if x != nil {
		return x.Comparison
	}
	return SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_COMPARISON_UNSPECIFIED
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint) GetValue() float64 {
	if x != nil {
		return x.Value
	}
	return 0
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint) GetQuerySegment() string {
	if x != nil {
		return x.QuerySegment
	}
	return ""
}

// Constraint of a geolocation field.
// Name of the geolocation field as defined in the schema.
type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The name of the geolocation field as defined in the schema.
	FieldName string `protobuf:"bytes,1,opt,name=field_name,json=fieldName,proto3" json:"field_name,omitempty"`
	// The reference address that was inferred from the input query. The
	// proximity of the reference address to the geolocation field will be
	// used to filter the results.
	Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
	// The latitude of the geolocation inferred from the input query.
	Latitude float64 `protobuf:"fixed64,4,opt,name=latitude,proto3" json:"latitude,omitempty"`
	// The longitude of the geolocation inferred from the input query.
	Longitude float64 `protobuf:"fixed64,5,opt,name=longitude,proto3" json:"longitude,omitempty"`
	// The radius in meters around the address. The record is returned if
	// the location of the geolocation field is within the radius.
	RadiusInMeters float32 `protobuf:"fixed32,3,opt,name=radius_in_meters,json=radiusInMeters,proto3" json:"radius_in_meters,omitempty"`
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) Reset() {
	*x = SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[49]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) ProtoMessage() {
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[49]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint.ProtoReflect.Descriptor instead.
func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 6, 0, 2}
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) GetFieldName() string {
	if x != nil {
		return x.FieldName
	}
	return ""
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) GetAddress() string {
	if x != nil {
		return x.Address
	}
	return ""
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) GetLatitude() float64 {
	if x != nil {
		return x.Latitude
	}
	return 0
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) GetLongitude() float64 {
	if x != nil {
		return x.Longitude
	}
	return 0
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint) GetRadiusInMeters() float32 {
	if x != nil {
		return x.RadiusInMeters
	}
	return 0
}

// Logical `And` operator.
type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The expressions that were ANDed together.
	Expressions []*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression `protobuf:"bytes,1,rep,name=expressions,proto3" json:"expressions,omitempty"`
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression) Reset() {
	*x = SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[50]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression) ProtoMessage() {
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[50]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression.ProtoReflect.Descriptor instead.
func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 6, 0, 3}
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression) GetExpressions() []*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression {
	if x != nil {
		return x.Expressions
	}
	return nil
}

// Logical `Or` operator.
type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The expressions that were ORed together.
	Expressions []*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression `protobuf:"bytes,1,rep,name=expressions,proto3" json:"expressions,omitempty"`
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression) Reset() {
	*x = SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[51]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression) ProtoMessage() {
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[51]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression.ProtoReflect.Descriptor instead.
func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 6, 0, 4}
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression) GetExpressions() []*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression {
	if x != nil {
		return x.Expressions
	}
	return nil
}

// The expression denoting the filter that was extracted from the input
// query.
type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// The expression type.
	//
	// Types that are assignable to Expr:
	//
	//	*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_StringConstraint
	//	*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_NumberConstraint
	//	*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_GeolocationConstraint
	//	*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_AndExpr
	//	*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_OrExpr
	Expr isSearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_Expr `protobuf_oneof:"expr"`
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) Reset() {
	*x = SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression{}
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[52]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) ProtoMessage() {
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) ProtoReflect() protoreflect.Message {
	mi := &file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[52]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression.ProtoReflect.Descriptor instead.
func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) Descriptor() ([]byte, []int) {
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP(), []int{1, 6, 0, 5}
}

func (m *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) GetExpr() isSearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_Expr {
	if m != nil {
		return m.Expr
	}
	return nil
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) GetStringConstraint() *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint {
	if x, ok := x.GetExpr().(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_StringConstraint); ok {
		return x.StringConstraint
	}
	return nil
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) GetNumberConstraint() *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint {
	if x, ok := x.GetExpr().(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_NumberConstraint); ok {
		return x.NumberConstraint
	}
	return nil
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) GetGeolocationConstraint() *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint {
	if x, ok := x.GetExpr().(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_GeolocationConstraint); ok {
		return x.GeolocationConstraint
	}
	return nil
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) GetAndExpr() *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression {
	if x, ok := x.GetExpr().(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_AndExpr); ok {
		return x.AndExpr
	}
	return nil
}

func (x *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression) GetOrExpr() *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression {
	if x, ok := x.GetExpr().(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_OrExpr); ok {
		return x.OrExpr
	}
	return nil
}

type isSearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_Expr interface {
	isSearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_Expr()
}

type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_StringConstraint struct {
	// String constraint expression.
	StringConstraint *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint `protobuf:"bytes,1,opt,name=string_constraint,json=stringConstraint,proto3,oneof"`
}

type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_NumberConstraint struct {
	// Numerical constraint expression.
	NumberConstraint *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint `protobuf:"bytes,2,opt,name=number_constraint,json=numberConstraint,proto3,oneof"`
}

type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_GeolocationConstraint struct {
	// Geolocation constraint expression.
	GeolocationConstraint *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint `protobuf:"bytes,3,opt,name=geolocation_constraint,json=geolocationConstraint,proto3,oneof"`
}

type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_AndExpr struct {
	// Logical "And" compound operator connecting multiple expressions.
	AndExpr *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression `protobuf:"bytes,4,opt,name=and_expr,json=andExpr,proto3,oneof"`
}

type SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_OrExpr struct {
	// Logical "Or" compound operator connecting multiple expressions.
	OrExpr *SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression `protobuf:"bytes,5,opt,name=or_expr,json=orExpr,proto3,oneof"`
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_StringConstraint) isSearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_Expr() {
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_NumberConstraint) isSearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_Expr() {
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_GeolocationConstraint) isSearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_Expr() {
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_AndExpr) isSearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_Expr() {
}

func (*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_OrExpr) isSearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_Expr() {
}

var File_google_cloud_discoveryengine_v1beta_search_service_proto protoreflect.FileDescriptor

var file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDesc = []byte{
	0x0a, 0x38, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x64,
	0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x65, 0x72,
	0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x1a,
	0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f,
	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61,
	0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f,
	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
	0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x1a, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
	0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e,
	0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67,
	0x69, 0x6e, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x64, 0x6f, 0x63, 0x75, 0x6d,
	0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63,
	0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa2, 0x40, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5b, 0x0a, 0x0e, 0x73, 0x65, 0x72,
	0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x42, 0x34, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x2e, 0x0a, 0x2c, 0x64, 0x69, 0x73, 0x63, 0x6f,
	0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x6e,
	0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67,
	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x42, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0xfa, 0x41, 0x27, 0x0a, 0x25, 0x64, 0x69, 0x73,
	0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x42, 0x72, 0x61, 0x6e,
	0x63, 0x68, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75,
	0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79,
	0x12, 0x5e, 0x0a, 0x0b, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18,
	0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e,
	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79,
	0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a,
	0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06,
	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f, 0x66,
	0x66, 0x73, 0x65, 0x74, 0x12, 0x29, 0x0a, 0x11, 0x6f, 0x6e, 0x65, 0x5f, 0x62, 0x6f, 0x78, 0x5f,
	0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x0e, 0x6f, 0x6e, 0x65, 0x42, 0x6f, 0x78, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12,
	0x6a, 0x0a, 0x10, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x70,
	0x65, 0x63, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61,
	0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0e, 0x64, 0x61, 0x74,
	0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x66,
	0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x6c,
	0x74, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c,
	0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63,
	0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x19,
	0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x4a, 0x0a, 0x09, 0x75, 0x73, 0x65,
	0x72, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63,
	0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x75, 0x73, 0x65,
	0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
	0x65, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61,
	0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65,
	0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0a, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x5d, 0x0a, 0x0b, 0x66,
	0x61, 0x63, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x3c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71,
	0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0a,
	0x66, 0x61, 0x63, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x12, 0x5b, 0x0a, 0x0a, 0x62, 0x6f,
	0x6f, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69,
	0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x62, 0x6f,
	0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x56, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d,
	0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61,
	0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12,
	0x77, 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69,
	0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73,
	0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
	0x53, 0x70, 0x65, 0x63, 0x52, 0x12, 0x71, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e,
	0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x7a, 0x0a, 0x15, 0x73, 0x70, 0x65, 0x6c,
	0x6c, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65,
	0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x6c,
	0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52,
	0x13, 0x73, 0x70, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x53, 0x70, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0e, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x73, 0x65,
	0x75, 0x64, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73,
	0x65, 0x72, 0x50, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x49, 0x64, 0x12, 0x74, 0x0a, 0x13, 0x63, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x73, 0x70, 0x65,
	0x63, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
	0x65, 0x6e, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x52, 0x11, 0x63,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63,
	0x12, 0x67, 0x0a, 0x0e, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x70,
	0x65, 0x63, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
	0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6d, 0x62,
	0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0d, 0x65, 0x6d, 0x62, 0x65,
	0x64, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x61, 0x6e,
	0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18,
	0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x72, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x78,
	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x61, 0x66, 0x65,
	0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73,
	0x61, 0x66, 0x65, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x63, 0x0a, 0x0b, 0x75, 0x73, 0x65,
	0x72, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69,
	0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0xb2,
	0x01, 0x0a, 0x29, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75,
	0x61, 0x67, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73,
	0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x1c, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x58, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e,
	0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61,
	0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72,
	0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x52, 0x25, 0x6e, 0x61,
	0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x53,
	0x70, 0x65, 0x63, 0x12, 0x7c, 0x0a, 0x17, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x61, 0x73,
	0x5f, 0x79, 0x6f, 0x75, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x1f,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67,
	0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41,
	0x73, 0x59, 0x6f, 0x75, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x52, 0x13, 0x73, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x41, 0x73, 0x59, 0x6f, 0x75, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70, 0x65,
	0x63, 0x12, 0x45, 0x0a, 0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x29, 0x20, 0x01,
	0x28, 0x09, 0x42, 0x2b, 0xfa, 0x41, 0x28, 0x0a, 0x26, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52,
	0x07, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x61, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69,
	0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65,
	0x73, 0x74, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b,
	0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x76, 0x0a, 0x13, 0x72,
	0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f,
	0x6c, 0x64, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
	0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x6c,
	0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x52,
	0x12, 0x72, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68,
	0x6f, 0x6c, 0x64, 0x12, 0x79, 0x0a, 0x14, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69,
	0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x2e, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
	0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
	0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x7a,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x52, 0x13, 0x70, 0x65, 0x72, 0x73, 0x6f,
	0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x38,
	0x0a, 0x0a, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0b,
	0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x09, 0x48, 0x00, 0x52, 0x0a, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x42,
	0x07, 0x0a, 0x05, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x1a, 0x7d, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61,
	0x53, 0x74, 0x6f, 0x72, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4f, 0x0a, 0x0a, 0x64, 0x61, 0x74,
	0x61, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x30, 0xe0,
	0x41, 0x02, 0xfa, 0x41, 0x2a, 0x0a, 0x28, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69,
	0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52,
	0x09, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x06, 0x66, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52,
	0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x90, 0x04, 0x0a, 0x09, 0x46, 0x61, 0x63, 0x65,
	0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x67, 0x0a, 0x09, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
	0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x61, 0x63,
	0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x42,
	0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x66, 0x61, 0x63, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x14,
	0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c,
	0x69, 0x6d, 0x69, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64,
	0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03,
	0x28, 0x09, 0x52, 0x12, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
	0x5f, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
	0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x44,
	0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x99,
	0x02, 0x0a, 0x08, 0x46, 0x61, 0x63, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x12, 0x15, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x03, 0x6b,
	0x65, 0x79, 0x12, 0x4b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e,
	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x65,
	0x72, 0x76, 0x61, 0x6c, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x73, 0x12,
	0x2b, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x73, 0x74,
	0x72, 0x69, 0x63, 0x74, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08,
	0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
	0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x74,
	0x61, 0x69, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x74,
	0x61, 0x69, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x61, 0x73, 0x65, 0x5f, 0x69, 0x6e, 0x73,
	0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
	0x63, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x73, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x12,
	0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x1a, 0xe4, 0x08, 0x0a, 0x09, 0x42,
	0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x83, 0x01, 0x0a, 0x15, 0x63, 0x6f, 0x6e,
	0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x5f, 0x73, 0x70, 0x65,
	0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
	0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x6f,
	0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
	0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52, 0x13, 0x63, 0x6f, 0x6e, 0x64, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x73, 0x1a, 0xd0,
	0x07, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73,
	0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69,
	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x02, 0x52, 0x05, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x12, 0x8e, 0x01, 0x0a, 0x12, 0x62, 0x6f,
	0x6f, 0x73, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x73, 0x70, 0x65, 0x63,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x60, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65,
	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74,
	0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f,
	0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e,
	0x74, 0x72, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x52, 0x10, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x43,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x1a, 0xf4, 0x05, 0x0a, 0x10, 0x42,
	0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12,
	0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x95,
	0x01, 0x0a, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x74, 0x79, 0x70,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x6e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x73,
	0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42,
	0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f,
	0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
	0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
	0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x72,
	0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x72, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65,
	0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74,
	0x53, 0x70, 0x65, 0x63, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f,
	0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x0e, 0x63,
	0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x53, 0x70, 0x65,
	0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x73, 0x74,
	0x53, 0x70, 0x65, 0x63, 0x2e, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
	0x6c, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69,
	0x6e, 0x74, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74,
	0x73, 0x1a, 0x5a, 0x0a, 0x0c, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e,
	0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72,
	0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x6f,
	0x6f, 0x73, 0x74, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
	0x52, 0x0b, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x4d, 0x0a,
	0x0d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e,
	0x0a, 0x1a, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d,
	0x0a, 0x09, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a,
	0x09, 0x46, 0x52, 0x45, 0x53, 0x48, 0x4e, 0x45, 0x53, 0x53, 0x10, 0x02, 0x22, 0x43, 0x0a, 0x11,
	0x49, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x6f, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x22, 0x0a, 0x1e, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x50, 0x4f, 0x4c, 0x41, 0x54, 0x49,
	0x4f, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x49, 0x4e, 0x45, 0x41, 0x52, 0x10,
	0x01, 0x1a, 0xf9, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e,
	0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6d, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4f, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f,
	0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
	0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70,
	0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f,
	0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x69, 0x6e, 0x5f, 0x75,
	0x6e, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
	0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x70, 0x69, 0x6e, 0x55, 0x6e, 0x65, 0x78,
	0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x3e, 0x0a,
	0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f,
	0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46,
	0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45,
	0x44, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x1a, 0xb3, 0x01,
	0x0a, 0x13, 0x53, 0x70, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5f, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x6c, 0x6c, 0x43, 0x6f, 0x72,
	0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x6f, 0x64, 0x65,
	0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x3b, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14,
	0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x55, 0x47, 0x47, 0x45, 0x53, 0x54, 0x49,
	0x4f, 0x4e, 0x5f, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54,
	0x4f, 0x10, 0x02, 0x1a, 0xb9, 0x10, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x12, 0x73, 0x0a, 0x0c, 0x73, 0x6e, 0x69,
	0x70, 0x70, 0x65, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64,
	0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75,
	0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x53, 0x70, 0x65,
	0x63, 0x52, 0x0b, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x73,
	0x0a, 0x0c, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67,
	0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61,
	0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x52, 0x0b, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x53,
	0x70, 0x65, 0x63, 0x12, 0x92, 0x01, 0x0a, 0x17, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69,
	0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e,
	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x45, 0x78, 0x74, 0x72,
	0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65,
	0x63, 0x52, 0x15, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e,
	0x74, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x83, 0x01, 0x0a, 0x12, 0x73, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x55, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e,
	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x10, 0x73, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x6d,
	0x0a, 0x0a, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e,
	0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52,
	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x70,
	0x65, 0x63, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x1a, 0x8f, 0x01,
	0x0a, 0x0b, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x53, 0x70, 0x65, 0x63, 0x12, 0x2e, 0x0a,
	0x11, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x75,
	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x6d, 0x61,
	0x78, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a,
	0x0e, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x66, 0x65, 0x72,
	0x65, 0x6e, 0x63, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x75,
	0x72, 0x6e, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x0d, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x1a,
	0xa4, 0x06, 0x0a, 0x0b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x12,
	0x30, 0x0a, 0x14, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c,
	0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x73,
	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75, 0x6e,
	0x74, 0x12, 0x2b, 0x0a, 0x11, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x63, 0x69, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x6e,
	0x63, 0x6c, 0x75, 0x64, 0x65, 0x43, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38,
	0x0a, 0x18, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x64, 0x76, 0x65, 0x72, 0x73, 0x61,
	0x72, 0x69, 0x61, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
	0x52, 0x16, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x41, 0x64, 0x76, 0x65, 0x72, 0x73, 0x61, 0x72,
	0x69, 0x61, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x20, 0x69, 0x67, 0x6e, 0x6f,
	0x72, 0x65, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73,
	0x65, 0x65, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x08, 0x52, 0x1c, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4e, 0x6f, 0x6e, 0x53, 0x75, 0x6d,
	0x6d, 0x61, 0x72, 0x79, 0x53, 0x65, 0x65, 0x6b, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79,
	0x12, 0x3d, 0x0a, 0x1b, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x72,
	0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18,
	0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4c, 0x6f, 0x77,
	0x52, 0x65, 0x6c, 0x65, 0x76, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12,
	0x40, 0x0a, 0x1a, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x6a, 0x61, 0x69, 0x6c, 0x5f, 0x62,
	0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x0a, 0x20,
	0x01, 0x28, 0x08, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x17, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65,
	0x4a, 0x61, 0x69, 0x6c, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72,
	0x79, 0x12, 0x8c, 0x01, 0x0a, 0x11, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x70, 0x72, 0x6f, 0x6d,
	0x70, 0x74, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x60, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73,
	0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62,
	0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
	0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53,
	0x70, 0x65, 0x63, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e,
	0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x53, 0x70, 0x65, 0x63, 0x52,
	0x0f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x53, 0x70, 0x65, 0x63,
	0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x64,
	0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
	0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x79, 0x0a, 0x0a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73,
	0x70, 0x65, 0x63, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f,
	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x70, 0x65, 0x63, 0x2e,
	0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x4d, 0x6f, 0x64, 0x65,
	0x6c, 0x53, 0x70, 0x65, 0x63, 0x52, 0x09, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x70, 0x65, 0x63,
	0x12, 0x2e, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63,
	0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x75,
	0x73, 0x65, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73,
	0x1a, 0x2d, 0x0a, 0x0f, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x53,
	0x70, 0x65, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x65, 0x61, 0x6d, 0x62, 0x6c, 0x65, 0x1a,
	0x25, 0x0a, 0x09, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07,
	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76,
	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xbe, 0x02, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x72, 0x61,
	0x63, 0x74, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x63,
	0x12, 0x3d, 0x0a, 0x1b, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69,
	0x76, 0x65, 0x5f, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63,
	0x74, 0x69, 0x76, 0x65, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12,
	0x3f, 0x0a, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76,
	0x65, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x6d, 0x61, 0x78, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63,
	0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74,
	0x12, 0x45, 0x0a, 0x1f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61,
	0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63,
	0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1c, 0x72, 0x65, 0x74, 0x75, 0x72,
	0x6e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x65, 0x67, 0x6d, 0x65,
	0x6e, 0x74, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x6e, 0x75, 0x6d, 0x5f, 0x70,
	0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6e, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x76, 0x69,
	0x6f, 0x75, 0x73, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e,
	0x75, 0x6d, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73,
	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x4e, 0x65, 0x78, 0x74, 0x53,
	0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x63, 0x0a, 0x09, 0x43, 0x68, 0x75, 0x6e, 0x6b,
	0x53, 0x70, 0x65, 0x63, 0x12, 0x2e, 0x0a, 0x13, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x65, 0x76,
	0x69, 0x6f, 0x75, 0x73, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x05, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x43, 0x68,
	0x75, 0x6e, 0x6b, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x6e, 0x65, 0x78, 0x74,
	0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e,
	0x75, 0x6d, 0x4e, 0x65, 0x78, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x22, 0x51, 0x0a, 0x10,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x4d, 0x6f, 0x64, 0x65,
	0x12, 0x22, 0x0a, 0x1e, 0x53, 0x45, 0x41, 0x52, 0x43, 0x48, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c,
	0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54,
	0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x48, 0x55, 0x4e, 0x4b, 0x53, 0x10, 0x02, 0x1a,
	0xd8, 0x01, 0x0a, 0x0d, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65,
	0x63, 0x12, 0x7d, 0x0a, 0x11, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x76,
	0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x50, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63,
	0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
	0x2e, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x53, 0x70, 0x65, 0x63, 0x2e, 0x45,
	0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x10,
	0x65, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73,
	0x1a, 0x48, 0x0a, 0x0f, 0x45, 0x6d, 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x56, 0x65, 0x63,
	0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x74,
	0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x50, 0x61,
	0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x02, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x1a, 0x82, 0x03, 0x0a, 0x25, 0x4e,
	0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75,
	0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67,
	0x53, 0x70, 0x65, 0x63, 0x12, 0xb2, 0x01, 0x0a, 0x1b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f,
	0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x72, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76,
	0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4e,
	0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75,
	0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67,
	0x53, 0x70, 0x65, 0x63, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x72, 0x61,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x19,
	0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x51, 0x0a, 0x26, 0x67, 0x65, 0x6f,
	0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x64, 0x65,
	0x74, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61,
	0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x21, 0x67, 0x65, 0x6f, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x65, 0x74, 0x65, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0x51, 0x0a, 0x19,
	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e,
	0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44,
	0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x1a,
	0xc8, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x73, 0x59, 0x6f, 0x75, 0x54,
	0x79, 0x70, 0x65, 0x53, 0x70, 0x65, 0x63, 0x12, 0x6e, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x50, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76,
	0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x41, 0x73, 0x59, 0x6f, 0x75, 0x54, 0x79, 0x70, 0x65, 0x53, 0x70,
	0x65, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f,
	0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x41, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f,
	0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
	0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a,
	0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x1a, 0x98, 0x01, 0x0a, 0x0b, 0x53,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x19, 0x0a, 0x08, 0x71, 0x75,
	0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x71, 0x75,
	0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x4a, 0x0a, 0x1f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f,
	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e,
	0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00,
	0x52, 0x1c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x65,
	0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01,
	0x01, 0x42, 0x22, 0x0a, 0x20, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x5f,
	0x63, 0x6f, 0x75, 0x6e, 0x74, 0x1a, 0xac, 0x01, 0x0a, 0x13, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e,
	0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x5f, 0x0a,
	0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x4b, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f,
	0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e,
	0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
	0x70, 0x65, 0x63, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x34,
	0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55,
	0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04,
	0x41, 0x55, 0x54, 0x4f, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c,
	0x45, 0x44, 0x10, 0x02, 0x1a, 0x51, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e,
	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x4c,
	0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x64, 0x0a, 0x12, 0x52, 0x65, 0x6c, 0x65, 0x76, 0x61,
	0x6e, 0x63, 0x65, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x23, 0x0a, 0x1f,
	0x52, 0x45, 0x4c, 0x45, 0x56, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x53, 0x48,
	0x4f, 0x4c, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
	0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x57, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x07, 0x0a,
	0x03, 0x4c, 0x4f, 0x57, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d,
	0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x49, 0x47, 0x48, 0x10, 0x04, 0x22, 0xde, 0x38, 0x0a,
	0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x5a, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73,
	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x06, 0x66,
	0x61, 0x63, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f,
	0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x52, 0x06, 0x66, 0x61, 0x63, 0x65, 0x74, 0x73, 0x12, 0x78,
	0x0a, 0x14, 0x67, 0x75, 0x69, 0x64, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f,
	0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63,
	0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x2e, 0x47, 0x75, 0x69, 0x64, 0x65, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x52, 0x12, 0x67, 0x75, 0x69, 0x64, 0x65, 0x64, 0x53, 0x65, 0x61, 0x72,
	0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61,
	0x6c, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x6f,
	0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x74, 0x74, 0x72, 0x69,
	0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x10, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54,
	0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74,
	0x5f, 0x75, 0x72, 0x69, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69,
	0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x69, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f,
	0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12,
	0x27, 0x0a, 0x0f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65,
	0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63,
	0x74, 0x65, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x55, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d,
	0x61, 0x72, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53,
	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12,
	0x29, 0x0a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x72,
	0x6f, 0x6c, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x70, 0x70, 0x6c, 0x69,
	0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x73, 0x12, 0x79, 0x0a, 0x15, 0x67, 0x65,
	0x6f, 0x5f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5f, 0x69,
	0x6e, 0x66, 0x6f, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47,
	0x65, 0x6f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66,
	0x6f, 0x52, 0x12, 0x67, 0x65, 0x6f, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x65, 0x62, 0x75,
	0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x78, 0x0a, 0x14, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x65,
	0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0e, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78,
	0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x12, 0x71, 0x75, 0x65,
	0x72, 0x79, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12,
	0xb3, 0x01, 0x0a, 0x29, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x6e, 0x67,
	0x75, 0x61, 0x67, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x75, 0x6e, 0x64, 0x65, 0x72,
	0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0f, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x59, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c,
	0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64,
	0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x25,
	0x6e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51,
	0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e,
	0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x62, 0x0a, 0x0c, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f,
	0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0b, 0x73, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x68, 0x0a, 0x0f, 0x6f, 0x6e, 0x65,
	0x5f, 0x62, 0x6f, 0x78, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x14, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e,
	0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x6e, 0x65, 0x42, 0x6f, 0x78, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x6f, 0x6e, 0x65, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x73, 0x1a, 0x92, 0x03, 0x0a, 0x0c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x02, 0x69, 0x64, 0x12, 0x49, 0x0a, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65,
	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x44, 0x6f, 0x63,
	0x75, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12,
	0x40, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69,
	0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e,
	0x6b, 0x12, 0x74, 0x0a, 0x0c, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65,
	0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x51, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x53,
	0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x6f, 0x64, 0x65,
	0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x1a, 0x6f, 0x0a, 0x10, 0x4d, 0x6f, 0x64, 0x65, 0x6c,
	0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63,
	0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0xb5, 0x02, 0x0a, 0x05, 0x46, 0x61, 0x63,
	0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x03, 0x6b, 0x65, 0x79, 0x12, 0x5c, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67,
	0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x61, 0x63, 0x65, 0x74, 0x2e,
	0x46, 0x61, 0x63, 0x65, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x79, 0x6e, 0x61, 0x6d, 0x69, 0x63, 0x5f, 0x66, 0x61,
	0x63, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x79, 0x6e, 0x61, 0x6d,
	0x69, 0x63, 0x46, 0x61, 0x63, 0x65, 0x74, 0x1a, 0x96, 0x01, 0x0a, 0x0a, 0x46, 0x61, 0x63, 0x65,
	0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4b,
	0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e,
	0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
	0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x48,
	0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x63,
	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e,
	0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x66, 0x61, 0x63, 0x65, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x1a, 0xbb, 0x02, 0x0a, 0x12, 0x47, 0x75, 0x69, 0x64, 0x65, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x8f, 0x01, 0x0a, 0x15, 0x72, 0x65, 0x66, 0x69,
	0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x5a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x75, 0x69,
	0x64, 0x65, 0x64, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e,
	0x52, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62,
	0x75, 0x74, 0x65, 0x52, 0x14, 0x72, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41,
	0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x66, 0x6f, 0x6c,
	0x6c, 0x6f, 0x77, 0x5f, 0x75, 0x70, 0x5f, 0x71, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x55, 0x70,
	0x51, 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x63, 0x0a, 0x13, 0x52, 0x65, 0x66,
	0x69, 0x6e, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
	0x12, 0x23, 0x0a, 0x0d, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6b, 0x65,
	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
	0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
	0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
	0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0xb3,
	0x0e, 0x0a, 0x07, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x75,
	0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x0b, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x54, 0x65, 0x78, 0x74, 0x12, 0x88, 0x01,
	0x0a, 0x17, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65,
	0x64, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32,
	0x50, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64,
	0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x53, 0x75, 0x6d,
	0x6d, 0x61, 0x72, 0x79, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f,
	0x6e, 0x52, 0x15, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65,
	0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x79, 0x0a, 0x11, 0x73, 0x61, 0x66, 0x65,
	0x74, 0x79, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
	0x2e, 0x53, 0x61, 0x66, 0x65, 0x74, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
	0x73, 0x52, 0x10, 0x73, 0x61, 0x66, 0x65, 0x74, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
	0x74, 0x65, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x15, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f,
	0x77, 0x69, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x4f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
	0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x61,
	0x64, 0x61, 0x74, 0x61, 0x52, 0x13, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x57, 0x69, 0x74,
	0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x4a, 0x0a, 0x10, 0x53, 0x61, 0x66,
	0x65, 0x74, 0x79, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a,
	0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
	0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x12, 0x16, 0x0a,
	0x06, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x02, 0x52, 0x06, 0x73,
	0x63, 0x6f, 0x72, 0x65, 0x73, 0x1a, 0x76, 0x0a, 0x10, 0x43, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x62, 0x0a, 0x09, 0x63, 0x69, 0x74,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63,
	0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x43, 0x69, 0x74, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x09, 0x63, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xae, 0x01,
	0x0a, 0x08, 0x43, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74,
	0x61, 0x72, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x65,
	0x6e, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
	0x65, 0x6e, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x64, 0x0a, 0x07, 0x73, 0x6f, 0x75, 0x72,
	0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
	0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e,
	0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53,
	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x43, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
	0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x07, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x39,
	0x0a, 0x0e, 0x43, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
	0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x6e,
	0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x72, 0x65, 0x66, 0x65, 0x72,
	0x65, 0x6e, 0x63, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x1a, 0xce, 0x02, 0x0a, 0x09, 0x52, 0x65,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x4b, 0x0a,
	0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
	0x2f, 0xe0, 0x41, 0x02, 0xfa, 0x41, 0x29, 0x0a, 0x27, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65,
	0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61,
	0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74,
	0x52, 0x08, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72,
	0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x79, 0x0a, 0x0e,
	0x63, 0x68, 0x75, 0x6e, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67,
	0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
	0x79, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e,
	0x6b, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x0d, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x43,
	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x51, 0x0a, 0x0c, 0x43, 0x68, 0x75, 0x6e, 0x6b,
	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
	0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e,
	0x74, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69,
	0x66, 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x67, 0x65,
	0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x1a, 0x91, 0x02, 0x0a, 0x13, 0x53,
	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x57, 0x69, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
	0x74, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x79, 0x0a, 0x11,
	0x63, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
	0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x6d,
	0x6d, 0x61, 0x72, 0x79, 0x2e, 0x43, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74,
	0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x10, 0x63, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x65, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72,
	0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f,
	0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x2e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e,
	0x63, 0x65, 0x52, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0xe3,
	0x02, 0x0a, 0x14, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65,
	0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x22, 0x53, 0x55, 0x4d, 0x4d, 0x41,
	0x52, 0x59, 0x5f, 0x53, 0x4b, 0x49, 0x50, 0x50, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f,
	0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
	0x1d, 0x0a, 0x19, 0x41, 0x44, 0x56, 0x45, 0x52, 0x53, 0x41, 0x52, 0x49, 0x41, 0x4c, 0x5f, 0x51,
	0x55, 0x45, 0x52, 0x59, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x01, 0x12, 0x25,
	0x0a, 0x21, 0x4e, 0x4f, 0x4e, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x5f, 0x53, 0x45,
	0x45, 0x4b, 0x49, 0x4e, 0x47, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x49, 0x47, 0x4e, 0x4f,
	0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f,
	0x44, 0x4f, 0x4d, 0x41, 0x49, 0x4e, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x49, 0x47, 0x4e,
	0x4f, 0x52, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1e, 0x0a, 0x1a, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54,
	0x49, 0x41, 0x4c, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x56, 0x49, 0x4f, 0x4c, 0x41,
	0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x4c, 0x4d, 0x5f, 0x41, 0x44,
	0x44, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10,
	0x05, 0x12, 0x17, 0x0a, 0x13, 0x4e, 0x4f, 0x5f, 0x52, 0x45, 0x4c, 0x45, 0x56, 0x41, 0x4e, 0x54,
	0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x1f, 0x0a, 0x1b, 0x4a, 0x41,
	0x49, 0x4c, 0x5f, 0x42, 0x52, 0x45, 0x41, 0x4b, 0x49, 0x4e, 0x47, 0x5f, 0x51, 0x55, 0x45, 0x52,
	0x59, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x43,
	0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x5f, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x56,
	0x49, 0x4f, 0x4c, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x08, 0x12, 0x28, 0x0a, 0x24, 0x4e, 0x4f,
	0x4e, 0x5f, 0x53, 0x55, 0x4d, 0x4d, 0x41, 0x52, 0x59, 0x5f, 0x53, 0x45, 0x45, 0x4b, 0x49, 0x4e,
	0x47, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x44, 0x5f,
	0x56, 0x32, 0x10, 0x09, 0x1a, 0x6f, 0x0a, 0x12, 0x47, 0x65, 0x6f, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x34, 0x0a, 0x16, 0x6f, 0x72,
	0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x71,
	0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x6f, 0x72, 0x69, 0x67,
	0x69, 0x6e, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79,
	0x12, 0x23, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x65,
	0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x6b, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x45, 0x78,
	0x70, 0x61, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x25, 0x0a, 0x0e, 0x65,
	0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
	0x11, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x75,
	0x6e, 0x74, 0x1a, 0xb7, 0x13, 0x0a, 0x25, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61,
	0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72,
	0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2b, 0x0a, 0x11,
	0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74,
	0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x77,
	0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x12, 0xb3, 0x01, 0x0a, 0x1b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65,
	0x64, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x74,
	0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
	0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61,
	0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49,
	0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78,
	0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x19, 0x73,
	0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74,
	0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x81, 0x11, 0x0a, 0x19, 0x53, 0x74, 0x72,
	0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64,
	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x9e, 0x01, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x7e, 0x2e, 0x67, 0x6f,
	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f,
	0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74,
	0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
	0x2e, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65,
	0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69,
	0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65,
	0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72,
	0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70,
	0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x6e, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66,
	0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x67, 0x6d,
	0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79,
	0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0xa6, 0x03, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x62,
	0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0xb0, 0x01, 0x0a, 0x0a,
	0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
	0x32, 0x8f, 0x01, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
	0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61,
	0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72,
	0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72,
	0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64,
	0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43, 0x6f, 0x6e,
	0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73,
	0x6f, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x14,
	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65,
	0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x71, 0x75, 0x65,
	0x72, 0x79, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x43, 0x6f,
	0x6d, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4f, 0x4d, 0x50,
	0x41, 0x52, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x01,
	0x12, 0x14, 0x0a, 0x10, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x45, 0x51,
	0x55, 0x41, 0x4c, 0x53, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54,
	0x48, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52,
	0x5f, 0x54, 0x48, 0x41, 0x4e, 0x5f, 0x45, 0x51, 0x55, 0x41, 0x4c, 0x53, 0x10, 0x04, 0x12, 0x10,
	0x0a, 0x0c, 0x47, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x48, 0x41, 0x4e, 0x10, 0x05,
	0x1a, 0xb4, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69,
	0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
	0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64,
	0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72,
	0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18,
	0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12,
	0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01,
	0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x28, 0x0a,
	0x10, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x65, 0x72,
	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x49,
	0x6e, 0x4d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x1a, 0xb2, 0x01, 0x0a, 0x0d, 0x41, 0x6e, 0x64, 0x45,
	0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xa0, 0x01, 0x0a, 0x0b, 0x65, 0x78,
	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x7e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64,
	0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67,
	0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74,
	0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63,
	0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52,
	0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xb1, 0x01, 0x0a,
	0x0c, 0x4f, 0x72, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0xa0, 0x01,
	0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x7e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c,
	0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64,
	0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53,
	0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74,
	0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73,
	0x1a, 0x89, 0x07, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12,
	0xb4, 0x01, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74,
	0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x84, 0x01, 0x2e, 0x67,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63,
	0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65,
	0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
	0x65, 0x2e, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67,
	0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64,
	0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72,
	0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69,
	0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x73,
	0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0xb4, 0x01, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x62, 0x65,
	0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x84, 0x01, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f,
	0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c,
	0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64,
	0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53,
	0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74,
	0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x43,
	0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x10, 0x6e, 0x75, 0x6d,
	0x62, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0xc3, 0x01,
	0x0a, 0x16, 0x67, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f,
	0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x89,
	0x01, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64,
	0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70,
	0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67,
	0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74,
	0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63,
	0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x15, 0x67, 0x65,
	0x6f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61,
	0x69, 0x6e, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x08, 0x61, 0x6e, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x72,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x81, 0x01, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61, 0x74,
	0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72,
	0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x6e,
	0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74,
	0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x41, 0x6e, 0x64,
	0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x61, 0x6e,
	0x64, 0x45, 0x78, 0x70, 0x72, 0x12, 0x9c, 0x01, 0x0a, 0x07, 0x6f, 0x72, 0x5f, 0x65, 0x78, 0x70,
	0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x80, 0x01, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
	0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4e, 0x61,
	0x74, 0x75, 0x72, 0x61, 0x6c, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x51, 0x75, 0x65,
	0x72, 0x79, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x49,
	0x6e, 0x66, 0x6f, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x45, 0x78,
	0x74, 0x72, 0x61, 0x63, 0x74, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x4f, 0x72,
	0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x72,
	0x45, 0x78, 0x70, 0x72, 0x42, 0x06, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x1a, 0x3c, 0x0a, 0x0b,
	0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12,
	0x19, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x1a, 0xd0, 0x02, 0x0a, 0x0c, 0x4f,
	0x6e, 0x65, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6d, 0x0a, 0x0c, 0x6f,
	0x6e, 0x65, 0x5f, 0x62, 0x6f, 0x78, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0e, 0x32, 0x4b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
	0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
	0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x6e, 0x65, 0x42, 0x6f, 0x78, 0x52, 0x65, 0x73,
	0x75, 0x6c, 0x74, 0x2e, 0x4f, 0x6e, 0x65, 0x42, 0x6f, 0x78, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a,
	0x6f, 0x6e, 0x65, 0x42, 0x6f, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x67, 0x0a, 0x0e, 0x73, 0x65,
	0x61, 0x72, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75,
	0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e,
	0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52,
	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65,
	0x73, 0x75, 0x6c, 0x74, 0x52, 0x0d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x75,
	0x6c, 0x74, 0x73, 0x22, 0x68, 0x0a, 0x0a, 0x4f, 0x6e, 0x65, 0x42, 0x6f, 0x78, 0x54, 0x79, 0x70,
	0x65, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x4e, 0x45, 0x5f, 0x42, 0x4f, 0x58, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12,
	0x0a, 0x0a, 0x06, 0x50, 0x45, 0x4f, 0x50, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f,
	0x52, 0x47, 0x41, 0x4e, 0x49, 0x5a, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x09, 0x0a,
	0x05, 0x53, 0x4c, 0x41, 0x43, 0x4b, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4b, 0x4e, 0x4f, 0x57,
	0x4c, 0x45, 0x44, 0x47, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x50, 0x48, 0x10, 0x04, 0x32, 0xbf, 0x07,
	0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
	0xa3, 0x03, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76,
	0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33,
	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69,
	0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31,
	0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f,
	0x6e, 0x73, 0x65, 0x22, 0xaf, 0x02, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0xa8, 0x02, 0x3a, 0x01, 0x2a,
	0x5a, 0x67, 0x3a, 0x01, 0x2a, 0x22, 0x62, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b,
	0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70,
	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a,
	0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f,
	0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5a, 0x64, 0x3a, 0x01, 0x2a, 0x22, 0x5f,
	0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67,
	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73,
	0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63,
	0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x67,
	0x69, 0x6e, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f,
	0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x22,
	0x54, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e,
	0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
	0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x72,
	0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0xb3, 0x03, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
	0x4c, 0x69, 0x74, 0x65, 0x12, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63, 0x6c,
	0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67,
	0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63,
	0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72,
	0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2e, 0x53,
	0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbb, 0x02,
	0x82, 0xd3, 0xe4, 0x93, 0x02, 0xb4, 0x02, 0x3a, 0x01, 0x2a, 0x5a, 0x6b, 0x3a, 0x01, 0x2a, 0x22,
	0x66, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e,
	0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f,
	0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x64, 0x61,
	0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69,
	0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x4c, 0x69, 0x74, 0x65, 0x5a, 0x68, 0x3a, 0x01, 0x2a, 0x22, 0x63, 0x2f, 0x76,
	0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x5f, 0x63,
	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x2a,
	0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x63, 0x6f, 0x6c,
	0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x2a, 0x2f, 0x65, 0x6e, 0x67, 0x69, 0x6e,
	0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66,
	0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d, 0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x74,
	0x65, 0x22, 0x58, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x2f, 0x7b, 0x73, 0x65, 0x72, 0x76,
	0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3d, 0x70, 0x72, 0x6f, 0x6a, 0x65,
	0x63, 0x74, 0x73, 0x2f, 0x2a, 0x2f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f,
	0x2a, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x73,
	0x65, 0x72, 0x76, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x2f, 0x2a, 0x7d,
	0x3a, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4c, 0x69, 0x74, 0x65, 0x1a, 0x52, 0xca, 0x41, 0x1e,
	0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0xd2, 0x41,
	0x2e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f, 0x6f,
	0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74, 0x68,
	0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x42,
	0x99, 0x02, 0x0a, 0x27, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x63,
	0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e,
	0x67, 0x69, 0x6e, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x42, 0x12, 0x53, 0x65, 0x61,
	0x72, 0x63, 0x68, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
	0x01, 0x5a, 0x51, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x6f, 0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79,
	0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
	0x2f, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65,
	0x70, 0x62, 0x3b, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x65, 0x6e, 0x67, 0x69,
	0x6e, 0x65, 0x70, 0x62, 0xa2, 0x02, 0x0f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x56, 0x45, 0x52, 0x59,
	0x45, 0x4e, 0x47, 0x49, 0x4e, 0x45, 0xaa, 0x02, 0x23, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
	0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45,
	0x6e, 0x67, 0x69, 0x6e, 0x65, 0x2e, 0x56, 0x31, 0x42, 0x65, 0x74, 0x61, 0xca, 0x02, 0x23, 0x47,
	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x44, 0x69, 0x73, 0x63,
	0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5c, 0x56, 0x31, 0x62, 0x65,
	0x74, 0x61, 0xea, 0x02, 0x26, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x3a, 0x3a, 0x43, 0x6c, 0x6f,
	0x75, 0x64, 0x3a, 0x3a, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x45, 0x6e, 0x67,
	0x69, 0x6e, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x33,
}

var (
	file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescOnce sync.Once
	file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescData = file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDesc
)

func file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescGZIP() []byte {
	file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescOnce.Do(func() {
		file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescData)
	})
	return file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDescData
}

var file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes = make([]protoimpl.EnumInfo, 12)
var file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes = make([]protoimpl.MessageInfo, 53)
var file_google_cloud_discoveryengine_v1beta_search_service_proto_goTypes = []any{
	(SearchRequest_RelevanceThreshold)(0),                                                                           // 0: google.cloud.discoveryengine.v1beta.SearchRequest.RelevanceThreshold
	(SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_AttributeType)(0),                                  // 1: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec.AttributeType
	(SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_InterpolationType)(0),                              // 2: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec.InterpolationType
	(SearchRequest_QueryExpansionSpec_Condition)(0),                                                                 // 3: google.cloud.discoveryengine.v1beta.SearchRequest.QueryExpansionSpec.Condition
	(SearchRequest_SpellCorrectionSpec_Mode)(0),                                                                     // 4: google.cloud.discoveryengine.v1beta.SearchRequest.SpellCorrectionSpec.Mode
	(SearchRequest_ContentSearchSpec_SearchResultMode)(0),                                                           // 5: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SearchResultMode
	(SearchRequest_NaturalLanguageQueryUnderstandingSpec_FilterExtractionCondition)(0),                              // 6: google.cloud.discoveryengine.v1beta.SearchRequest.NaturalLanguageQueryUnderstandingSpec.FilterExtractionCondition
	(SearchRequest_SearchAsYouTypeSpec_Condition)(0),                                                                // 7: google.cloud.discoveryengine.v1beta.SearchRequest.SearchAsYouTypeSpec.Condition
	(SearchRequest_PersonalizationSpec_Mode)(0),                                                                     // 8: google.cloud.discoveryengine.v1beta.SearchRequest.PersonalizationSpec.Mode
	(SearchResponse_Summary_SummarySkippedReason)(0),                                                                // 9: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.SummarySkippedReason
	(SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint_Comparison)(0), // 10: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.NumberConstraint.Comparison
	(SearchResponse_OneBoxResult_OneBoxType)(0),                                                                     // 11: google.cloud.discoveryengine.v1beta.SearchResponse.OneBoxResult.OneBoxType
	(*SearchRequest)(nil),                                       // 12: google.cloud.discoveryengine.v1beta.SearchRequest
	(*SearchResponse)(nil),                                      // 13: google.cloud.discoveryengine.v1beta.SearchResponse
	(*SearchRequest_ImageQuery)(nil),                            // 14: google.cloud.discoveryengine.v1beta.SearchRequest.ImageQuery
	(*SearchRequest_DataStoreSpec)(nil),                         // 15: google.cloud.discoveryengine.v1beta.SearchRequest.DataStoreSpec
	(*SearchRequest_FacetSpec)(nil),                             // 16: google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec
	(*SearchRequest_BoostSpec)(nil),                             // 17: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec
	(*SearchRequest_QueryExpansionSpec)(nil),                    // 18: google.cloud.discoveryengine.v1beta.SearchRequest.QueryExpansionSpec
	(*SearchRequest_SpellCorrectionSpec)(nil),                   // 19: google.cloud.discoveryengine.v1beta.SearchRequest.SpellCorrectionSpec
	(*SearchRequest_ContentSearchSpec)(nil),                     // 20: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec
	(*SearchRequest_EmbeddingSpec)(nil),                         // 21: google.cloud.discoveryengine.v1beta.SearchRequest.EmbeddingSpec
	(*SearchRequest_NaturalLanguageQueryUnderstandingSpec)(nil), // 22: google.cloud.discoveryengine.v1beta.SearchRequest.NaturalLanguageQueryUnderstandingSpec
	(*SearchRequest_SearchAsYouTypeSpec)(nil),                   // 23: google.cloud.discoveryengine.v1beta.SearchRequest.SearchAsYouTypeSpec
	(*SearchRequest_SessionSpec)(nil),                           // 24: google.cloud.discoveryengine.v1beta.SearchRequest.SessionSpec
	(*SearchRequest_PersonalizationSpec)(nil),                   // 25: google.cloud.discoveryengine.v1beta.SearchRequest.PersonalizationSpec
	nil,                                      // 26: google.cloud.discoveryengine.v1beta.SearchRequest.ParamsEntry
	nil,                                      // 27: google.cloud.discoveryengine.v1beta.SearchRequest.UserLabelsEntry
	(*SearchRequest_FacetSpec_FacetKey)(nil), // 28: google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec.FacetKey
	(*SearchRequest_BoostSpec_ConditionBoostSpec)(nil),                                                           // 29: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec
	(*SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec)(nil),                                          // 30: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec
	(*SearchRequest_BoostSpec_ConditionBoostSpec_BoostControlSpec_ControlPoint)(nil),                             // 31: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec.ControlPoint
	(*SearchRequest_ContentSearchSpec_SnippetSpec)(nil),                                                          // 32: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SnippetSpec
	(*SearchRequest_ContentSearchSpec_SummarySpec)(nil),                                                          // 33: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec
	(*SearchRequest_ContentSearchSpec_ExtractiveContentSpec)(nil),                                                // 34: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.ExtractiveContentSpec
	(*SearchRequest_ContentSearchSpec_ChunkSpec)(nil),                                                            // 35: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.ChunkSpec
	(*SearchRequest_ContentSearchSpec_SummarySpec_ModelPromptSpec)(nil),                                          // 36: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.ModelPromptSpec
	(*SearchRequest_ContentSearchSpec_SummarySpec_ModelSpec)(nil),                                                // 37: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.ModelSpec
	(*SearchRequest_EmbeddingSpec_EmbeddingVector)(nil),                                                          // 38: google.cloud.discoveryengine.v1beta.SearchRequest.EmbeddingSpec.EmbeddingVector
	(*SearchResponse_SearchResult)(nil),                                                                          // 39: google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult
	(*SearchResponse_Facet)(nil),                                                                                 // 40: google.cloud.discoveryengine.v1beta.SearchResponse.Facet
	(*SearchResponse_GuidedSearchResult)(nil),                                                                    // 41: google.cloud.discoveryengine.v1beta.SearchResponse.GuidedSearchResult
	(*SearchResponse_Summary)(nil),                                                                               // 42: google.cloud.discoveryengine.v1beta.SearchResponse.Summary
	(*SearchResponse_GeoSearchDebugInfo)(nil),                                                                    // 43: google.cloud.discoveryengine.v1beta.SearchResponse.GeoSearchDebugInfo
	(*SearchResponse_QueryExpansionInfo)(nil),                                                                    // 44: google.cloud.discoveryengine.v1beta.SearchResponse.QueryExpansionInfo
	(*SearchResponse_NaturalLanguageQueryUnderstandingInfo)(nil),                                                 // 45: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo
	(*SearchResponse_SessionInfo)(nil),                                                                           // 46: google.cloud.discoveryengine.v1beta.SearchResponse.SessionInfo
	(*SearchResponse_OneBoxResult)(nil),                                                                          // 47: google.cloud.discoveryengine.v1beta.SearchResponse.OneBoxResult
	nil,                                                                                                          // 48: google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult.ModelScoresEntry
	(*SearchResponse_Facet_FacetValue)(nil),                                                                      // 49: google.cloud.discoveryengine.v1beta.SearchResponse.Facet.FacetValue
	(*SearchResponse_GuidedSearchResult_RefinementAttribute)(nil),                                                // 50: google.cloud.discoveryengine.v1beta.SearchResponse.GuidedSearchResult.RefinementAttribute
	(*SearchResponse_Summary_SafetyAttributes)(nil),                                                              // 51: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.SafetyAttributes
	(*SearchResponse_Summary_CitationMetadata)(nil),                                                              // 52: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.CitationMetadata
	(*SearchResponse_Summary_Citation)(nil),                                                                      // 53: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.Citation
	(*SearchResponse_Summary_CitationSource)(nil),                                                                // 54: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.CitationSource
	(*SearchResponse_Summary_Reference)(nil),                                                                     // 55: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.Reference
	(*SearchResponse_Summary_SummaryWithMetadata)(nil),                                                           // 56: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.SummaryWithMetadata
	(*SearchResponse_Summary_Reference_ChunkContent)(nil),                                                        // 57: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.Reference.ChunkContent
	(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter)(nil),                       // 58: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter
	(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_StringConstraint)(nil),      // 59: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.StringConstraint
	(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_NumberConstraint)(nil),      // 60: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.NumberConstraint
	(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_GeolocationConstraint)(nil), // 61: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.GeolocationConstraint
	(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_AndExpression)(nil),         // 62: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.AndExpression
	(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_OrExpression)(nil),          // 63: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.OrExpression
	(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression)(nil),            // 64: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.Expression
	(*UserInfo)(nil),       // 65: google.cloud.discoveryengine.v1beta.UserInfo
	(*structpb.Value)(nil), // 66: google.protobuf.Value
	(*Interval)(nil),       // 67: google.cloud.discoveryengine.v1beta.Interval
	(*Document)(nil),       // 68: google.cloud.discoveryengine.v1beta.Document
	(*Chunk)(nil),          // 69: google.cloud.discoveryengine.v1beta.Chunk
	(*DoubleList)(nil),     // 70: google.cloud.discoveryengine.v1beta.DoubleList
}
var file_google_cloud_discoveryengine_v1beta_search_service_proto_depIdxs = []int32{
	14, // 0: google.cloud.discoveryengine.v1beta.SearchRequest.image_query:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ImageQuery
	15, // 1: google.cloud.discoveryengine.v1beta.SearchRequest.data_store_specs:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.DataStoreSpec
	65, // 2: google.cloud.discoveryengine.v1beta.SearchRequest.user_info:type_name -> google.cloud.discoveryengine.v1beta.UserInfo
	16, // 3: google.cloud.discoveryengine.v1beta.SearchRequest.facet_specs:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec
	17, // 4: google.cloud.discoveryengine.v1beta.SearchRequest.boost_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec
	26, // 5: google.cloud.discoveryengine.v1beta.SearchRequest.params:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ParamsEntry
	18, // 6: google.cloud.discoveryengine.v1beta.SearchRequest.query_expansion_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.QueryExpansionSpec
	19, // 7: google.cloud.discoveryengine.v1beta.SearchRequest.spell_correction_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.SpellCorrectionSpec
	20, // 8: google.cloud.discoveryengine.v1beta.SearchRequest.content_search_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec
	21, // 9: google.cloud.discoveryengine.v1beta.SearchRequest.embedding_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.EmbeddingSpec
	27, // 10: google.cloud.discoveryengine.v1beta.SearchRequest.user_labels:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.UserLabelsEntry
	22, // 11: google.cloud.discoveryengine.v1beta.SearchRequest.natural_language_query_understanding_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.NaturalLanguageQueryUnderstandingSpec
	23, // 12: google.cloud.discoveryengine.v1beta.SearchRequest.search_as_you_type_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.SearchAsYouTypeSpec
	24, // 13: google.cloud.discoveryengine.v1beta.SearchRequest.session_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.SessionSpec
	0,  // 14: google.cloud.discoveryengine.v1beta.SearchRequest.relevance_threshold:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.RelevanceThreshold
	25, // 15: google.cloud.discoveryengine.v1beta.SearchRequest.personalization_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.PersonalizationSpec
	39, // 16: google.cloud.discoveryengine.v1beta.SearchResponse.results:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult
	40, // 17: google.cloud.discoveryengine.v1beta.SearchResponse.facets:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Facet
	41, // 18: google.cloud.discoveryengine.v1beta.SearchResponse.guided_search_result:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.GuidedSearchResult
	42, // 19: google.cloud.discoveryengine.v1beta.SearchResponse.summary:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Summary
	43, // 20: google.cloud.discoveryengine.v1beta.SearchResponse.geo_search_debug_info:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.GeoSearchDebugInfo
	44, // 21: google.cloud.discoveryengine.v1beta.SearchResponse.query_expansion_info:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.QueryExpansionInfo
	45, // 22: google.cloud.discoveryengine.v1beta.SearchResponse.natural_language_query_understanding_info:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo
	46, // 23: google.cloud.discoveryengine.v1beta.SearchResponse.session_info:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.SessionInfo
	47, // 24: google.cloud.discoveryengine.v1beta.SearchResponse.one_box_results:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.OneBoxResult
	28, // 25: google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec.facet_key:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec.FacetKey
	29, // 26: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.condition_boost_specs:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec
	3,  // 27: google.cloud.discoveryengine.v1beta.SearchRequest.QueryExpansionSpec.condition:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.QueryExpansionSpec.Condition
	4,  // 28: google.cloud.discoveryengine.v1beta.SearchRequest.SpellCorrectionSpec.mode:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.SpellCorrectionSpec.Mode
	32, // 29: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.snippet_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SnippetSpec
	33, // 30: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.summary_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec
	34, // 31: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.extractive_content_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.ExtractiveContentSpec
	5,  // 32: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.search_result_mode:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SearchResultMode
	35, // 33: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.chunk_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.ChunkSpec
	38, // 34: google.cloud.discoveryengine.v1beta.SearchRequest.EmbeddingSpec.embedding_vectors:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.EmbeddingSpec.EmbeddingVector
	6,  // 35: google.cloud.discoveryengine.v1beta.SearchRequest.NaturalLanguageQueryUnderstandingSpec.filter_extraction_condition:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.NaturalLanguageQueryUnderstandingSpec.FilterExtractionCondition
	7,  // 36: google.cloud.discoveryengine.v1beta.SearchRequest.SearchAsYouTypeSpec.condition:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.SearchAsYouTypeSpec.Condition
	8,  // 37: google.cloud.discoveryengine.v1beta.SearchRequest.PersonalizationSpec.mode:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.PersonalizationSpec.Mode
	66, // 38: google.cloud.discoveryengine.v1beta.SearchRequest.ParamsEntry.value:type_name -> google.protobuf.Value
	67, // 39: google.cloud.discoveryengine.v1beta.SearchRequest.FacetSpec.FacetKey.intervals:type_name -> google.cloud.discoveryengine.v1beta.Interval
	30, // 40: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.boost_control_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec
	1,  // 41: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec.attribute_type:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec.AttributeType
	2,  // 42: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec.interpolation_type:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec.InterpolationType
	31, // 43: google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec.control_points:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.BoostSpec.ConditionBoostSpec.BoostControlSpec.ControlPoint
	36, // 44: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.model_prompt_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.ModelPromptSpec
	37, // 45: google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.model_spec:type_name -> google.cloud.discoveryengine.v1beta.SearchRequest.ContentSearchSpec.SummarySpec.ModelSpec
	68, // 46: google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult.document:type_name -> google.cloud.discoveryengine.v1beta.Document
	69, // 47: google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult.chunk:type_name -> google.cloud.discoveryengine.v1beta.Chunk
	48, // 48: google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult.model_scores:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult.ModelScoresEntry
	49, // 49: google.cloud.discoveryengine.v1beta.SearchResponse.Facet.values:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Facet.FacetValue
	50, // 50: google.cloud.discoveryengine.v1beta.SearchResponse.GuidedSearchResult.refinement_attributes:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.GuidedSearchResult.RefinementAttribute
	9,  // 51: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.summary_skipped_reasons:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Summary.SummarySkippedReason
	51, // 52: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.safety_attributes:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Summary.SafetyAttributes
	56, // 53: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.summary_with_metadata:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Summary.SummaryWithMetadata
	58, // 54: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.structured_extracted_filter:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter
	11, // 55: google.cloud.discoveryengine.v1beta.SearchResponse.OneBoxResult.one_box_type:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.OneBoxResult.OneBoxType
	39, // 56: google.cloud.discoveryengine.v1beta.SearchResponse.OneBoxResult.search_results:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult
	70, // 57: google.cloud.discoveryengine.v1beta.SearchResponse.SearchResult.ModelScoresEntry.value:type_name -> google.cloud.discoveryengine.v1beta.DoubleList
	67, // 58: google.cloud.discoveryengine.v1beta.SearchResponse.Facet.FacetValue.interval:type_name -> google.cloud.discoveryengine.v1beta.Interval
	53, // 59: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.CitationMetadata.citations:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Summary.Citation
	54, // 60: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.Citation.sources:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Summary.CitationSource
	57, // 61: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.Reference.chunk_contents:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Summary.Reference.ChunkContent
	52, // 62: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.SummaryWithMetadata.citation_metadata:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Summary.CitationMetadata
	55, // 63: google.cloud.discoveryengine.v1beta.SearchResponse.Summary.SummaryWithMetadata.references:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.Summary.Reference
	64, // 64: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.expression:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.Expression
	10, // 65: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.NumberConstraint.comparison:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.NumberConstraint.Comparison
	64, // 66: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.AndExpression.expressions:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.Expression
	64, // 67: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.OrExpression.expressions:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.Expression
	59, // 68: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.Expression.string_constraint:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.StringConstraint
	60, // 69: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.Expression.number_constraint:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.NumberConstraint
	61, // 70: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.Expression.geolocation_constraint:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.GeolocationConstraint
	62, // 71: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.Expression.and_expr:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.AndExpression
	63, // 72: google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.Expression.or_expr:type_name -> google.cloud.discoveryengine.v1beta.SearchResponse.NaturalLanguageQueryUnderstandingInfo.StructuredExtractedFilter.OrExpression
	12, // 73: google.cloud.discoveryengine.v1beta.SearchService.Search:input_type -> google.cloud.discoveryengine.v1beta.SearchRequest
	12, // 74: google.cloud.discoveryengine.v1beta.SearchService.SearchLite:input_type -> google.cloud.discoveryengine.v1beta.SearchRequest
	13, // 75: google.cloud.discoveryengine.v1beta.SearchService.Search:output_type -> google.cloud.discoveryengine.v1beta.SearchResponse
	13, // 76: google.cloud.discoveryengine.v1beta.SearchService.SearchLite:output_type -> google.cloud.discoveryengine.v1beta.SearchResponse
	75, // [75:77] is the sub-list for method output_type
	73, // [73:75] is the sub-list for method input_type
	73, // [73:73] is the sub-list for extension type_name
	73, // [73:73] is the sub-list for extension extendee
	0,  // [0:73] is the sub-list for field type_name
}

func init() { file_google_cloud_discoveryengine_v1beta_search_service_proto_init() }
func file_google_cloud_discoveryengine_v1beta_search_service_proto_init() {
	if File_google_cloud_discoveryengine_v1beta_search_service_proto != nil {
		return
	}
	file_google_cloud_discoveryengine_v1beta_chunk_proto_init()
	file_google_cloud_discoveryengine_v1beta_common_proto_init()
	file_google_cloud_discoveryengine_v1beta_document_proto_init()
	file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[2].OneofWrappers = []any{
		(*SearchRequest_ImageQuery_ImageBytes)(nil),
	}
	file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[12].OneofWrappers = []any{}
	file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[37].OneofWrappers = []any{
		(*SearchResponse_Facet_FacetValue_Value)(nil),
		(*SearchResponse_Facet_FacetValue_Interval)(nil),
	}
	file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes[52].OneofWrappers = []any{
		(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_StringConstraint)(nil),
		(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_NumberConstraint)(nil),
		(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_GeolocationConstraint)(nil),
		(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_AndExpr)(nil),
		(*SearchResponse_NaturalLanguageQueryUnderstandingInfo_StructuredExtractedFilter_Expression_OrExpr)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDesc,
			NumEnums:      12,
			NumMessages:   53,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_google_cloud_discoveryengine_v1beta_search_service_proto_goTypes,
		DependencyIndexes: file_google_cloud_discoveryengine_v1beta_search_service_proto_depIdxs,
		EnumInfos:         file_google_cloud_discoveryengine_v1beta_search_service_proto_enumTypes,
		MessageInfos:      file_google_cloud_discoveryengine_v1beta_search_service_proto_msgTypes,
	}.Build()
	File_google_cloud_discoveryengine_v1beta_search_service_proto = out.File
	file_google_cloud_discoveryengine_v1beta_search_service_proto_rawDesc = nil
	file_google_cloud_discoveryengine_v1beta_search_service_proto_goTypes = nil
	file_google_cloud_discoveryengine_v1beta_search_service_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// SearchServiceClient is the client API for SearchService service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type SearchServiceClient interface {
	// Performs a search.
	Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error)
	// Performs a search. Similar to the
	// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
	// method, but a lite version that allows API key for authentication, where
	// OAuth and IAM checks are not required.
	//
	// Only public website search is supported by this method. If data stores and
	// engines not associated with public website search are specified, a
	// `FAILED_PRECONDITION` error is returned.
	//
	// This method can be used for easy onboarding without having to implement an
	// authentication backend. However, it is strongly recommended to use
	// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
	// instead with required OAuth and IAM checks to provide better data security.
	SearchLite(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error)
}

type searchServiceClient struct {
	cc grpc.ClientConnInterface
}

func NewSearchServiceClient(cc grpc.ClientConnInterface) SearchServiceClient {
	return &searchServiceClient{cc}
}

func (c *searchServiceClient) Search(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) {
	out := new(SearchResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.discoveryengine.v1beta.SearchService/Search", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *searchServiceClient) SearchLite(ctx context.Context, in *SearchRequest, opts ...grpc.CallOption) (*SearchResponse, error) {
	out := new(SearchResponse)
	err := c.cc.Invoke(ctx, "/google.cloud.discoveryengine.v1beta.SearchService/SearchLite", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// SearchServiceServer is the server API for SearchService service.
type SearchServiceServer interface {
	// Performs a search.
	Search(context.Context, *SearchRequest) (*SearchResponse, error)
	// Performs a search. Similar to the
	// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
	// method, but a lite version that allows API key for authentication, where
	// OAuth and IAM checks are not required.
	//
	// Only public website search is supported by this method. If data stores and
	// engines not associated with public website search are specified, a
	// `FAILED_PRECONDITION` error is returned.
	//
	// This method can be used for easy onboarding without having to implement an
	// authentication backend. However, it is strongly recommended to use
	// [SearchService.Search][google.cloud.discoveryengine.v1beta.SearchService.Search]
	// instead with required OAuth and IAM checks to provide better data security.
	SearchLite(context.Context, *SearchRequest) (*SearchResponse, error)
}

// UnimplementedSearchServiceServer can be embedded to have forward compatible implementations.
type UnimplementedSearchServiceServer struct {
}

func (*UnimplementedSearchServiceServer) Search(context.Context, *SearchRequest) (*SearchResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method Search not implemented")
}
func (*UnimplementedSearchServiceServer) SearchLite(context.Context, *SearchRequest) (*SearchResponse, error) {
	return nil, status.Errorf(codes.Unimplemented, "method SearchLite not implemented")
}

func RegisterSearchServiceServer(s *grpc.Server, srv SearchServiceServer) {
	s.RegisterService(&_SearchService_serviceDesc, srv)
}

func _SearchService_Search_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SearchRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SearchServiceServer).Search(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.discoveryengine.v1beta.SearchService/Search",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SearchServiceServer).Search(ctx, req.(*SearchRequest))
	}
	return interceptor(ctx, in, info, handler)
}

func _SearchService_SearchLite_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(SearchRequest)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(SearchServiceServer).SearchLite(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/google.cloud.discoveryengine.v1beta.SearchService/SearchLite",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(SearchServiceServer).SearchLite(ctx, req.(*SearchRequest))
	}
	return interceptor(ctx, in, info, handler)
}

var _SearchService_serviceDesc = grpc.ServiceDesc{
	ServiceName: "google.cloud.discoveryengine.v1beta.SearchService",
	HandlerType: (*SearchServiceServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Search",
			Handler:    _SearchService_Search_Handler,
		},
		{
			MethodName: "SearchLite",
			Handler:    _SearchService_SearchLite_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "google/cloud/discoveryengine/v1beta/search_service.proto",
}
