//
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements.  See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You 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.30.0
// 	protoc        (unknown)
// source: spark/connect/relations.proto

package generated

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	anypb "google.golang.org/protobuf/types/known/anypb"
	reflect "reflect"
	sync "sync"
)

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)
)

type Join_JoinType int32

const (
	Join_JOIN_TYPE_UNSPECIFIED Join_JoinType = 0
	Join_JOIN_TYPE_INNER       Join_JoinType = 1
	Join_JOIN_TYPE_FULL_OUTER  Join_JoinType = 2
	Join_JOIN_TYPE_LEFT_OUTER  Join_JoinType = 3
	Join_JOIN_TYPE_RIGHT_OUTER Join_JoinType = 4
	Join_JOIN_TYPE_LEFT_ANTI   Join_JoinType = 5
	Join_JOIN_TYPE_LEFT_SEMI   Join_JoinType = 6
	Join_JOIN_TYPE_CROSS       Join_JoinType = 7
)

// Enum value maps for Join_JoinType.
var (
	Join_JoinType_name = map[int32]string{
		0: "JOIN_TYPE_UNSPECIFIED",
		1: "JOIN_TYPE_INNER",
		2: "JOIN_TYPE_FULL_OUTER",
		3: "JOIN_TYPE_LEFT_OUTER",
		4: "JOIN_TYPE_RIGHT_OUTER",
		5: "JOIN_TYPE_LEFT_ANTI",
		6: "JOIN_TYPE_LEFT_SEMI",
		7: "JOIN_TYPE_CROSS",
	}
	Join_JoinType_value = map[string]int32{
		"JOIN_TYPE_UNSPECIFIED": 0,
		"JOIN_TYPE_INNER":       1,
		"JOIN_TYPE_FULL_OUTER":  2,
		"JOIN_TYPE_LEFT_OUTER":  3,
		"JOIN_TYPE_RIGHT_OUTER": 4,
		"JOIN_TYPE_LEFT_ANTI":   5,
		"JOIN_TYPE_LEFT_SEMI":   6,
		"JOIN_TYPE_CROSS":       7,
	}
)

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

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

func (Join_JoinType) Descriptor() protoreflect.EnumDescriptor {
	return file_spark_connect_relations_proto_enumTypes[0].Descriptor()
}

func (Join_JoinType) Type() protoreflect.EnumType {
	return &file_spark_connect_relations_proto_enumTypes[0]
}

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

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

type SetOperation_SetOpType int32

const (
	SetOperation_SET_OP_TYPE_UNSPECIFIED SetOperation_SetOpType = 0
	SetOperation_SET_OP_TYPE_INTERSECT   SetOperation_SetOpType = 1
	SetOperation_SET_OP_TYPE_UNION       SetOperation_SetOpType = 2
	SetOperation_SET_OP_TYPE_EXCEPT      SetOperation_SetOpType = 3
)

// Enum value maps for SetOperation_SetOpType.
var (
	SetOperation_SetOpType_name = map[int32]string{
		0: "SET_OP_TYPE_UNSPECIFIED",
		1: "SET_OP_TYPE_INTERSECT",
		2: "SET_OP_TYPE_UNION",
		3: "SET_OP_TYPE_EXCEPT",
	}
	SetOperation_SetOpType_value = map[string]int32{
		"SET_OP_TYPE_UNSPECIFIED": 0,
		"SET_OP_TYPE_INTERSECT":   1,
		"SET_OP_TYPE_UNION":       2,
		"SET_OP_TYPE_EXCEPT":      3,
	}
)

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

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

func (SetOperation_SetOpType) Descriptor() protoreflect.EnumDescriptor {
	return file_spark_connect_relations_proto_enumTypes[1].Descriptor()
}

func (SetOperation_SetOpType) Type() protoreflect.EnumType {
	return &file_spark_connect_relations_proto_enumTypes[1]
}

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

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

type Aggregate_GroupType int32

const (
	Aggregate_GROUP_TYPE_UNSPECIFIED   Aggregate_GroupType = 0
	Aggregate_GROUP_TYPE_GROUPBY       Aggregate_GroupType = 1
	Aggregate_GROUP_TYPE_ROLLUP        Aggregate_GroupType = 2
	Aggregate_GROUP_TYPE_CUBE          Aggregate_GroupType = 3
	Aggregate_GROUP_TYPE_PIVOT         Aggregate_GroupType = 4
	Aggregate_GROUP_TYPE_GROUPING_SETS Aggregate_GroupType = 5
)

// Enum value maps for Aggregate_GroupType.
var (
	Aggregate_GroupType_name = map[int32]string{
		0: "GROUP_TYPE_UNSPECIFIED",
		1: "GROUP_TYPE_GROUPBY",
		2: "GROUP_TYPE_ROLLUP",
		3: "GROUP_TYPE_CUBE",
		4: "GROUP_TYPE_PIVOT",
		5: "GROUP_TYPE_GROUPING_SETS",
	}
	Aggregate_GroupType_value = map[string]int32{
		"GROUP_TYPE_UNSPECIFIED":   0,
		"GROUP_TYPE_GROUPBY":       1,
		"GROUP_TYPE_ROLLUP":        2,
		"GROUP_TYPE_CUBE":          3,
		"GROUP_TYPE_PIVOT":         4,
		"GROUP_TYPE_GROUPING_SETS": 5,
	}
)

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

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

func (Aggregate_GroupType) Descriptor() protoreflect.EnumDescriptor {
	return file_spark_connect_relations_proto_enumTypes[2].Descriptor()
}

func (Aggregate_GroupType) Type() protoreflect.EnumType {
	return &file_spark_connect_relations_proto_enumTypes[2]
}

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

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

type Parse_ParseFormat int32

const (
	Parse_PARSE_FORMAT_UNSPECIFIED Parse_ParseFormat = 0
	Parse_PARSE_FORMAT_CSV         Parse_ParseFormat = 1
	Parse_PARSE_FORMAT_JSON        Parse_ParseFormat = 2
)

// Enum value maps for Parse_ParseFormat.
var (
	Parse_ParseFormat_name = map[int32]string{
		0: "PARSE_FORMAT_UNSPECIFIED",
		1: "PARSE_FORMAT_CSV",
		2: "PARSE_FORMAT_JSON",
	}
	Parse_ParseFormat_value = map[string]int32{
		"PARSE_FORMAT_UNSPECIFIED": 0,
		"PARSE_FORMAT_CSV":         1,
		"PARSE_FORMAT_JSON":        2,
	}
)

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

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

func (Parse_ParseFormat) Descriptor() protoreflect.EnumDescriptor {
	return file_spark_connect_relations_proto_enumTypes[3].Descriptor()
}

func (Parse_ParseFormat) Type() protoreflect.EnumType {
	return &file_spark_connect_relations_proto_enumTypes[3]
}

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

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

// The main [[Relation]] type. Fundamentally, a relation is a typed container
// that has exactly one explicit relation type set.
//
// When adding new relation types, they have to be registered here.
type Relation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Common *RelationCommon `protobuf:"bytes,1,opt,name=common,proto3" json:"common,omitempty"`
	// Types that are assignable to RelType:
	//
	//	*Relation_Read
	//	*Relation_Project
	//	*Relation_Filter
	//	*Relation_Join
	//	*Relation_SetOp
	//	*Relation_Sort
	//	*Relation_Limit
	//	*Relation_Aggregate
	//	*Relation_Sql
	//	*Relation_LocalRelation
	//	*Relation_Sample
	//	*Relation_Offset
	//	*Relation_Deduplicate
	//	*Relation_Range
	//	*Relation_SubqueryAlias
	//	*Relation_Repartition
	//	*Relation_ToDf
	//	*Relation_WithColumnsRenamed
	//	*Relation_ShowString
	//	*Relation_Drop
	//	*Relation_Tail
	//	*Relation_WithColumns
	//	*Relation_Hint
	//	*Relation_Unpivot
	//	*Relation_ToSchema
	//	*Relation_RepartitionByExpression
	//	*Relation_MapPartitions
	//	*Relation_CollectMetrics
	//	*Relation_Parse
	//	*Relation_GroupMap
	//	*Relation_CoGroupMap
	//	*Relation_WithWatermark
	//	*Relation_ApplyInPandasWithState
	//	*Relation_HtmlString
	//	*Relation_CachedLocalRelation
	//	*Relation_CachedRemoteRelation
	//	*Relation_CommonInlineUserDefinedTableFunction
	//	*Relation_AsOfJoin
	//	*Relation_CommonInlineUserDefinedDataSource
	//	*Relation_WithRelations
	//	*Relation_Transpose
	//	*Relation_UnresolvedTableValuedFunction
	//	*Relation_LateralJoin
	//	*Relation_FillNa
	//	*Relation_DropNa
	//	*Relation_Replace
	//	*Relation_Summary
	//	*Relation_Crosstab
	//	*Relation_Describe
	//	*Relation_Cov
	//	*Relation_Corr
	//	*Relation_ApproxQuantile
	//	*Relation_FreqItems
	//	*Relation_SampleBy
	//	*Relation_Catalog
	//	*Relation_MlRelation
	//	*Relation_Extension
	//	*Relation_Unknown
	RelType isRelation_RelType `protobuf_oneof:"rel_type"`
}

func (x *Relation) Reset() {
	*x = Relation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[0]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Relation) ProtoMessage() {}

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

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

func (x *Relation) GetCommon() *RelationCommon {
	if x != nil {
		return x.Common
	}
	return nil
}

func (m *Relation) GetRelType() isRelation_RelType {
	if m != nil {
		return m.RelType
	}
	return nil
}

func (x *Relation) GetRead() *Read {
	if x, ok := x.GetRelType().(*Relation_Read); ok {
		return x.Read
	}
	return nil
}

func (x *Relation) GetProject() *Project {
	if x, ok := x.GetRelType().(*Relation_Project); ok {
		return x.Project
	}
	return nil
}

func (x *Relation) GetFilter() *Filter {
	if x, ok := x.GetRelType().(*Relation_Filter); ok {
		return x.Filter
	}
	return nil
}

func (x *Relation) GetJoin() *Join {
	if x, ok := x.GetRelType().(*Relation_Join); ok {
		return x.Join
	}
	return nil
}

func (x *Relation) GetSetOp() *SetOperation {
	if x, ok := x.GetRelType().(*Relation_SetOp); ok {
		return x.SetOp
	}
	return nil
}

func (x *Relation) GetSort() *Sort {
	if x, ok := x.GetRelType().(*Relation_Sort); ok {
		return x.Sort
	}
	return nil
}

func (x *Relation) GetLimit() *Limit {
	if x, ok := x.GetRelType().(*Relation_Limit); ok {
		return x.Limit
	}
	return nil
}

func (x *Relation) GetAggregate() *Aggregate {
	if x, ok := x.GetRelType().(*Relation_Aggregate); ok {
		return x.Aggregate
	}
	return nil
}

func (x *Relation) GetSql() *SQL {
	if x, ok := x.GetRelType().(*Relation_Sql); ok {
		return x.Sql
	}
	return nil
}

func (x *Relation) GetLocalRelation() *LocalRelation {
	if x, ok := x.GetRelType().(*Relation_LocalRelation); ok {
		return x.LocalRelation
	}
	return nil
}

func (x *Relation) GetSample() *Sample {
	if x, ok := x.GetRelType().(*Relation_Sample); ok {
		return x.Sample
	}
	return nil
}

func (x *Relation) GetOffset() *Offset {
	if x, ok := x.GetRelType().(*Relation_Offset); ok {
		return x.Offset
	}
	return nil
}

func (x *Relation) GetDeduplicate() *Deduplicate {
	if x, ok := x.GetRelType().(*Relation_Deduplicate); ok {
		return x.Deduplicate
	}
	return nil
}

func (x *Relation) GetRange() *Range {
	if x, ok := x.GetRelType().(*Relation_Range); ok {
		return x.Range
	}
	return nil
}

func (x *Relation) GetSubqueryAlias() *SubqueryAlias {
	if x, ok := x.GetRelType().(*Relation_SubqueryAlias); ok {
		return x.SubqueryAlias
	}
	return nil
}

func (x *Relation) GetRepartition() *Repartition {
	if x, ok := x.GetRelType().(*Relation_Repartition); ok {
		return x.Repartition
	}
	return nil
}

func (x *Relation) GetToDf() *ToDF {
	if x, ok := x.GetRelType().(*Relation_ToDf); ok {
		return x.ToDf
	}
	return nil
}

func (x *Relation) GetWithColumnsRenamed() *WithColumnsRenamed {
	if x, ok := x.GetRelType().(*Relation_WithColumnsRenamed); ok {
		return x.WithColumnsRenamed
	}
	return nil
}

func (x *Relation) GetShowString() *ShowString {
	if x, ok := x.GetRelType().(*Relation_ShowString); ok {
		return x.ShowString
	}
	return nil
}

func (x *Relation) GetDrop() *Drop {
	if x, ok := x.GetRelType().(*Relation_Drop); ok {
		return x.Drop
	}
	return nil
}

func (x *Relation) GetTail() *Tail {
	if x, ok := x.GetRelType().(*Relation_Tail); ok {
		return x.Tail
	}
	return nil
}

func (x *Relation) GetWithColumns() *WithColumns {
	if x, ok := x.GetRelType().(*Relation_WithColumns); ok {
		return x.WithColumns
	}
	return nil
}

func (x *Relation) GetHint() *Hint {
	if x, ok := x.GetRelType().(*Relation_Hint); ok {
		return x.Hint
	}
	return nil
}

func (x *Relation) GetUnpivot() *Unpivot {
	if x, ok := x.GetRelType().(*Relation_Unpivot); ok {
		return x.Unpivot
	}
	return nil
}

func (x *Relation) GetToSchema() *ToSchema {
	if x, ok := x.GetRelType().(*Relation_ToSchema); ok {
		return x.ToSchema
	}
	return nil
}

func (x *Relation) GetRepartitionByExpression() *RepartitionByExpression {
	if x, ok := x.GetRelType().(*Relation_RepartitionByExpression); ok {
		return x.RepartitionByExpression
	}
	return nil
}

func (x *Relation) GetMapPartitions() *MapPartitions {
	if x, ok := x.GetRelType().(*Relation_MapPartitions); ok {
		return x.MapPartitions
	}
	return nil
}

func (x *Relation) GetCollectMetrics() *CollectMetrics {
	if x, ok := x.GetRelType().(*Relation_CollectMetrics); ok {
		return x.CollectMetrics
	}
	return nil
}

func (x *Relation) GetParse() *Parse {
	if x, ok := x.GetRelType().(*Relation_Parse); ok {
		return x.Parse
	}
	return nil
}

func (x *Relation) GetGroupMap() *GroupMap {
	if x, ok := x.GetRelType().(*Relation_GroupMap); ok {
		return x.GroupMap
	}
	return nil
}

func (x *Relation) GetCoGroupMap() *CoGroupMap {
	if x, ok := x.GetRelType().(*Relation_CoGroupMap); ok {
		return x.CoGroupMap
	}
	return nil
}

func (x *Relation) GetWithWatermark() *WithWatermark {
	if x, ok := x.GetRelType().(*Relation_WithWatermark); ok {
		return x.WithWatermark
	}
	return nil
}

func (x *Relation) GetApplyInPandasWithState() *ApplyInPandasWithState {
	if x, ok := x.GetRelType().(*Relation_ApplyInPandasWithState); ok {
		return x.ApplyInPandasWithState
	}
	return nil
}

func (x *Relation) GetHtmlString() *HtmlString {
	if x, ok := x.GetRelType().(*Relation_HtmlString); ok {
		return x.HtmlString
	}
	return nil
}

func (x *Relation) GetCachedLocalRelation() *CachedLocalRelation {
	if x, ok := x.GetRelType().(*Relation_CachedLocalRelation); ok {
		return x.CachedLocalRelation
	}
	return nil
}

func (x *Relation) GetCachedRemoteRelation() *CachedRemoteRelation {
	if x, ok := x.GetRelType().(*Relation_CachedRemoteRelation); ok {
		return x.CachedRemoteRelation
	}
	return nil
}

func (x *Relation) GetCommonInlineUserDefinedTableFunction() *CommonInlineUserDefinedTableFunction {
	if x, ok := x.GetRelType().(*Relation_CommonInlineUserDefinedTableFunction); ok {
		return x.CommonInlineUserDefinedTableFunction
	}
	return nil
}

func (x *Relation) GetAsOfJoin() *AsOfJoin {
	if x, ok := x.GetRelType().(*Relation_AsOfJoin); ok {
		return x.AsOfJoin
	}
	return nil
}

func (x *Relation) GetCommonInlineUserDefinedDataSource() *CommonInlineUserDefinedDataSource {
	if x, ok := x.GetRelType().(*Relation_CommonInlineUserDefinedDataSource); ok {
		return x.CommonInlineUserDefinedDataSource
	}
	return nil
}

func (x *Relation) GetWithRelations() *WithRelations {
	if x, ok := x.GetRelType().(*Relation_WithRelations); ok {
		return x.WithRelations
	}
	return nil
}

func (x *Relation) GetTranspose() *Transpose {
	if x, ok := x.GetRelType().(*Relation_Transpose); ok {
		return x.Transpose
	}
	return nil
}

func (x *Relation) GetUnresolvedTableValuedFunction() *UnresolvedTableValuedFunction {
	if x, ok := x.GetRelType().(*Relation_UnresolvedTableValuedFunction); ok {
		return x.UnresolvedTableValuedFunction
	}
	return nil
}

func (x *Relation) GetLateralJoin() *LateralJoin {
	if x, ok := x.GetRelType().(*Relation_LateralJoin); ok {
		return x.LateralJoin
	}
	return nil
}

func (x *Relation) GetFillNa() *NAFill {
	if x, ok := x.GetRelType().(*Relation_FillNa); ok {
		return x.FillNa
	}
	return nil
}

func (x *Relation) GetDropNa() *NADrop {
	if x, ok := x.GetRelType().(*Relation_DropNa); ok {
		return x.DropNa
	}
	return nil
}

func (x *Relation) GetReplace() *NAReplace {
	if x, ok := x.GetRelType().(*Relation_Replace); ok {
		return x.Replace
	}
	return nil
}

func (x *Relation) GetSummary() *StatSummary {
	if x, ok := x.GetRelType().(*Relation_Summary); ok {
		return x.Summary
	}
	return nil
}

func (x *Relation) GetCrosstab() *StatCrosstab {
	if x, ok := x.GetRelType().(*Relation_Crosstab); ok {
		return x.Crosstab
	}
	return nil
}

func (x *Relation) GetDescribe() *StatDescribe {
	if x, ok := x.GetRelType().(*Relation_Describe); ok {
		return x.Describe
	}
	return nil
}

func (x *Relation) GetCov() *StatCov {
	if x, ok := x.GetRelType().(*Relation_Cov); ok {
		return x.Cov
	}
	return nil
}

func (x *Relation) GetCorr() *StatCorr {
	if x, ok := x.GetRelType().(*Relation_Corr); ok {
		return x.Corr
	}
	return nil
}

func (x *Relation) GetApproxQuantile() *StatApproxQuantile {
	if x, ok := x.GetRelType().(*Relation_ApproxQuantile); ok {
		return x.ApproxQuantile
	}
	return nil
}

func (x *Relation) GetFreqItems() *StatFreqItems {
	if x, ok := x.GetRelType().(*Relation_FreqItems); ok {
		return x.FreqItems
	}
	return nil
}

func (x *Relation) GetSampleBy() *StatSampleBy {
	if x, ok := x.GetRelType().(*Relation_SampleBy); ok {
		return x.SampleBy
	}
	return nil
}

func (x *Relation) GetCatalog() *Catalog {
	if x, ok := x.GetRelType().(*Relation_Catalog); ok {
		return x.Catalog
	}
	return nil
}

func (x *Relation) GetMlRelation() *MlRelation {
	if x, ok := x.GetRelType().(*Relation_MlRelation); ok {
		return x.MlRelation
	}
	return nil
}

func (x *Relation) GetExtension() *anypb.Any {
	if x, ok := x.GetRelType().(*Relation_Extension); ok {
		return x.Extension
	}
	return nil
}

func (x *Relation) GetUnknown() *Unknown {
	if x, ok := x.GetRelType().(*Relation_Unknown); ok {
		return x.Unknown
	}
	return nil
}

type isRelation_RelType interface {
	isRelation_RelType()
}

type Relation_Read struct {
	Read *Read `protobuf:"bytes,2,opt,name=read,proto3,oneof"`
}

type Relation_Project struct {
	Project *Project `protobuf:"bytes,3,opt,name=project,proto3,oneof"`
}

type Relation_Filter struct {
	Filter *Filter `protobuf:"bytes,4,opt,name=filter,proto3,oneof"`
}

type Relation_Join struct {
	Join *Join `protobuf:"bytes,5,opt,name=join,proto3,oneof"`
}

type Relation_SetOp struct {
	SetOp *SetOperation `protobuf:"bytes,6,opt,name=set_op,json=setOp,proto3,oneof"`
}

type Relation_Sort struct {
	Sort *Sort `protobuf:"bytes,7,opt,name=sort,proto3,oneof"`
}

type Relation_Limit struct {
	Limit *Limit `protobuf:"bytes,8,opt,name=limit,proto3,oneof"`
}

type Relation_Aggregate struct {
	Aggregate *Aggregate `protobuf:"bytes,9,opt,name=aggregate,proto3,oneof"`
}

type Relation_Sql struct {
	Sql *SQL `protobuf:"bytes,10,opt,name=sql,proto3,oneof"`
}

type Relation_LocalRelation struct {
	LocalRelation *LocalRelation `protobuf:"bytes,11,opt,name=local_relation,json=localRelation,proto3,oneof"`
}

type Relation_Sample struct {
	Sample *Sample `protobuf:"bytes,12,opt,name=sample,proto3,oneof"`
}

type Relation_Offset struct {
	Offset *Offset `protobuf:"bytes,13,opt,name=offset,proto3,oneof"`
}

type Relation_Deduplicate struct {
	Deduplicate *Deduplicate `protobuf:"bytes,14,opt,name=deduplicate,proto3,oneof"`
}

type Relation_Range struct {
	Range *Range `protobuf:"bytes,15,opt,name=range,proto3,oneof"`
}

type Relation_SubqueryAlias struct {
	SubqueryAlias *SubqueryAlias `protobuf:"bytes,16,opt,name=subquery_alias,json=subqueryAlias,proto3,oneof"`
}

type Relation_Repartition struct {
	Repartition *Repartition `protobuf:"bytes,17,opt,name=repartition,proto3,oneof"`
}

type Relation_ToDf struct {
	ToDf *ToDF `protobuf:"bytes,18,opt,name=to_df,json=toDf,proto3,oneof"`
}

type Relation_WithColumnsRenamed struct {
	WithColumnsRenamed *WithColumnsRenamed `protobuf:"bytes,19,opt,name=with_columns_renamed,json=withColumnsRenamed,proto3,oneof"`
}

type Relation_ShowString struct {
	ShowString *ShowString `protobuf:"bytes,20,opt,name=show_string,json=showString,proto3,oneof"`
}

type Relation_Drop struct {
	Drop *Drop `protobuf:"bytes,21,opt,name=drop,proto3,oneof"`
}

type Relation_Tail struct {
	Tail *Tail `protobuf:"bytes,22,opt,name=tail,proto3,oneof"`
}

type Relation_WithColumns struct {
	WithColumns *WithColumns `protobuf:"bytes,23,opt,name=with_columns,json=withColumns,proto3,oneof"`
}

type Relation_Hint struct {
	Hint *Hint `protobuf:"bytes,24,opt,name=hint,proto3,oneof"`
}

type Relation_Unpivot struct {
	Unpivot *Unpivot `protobuf:"bytes,25,opt,name=unpivot,proto3,oneof"`
}

type Relation_ToSchema struct {
	ToSchema *ToSchema `protobuf:"bytes,26,opt,name=to_schema,json=toSchema,proto3,oneof"`
}

type Relation_RepartitionByExpression struct {
	RepartitionByExpression *RepartitionByExpression `protobuf:"bytes,27,opt,name=repartition_by_expression,json=repartitionByExpression,proto3,oneof"`
}

type Relation_MapPartitions struct {
	MapPartitions *MapPartitions `protobuf:"bytes,28,opt,name=map_partitions,json=mapPartitions,proto3,oneof"`
}

type Relation_CollectMetrics struct {
	CollectMetrics *CollectMetrics `protobuf:"bytes,29,opt,name=collect_metrics,json=collectMetrics,proto3,oneof"`
}

type Relation_Parse struct {
	Parse *Parse `protobuf:"bytes,30,opt,name=parse,proto3,oneof"`
}

type Relation_GroupMap struct {
	GroupMap *GroupMap `protobuf:"bytes,31,opt,name=group_map,json=groupMap,proto3,oneof"`
}

type Relation_CoGroupMap struct {
	CoGroupMap *CoGroupMap `protobuf:"bytes,32,opt,name=co_group_map,json=coGroupMap,proto3,oneof"`
}

type Relation_WithWatermark struct {
	WithWatermark *WithWatermark `protobuf:"bytes,33,opt,name=with_watermark,json=withWatermark,proto3,oneof"`
}

type Relation_ApplyInPandasWithState struct {
	ApplyInPandasWithState *ApplyInPandasWithState `protobuf:"bytes,34,opt,name=apply_in_pandas_with_state,json=applyInPandasWithState,proto3,oneof"`
}

type Relation_HtmlString struct {
	HtmlString *HtmlString `protobuf:"bytes,35,opt,name=html_string,json=htmlString,proto3,oneof"`
}

type Relation_CachedLocalRelation struct {
	CachedLocalRelation *CachedLocalRelation `protobuf:"bytes,36,opt,name=cached_local_relation,json=cachedLocalRelation,proto3,oneof"`
}

type Relation_CachedRemoteRelation struct {
	CachedRemoteRelation *CachedRemoteRelation `protobuf:"bytes,37,opt,name=cached_remote_relation,json=cachedRemoteRelation,proto3,oneof"`
}

type Relation_CommonInlineUserDefinedTableFunction struct {
	CommonInlineUserDefinedTableFunction *CommonInlineUserDefinedTableFunction `protobuf:"bytes,38,opt,name=common_inline_user_defined_table_function,json=commonInlineUserDefinedTableFunction,proto3,oneof"`
}

type Relation_AsOfJoin struct {
	AsOfJoin *AsOfJoin `protobuf:"bytes,39,opt,name=as_of_join,json=asOfJoin,proto3,oneof"`
}

type Relation_CommonInlineUserDefinedDataSource struct {
	CommonInlineUserDefinedDataSource *CommonInlineUserDefinedDataSource `protobuf:"bytes,40,opt,name=common_inline_user_defined_data_source,json=commonInlineUserDefinedDataSource,proto3,oneof"`
}

type Relation_WithRelations struct {
	WithRelations *WithRelations `protobuf:"bytes,41,opt,name=with_relations,json=withRelations,proto3,oneof"`
}

type Relation_Transpose struct {
	Transpose *Transpose `protobuf:"bytes,42,opt,name=transpose,proto3,oneof"`
}

type Relation_UnresolvedTableValuedFunction struct {
	UnresolvedTableValuedFunction *UnresolvedTableValuedFunction `protobuf:"bytes,43,opt,name=unresolved_table_valued_function,json=unresolvedTableValuedFunction,proto3,oneof"`
}

type Relation_LateralJoin struct {
	LateralJoin *LateralJoin `protobuf:"bytes,44,opt,name=lateral_join,json=lateralJoin,proto3,oneof"`
}

type Relation_FillNa struct {
	// NA functions
	FillNa *NAFill `protobuf:"bytes,90,opt,name=fill_na,json=fillNa,proto3,oneof"`
}

type Relation_DropNa struct {
	DropNa *NADrop `protobuf:"bytes,91,opt,name=drop_na,json=dropNa,proto3,oneof"`
}

type Relation_Replace struct {
	Replace *NAReplace `protobuf:"bytes,92,opt,name=replace,proto3,oneof"`
}

type Relation_Summary struct {
	// stat functions
	Summary *StatSummary `protobuf:"bytes,100,opt,name=summary,proto3,oneof"`
}

type Relation_Crosstab struct {
	Crosstab *StatCrosstab `protobuf:"bytes,101,opt,name=crosstab,proto3,oneof"`
}

type Relation_Describe struct {
	Describe *StatDescribe `protobuf:"bytes,102,opt,name=describe,proto3,oneof"`
}

type Relation_Cov struct {
	Cov *StatCov `protobuf:"bytes,103,opt,name=cov,proto3,oneof"`
}

type Relation_Corr struct {
	Corr *StatCorr `protobuf:"bytes,104,opt,name=corr,proto3,oneof"`
}

type Relation_ApproxQuantile struct {
	ApproxQuantile *StatApproxQuantile `protobuf:"bytes,105,opt,name=approx_quantile,json=approxQuantile,proto3,oneof"`
}

type Relation_FreqItems struct {
	FreqItems *StatFreqItems `protobuf:"bytes,106,opt,name=freq_items,json=freqItems,proto3,oneof"`
}

type Relation_SampleBy struct {
	SampleBy *StatSampleBy `protobuf:"bytes,107,opt,name=sample_by,json=sampleBy,proto3,oneof"`
}

type Relation_Catalog struct {
	// Catalog API (experimental / unstable)
	Catalog *Catalog `protobuf:"bytes,200,opt,name=catalog,proto3,oneof"`
}

type Relation_MlRelation struct {
	// ML relation
	MlRelation *MlRelation `protobuf:"bytes,300,opt,name=ml_relation,json=mlRelation,proto3,oneof"`
}

type Relation_Extension struct {
	// This field is used to mark extensions to the protocol. When plugins generate arbitrary
	// relations they can add them here. During the planning the correct resolution is done.
	Extension *anypb.Any `protobuf:"bytes,998,opt,name=extension,proto3,oneof"`
}

type Relation_Unknown struct {
	Unknown *Unknown `protobuf:"bytes,999,opt,name=unknown,proto3,oneof"`
}

func (*Relation_Read) isRelation_RelType() {}

func (*Relation_Project) isRelation_RelType() {}

func (*Relation_Filter) isRelation_RelType() {}

func (*Relation_Join) isRelation_RelType() {}

func (*Relation_SetOp) isRelation_RelType() {}

func (*Relation_Sort) isRelation_RelType() {}

func (*Relation_Limit) isRelation_RelType() {}

func (*Relation_Aggregate) isRelation_RelType() {}

func (*Relation_Sql) isRelation_RelType() {}

func (*Relation_LocalRelation) isRelation_RelType() {}

func (*Relation_Sample) isRelation_RelType() {}

func (*Relation_Offset) isRelation_RelType() {}

func (*Relation_Deduplicate) isRelation_RelType() {}

func (*Relation_Range) isRelation_RelType() {}

func (*Relation_SubqueryAlias) isRelation_RelType() {}

func (*Relation_Repartition) isRelation_RelType() {}

func (*Relation_ToDf) isRelation_RelType() {}

func (*Relation_WithColumnsRenamed) isRelation_RelType() {}

func (*Relation_ShowString) isRelation_RelType() {}

func (*Relation_Drop) isRelation_RelType() {}

func (*Relation_Tail) isRelation_RelType() {}

func (*Relation_WithColumns) isRelation_RelType() {}

func (*Relation_Hint) isRelation_RelType() {}

func (*Relation_Unpivot) isRelation_RelType() {}

func (*Relation_ToSchema) isRelation_RelType() {}

func (*Relation_RepartitionByExpression) isRelation_RelType() {}

func (*Relation_MapPartitions) isRelation_RelType() {}

func (*Relation_CollectMetrics) isRelation_RelType() {}

func (*Relation_Parse) isRelation_RelType() {}

func (*Relation_GroupMap) isRelation_RelType() {}

func (*Relation_CoGroupMap) isRelation_RelType() {}

func (*Relation_WithWatermark) isRelation_RelType() {}

func (*Relation_ApplyInPandasWithState) isRelation_RelType() {}

func (*Relation_HtmlString) isRelation_RelType() {}

func (*Relation_CachedLocalRelation) isRelation_RelType() {}

func (*Relation_CachedRemoteRelation) isRelation_RelType() {}

func (*Relation_CommonInlineUserDefinedTableFunction) isRelation_RelType() {}

func (*Relation_AsOfJoin) isRelation_RelType() {}

func (*Relation_CommonInlineUserDefinedDataSource) isRelation_RelType() {}

func (*Relation_WithRelations) isRelation_RelType() {}

func (*Relation_Transpose) isRelation_RelType() {}

func (*Relation_UnresolvedTableValuedFunction) isRelation_RelType() {}

func (*Relation_LateralJoin) isRelation_RelType() {}

func (*Relation_FillNa) isRelation_RelType() {}

func (*Relation_DropNa) isRelation_RelType() {}

func (*Relation_Replace) isRelation_RelType() {}

func (*Relation_Summary) isRelation_RelType() {}

func (*Relation_Crosstab) isRelation_RelType() {}

func (*Relation_Describe) isRelation_RelType() {}

func (*Relation_Cov) isRelation_RelType() {}

func (*Relation_Corr) isRelation_RelType() {}

func (*Relation_ApproxQuantile) isRelation_RelType() {}

func (*Relation_FreqItems) isRelation_RelType() {}

func (*Relation_SampleBy) isRelation_RelType() {}

func (*Relation_Catalog) isRelation_RelType() {}

func (*Relation_MlRelation) isRelation_RelType() {}

func (*Relation_Extension) isRelation_RelType() {}

func (*Relation_Unknown) isRelation_RelType() {}

// Relation to represent ML world
type MlRelation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to MlType:
	//
	//	*MlRelation_Transform_
	//	*MlRelation_Fetch
	MlType isMlRelation_MlType `protobuf_oneof:"ml_type"`
}

func (x *MlRelation) Reset() {
	*x = MlRelation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[1]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MlRelation) ProtoMessage() {}

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

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

func (m *MlRelation) GetMlType() isMlRelation_MlType {
	if m != nil {
		return m.MlType
	}
	return nil
}

func (x *MlRelation) GetTransform() *MlRelation_Transform {
	if x, ok := x.GetMlType().(*MlRelation_Transform_); ok {
		return x.Transform
	}
	return nil
}

func (x *MlRelation) GetFetch() *Fetch {
	if x, ok := x.GetMlType().(*MlRelation_Fetch); ok {
		return x.Fetch
	}
	return nil
}

type isMlRelation_MlType interface {
	isMlRelation_MlType()
}

type MlRelation_Transform_ struct {
	Transform *MlRelation_Transform `protobuf:"bytes,1,opt,name=transform,proto3,oneof"`
}

type MlRelation_Fetch struct {
	Fetch *Fetch `protobuf:"bytes,2,opt,name=fetch,proto3,oneof"`
}

func (*MlRelation_Transform_) isMlRelation_MlType() {}

func (*MlRelation_Fetch) isMlRelation_MlType() {}

// Message for fetching attribute from object on the server side.
// Fetch can be represented as a Relation or a ML command
// Command: model.coefficients, model.summary.weightedPrecision which
// returns the final literal result
// Relation: model.summary.roc which returns a DataFrame (Relation)
type Fetch struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) reference to the object on the server side
	ObjRef *ObjectRef `protobuf:"bytes,1,opt,name=obj_ref,json=objRef,proto3" json:"obj_ref,omitempty"`
	// (Required) the calling method chains
	Methods []*Fetch_Method `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"`
}

func (x *Fetch) Reset() {
	*x = Fetch{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[2]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Fetch) ProtoMessage() {}

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

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

func (x *Fetch) GetObjRef() *ObjectRef {
	if x != nil {
		return x.ObjRef
	}
	return nil
}

func (x *Fetch) GetMethods() []*Fetch_Method {
	if x != nil {
		return x.Methods
	}
	return nil
}

// Used for testing purposes only.
type Unknown struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

func (x *Unknown) Reset() {
	*x = Unknown{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[3]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Unknown) ProtoMessage() {}

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

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

// Common metadata of all relations.
type RelationCommon struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Shared relation metadata.
	//
	// Deprecated: Marked as deprecated in spark/connect/relations.proto.
	SourceInfo string `protobuf:"bytes,1,opt,name=source_info,json=sourceInfo,proto3" json:"source_info,omitempty"`
	// (Optional) A per-client globally unique id for a given connect plan.
	PlanId *int64 `protobuf:"varint,2,opt,name=plan_id,json=planId,proto3,oneof" json:"plan_id,omitempty"`
	// (Optional) Keep the information of the origin for this expression such as stacktrace.
	Origin *Origin `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"`
}

func (x *RelationCommon) Reset() {
	*x = RelationCommon{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[4]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RelationCommon) ProtoMessage() {}

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

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

// Deprecated: Marked as deprecated in spark/connect/relations.proto.
func (x *RelationCommon) GetSourceInfo() string {
	if x != nil {
		return x.SourceInfo
	}
	return ""
}

func (x *RelationCommon) GetPlanId() int64 {
	if x != nil && x.PlanId != nil {
		return *x.PlanId
	}
	return 0
}

func (x *RelationCommon) GetOrigin() *Origin {
	if x != nil {
		return x.Origin
	}
	return nil
}

// Relation that uses a SQL query to generate the output.
type SQL struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The SQL query.
	Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"`
	// (Optional) A map of parameter names to literal expressions.
	//
	// Deprecated: Marked as deprecated in spark/connect/relations.proto.
	Args map[string]*Expression_Literal `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// (Optional) A sequence of literal expressions for positional parameters in the SQL query text.
	//
	// Deprecated: Marked as deprecated in spark/connect/relations.proto.
	PosArgs []*Expression_Literal `protobuf:"bytes,3,rep,name=pos_args,json=posArgs,proto3" json:"pos_args,omitempty"`
	// (Optional) A map of parameter names to expressions.
	// It cannot coexist with `pos_arguments`.
	NamedArguments map[string]*Expression `protobuf:"bytes,4,rep,name=named_arguments,json=namedArguments,proto3" json:"named_arguments,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// (Optional) A sequence of expressions for positional parameters in the SQL query text.
	// It cannot coexist with `named_arguments`.
	PosArguments []*Expression `protobuf:"bytes,5,rep,name=pos_arguments,json=posArguments,proto3" json:"pos_arguments,omitempty"`
}

func (x *SQL) Reset() {
	*x = SQL{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[5]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SQL) ProtoMessage() {}

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

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

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

// Deprecated: Marked as deprecated in spark/connect/relations.proto.
func (x *SQL) GetArgs() map[string]*Expression_Literal {
	if x != nil {
		return x.Args
	}
	return nil
}

// Deprecated: Marked as deprecated in spark/connect/relations.proto.
func (x *SQL) GetPosArgs() []*Expression_Literal {
	if x != nil {
		return x.PosArgs
	}
	return nil
}

func (x *SQL) GetNamedArguments() map[string]*Expression {
	if x != nil {
		return x.NamedArguments
	}
	return nil
}

func (x *SQL) GetPosArguments() []*Expression {
	if x != nil {
		return x.PosArguments
	}
	return nil
}

// Relation of type [[WithRelations]].
//
// This relation contains a root plan, and one or more references that are used by the root plan.
// There are two ways of referencing a relation, by name (through a subquery alias), or by plan_id
// (using RelationCommon.plan_id).
//
// This relation can be used to implement CTEs, describe DAGs, or to reduce tree depth.
type WithRelations struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Plan at the root of the query tree. This plan is expected to contain one or more
	// references. Those references get expanded later on by the engine.
	Root *Relation `protobuf:"bytes,1,opt,name=root,proto3" json:"root,omitempty"`
	// (Required) Plans referenced by the root plan. Relations in this list are also allowed to
	// contain references to other relations in this list, as long they do not form cycles.
	References []*Relation `protobuf:"bytes,2,rep,name=references,proto3" json:"references,omitempty"`
}

func (x *WithRelations) Reset() {
	*x = WithRelations{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[6]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithRelations) ProtoMessage() {}

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

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

func (x *WithRelations) GetRoot() *Relation {
	if x != nil {
		return x.Root
	}
	return nil
}

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

// Relation that reads from a file / table or other data source. Does not have additional
// inputs.
type Read struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to ReadType:
	//
	//	*Read_NamedTable_
	//	*Read_DataSource_
	ReadType isRead_ReadType `protobuf_oneof:"read_type"`
	// (Optional) Indicates if this is a streaming read.
	IsStreaming bool `protobuf:"varint,3,opt,name=is_streaming,json=isStreaming,proto3" json:"is_streaming,omitempty"`
}

func (x *Read) Reset() {
	*x = Read{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[7]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Read) ProtoMessage() {}

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

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

func (m *Read) GetReadType() isRead_ReadType {
	if m != nil {
		return m.ReadType
	}
	return nil
}

func (x *Read) GetNamedTable() *Read_NamedTable {
	if x, ok := x.GetReadType().(*Read_NamedTable_); ok {
		return x.NamedTable
	}
	return nil
}

func (x *Read) GetDataSource() *Read_DataSource {
	if x, ok := x.GetReadType().(*Read_DataSource_); ok {
		return x.DataSource
	}
	return nil
}

func (x *Read) GetIsStreaming() bool {
	if x != nil {
		return x.IsStreaming
	}
	return false
}

type isRead_ReadType interface {
	isRead_ReadType()
}

type Read_NamedTable_ struct {
	NamedTable *Read_NamedTable `protobuf:"bytes,1,opt,name=named_table,json=namedTable,proto3,oneof"`
}

type Read_DataSource_ struct {
	DataSource *Read_DataSource `protobuf:"bytes,2,opt,name=data_source,json=dataSource,proto3,oneof"`
}

func (*Read_NamedTable_) isRead_ReadType() {}

func (*Read_DataSource_) isRead_ReadType() {}

// Projection of a bag of expressions for a given input relation.
//
// The input relation must be specified.
// The projected expression can be an arbitrary expression.
type Project struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Optional) Input relation is optional for Project.
	//
	// For example, `SELECT ABS(-1)` is valid plan without an input plan.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) A Project requires at least one expression.
	Expressions []*Expression `protobuf:"bytes,3,rep,name=expressions,proto3" json:"expressions,omitempty"`
}

func (x *Project) Reset() {
	*x = Project{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[8]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Project) ProtoMessage() {}

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

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

func (x *Project) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

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

// Relation that applies a boolean expression `condition` on each row of `input` to produce
// the output result.
type Filter struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for a Filter.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) A Filter must have a condition expression.
	Condition *Expression `protobuf:"bytes,2,opt,name=condition,proto3" json:"condition,omitempty"`
}

func (x *Filter) Reset() {
	*x = Filter{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[9]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Filter) ProtoMessage() {}

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

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

func (x *Filter) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Filter) GetCondition() *Expression {
	if x != nil {
		return x.Condition
	}
	return nil
}

// Relation of type [[Join]].
//
// `left` and `right` must be present.
type Join struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Left input relation for a Join.
	Left *Relation `protobuf:"bytes,1,opt,name=left,proto3" json:"left,omitempty"`
	// (Required) Right input relation for a Join.
	Right *Relation `protobuf:"bytes,2,opt,name=right,proto3" json:"right,omitempty"`
	// (Optional) The join condition. Could be unset when `using_columns` is utilized.
	//
	// This field does not co-exist with using_columns.
	JoinCondition *Expression `protobuf:"bytes,3,opt,name=join_condition,json=joinCondition,proto3" json:"join_condition,omitempty"`
	// (Required) The join type.
	JoinType Join_JoinType `protobuf:"varint,4,opt,name=join_type,json=joinType,proto3,enum=spark.connect.Join_JoinType" json:"join_type,omitempty"`
	// Optional. using_columns provides a list of columns that should present on both sides of
	// the join inputs that this Join will join on. For example A JOIN B USING col_name is
	// equivalent to A JOIN B on A.col_name = B.col_name.
	//
	// This field does not co-exist with join_condition.
	UsingColumns []string `protobuf:"bytes,5,rep,name=using_columns,json=usingColumns,proto3" json:"using_columns,omitempty"`
	// (Optional) Only used by joinWith. Set the left and right join data types.
	JoinDataType *Join_JoinDataType `protobuf:"bytes,6,opt,name=join_data_type,json=joinDataType,proto3,oneof" json:"join_data_type,omitempty"`
}

func (x *Join) Reset() {
	*x = Join{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[10]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Join) ProtoMessage() {}

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

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

func (x *Join) GetLeft() *Relation {
	if x != nil {
		return x.Left
	}
	return nil
}

func (x *Join) GetRight() *Relation {
	if x != nil {
		return x.Right
	}
	return nil
}

func (x *Join) GetJoinCondition() *Expression {
	if x != nil {
		return x.JoinCondition
	}
	return nil
}

func (x *Join) GetJoinType() Join_JoinType {
	if x != nil {
		return x.JoinType
	}
	return Join_JOIN_TYPE_UNSPECIFIED
}

func (x *Join) GetUsingColumns() []string {
	if x != nil {
		return x.UsingColumns
	}
	return nil
}

func (x *Join) GetJoinDataType() *Join_JoinDataType {
	if x != nil {
		return x.JoinDataType
	}
	return nil
}

// Relation of type [[SetOperation]]
type SetOperation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Left input relation for a Set operation.
	LeftInput *Relation `protobuf:"bytes,1,opt,name=left_input,json=leftInput,proto3" json:"left_input,omitempty"`
	// (Required) Right input relation for a Set operation.
	RightInput *Relation `protobuf:"bytes,2,opt,name=right_input,json=rightInput,proto3" json:"right_input,omitempty"`
	// (Required) The Set operation type.
	SetOpType SetOperation_SetOpType `protobuf:"varint,3,opt,name=set_op_type,json=setOpType,proto3,enum=spark.connect.SetOperation_SetOpType" json:"set_op_type,omitempty"`
	// (Optional) If to remove duplicate rows.
	//
	// True to preserve all results.
	// False to remove duplicate rows.
	IsAll *bool `protobuf:"varint,4,opt,name=is_all,json=isAll,proto3,oneof" json:"is_all,omitempty"`
	// (Optional) If to perform the Set operation based on name resolution.
	//
	// Only UNION supports this option.
	ByName *bool `protobuf:"varint,5,opt,name=by_name,json=byName,proto3,oneof" json:"by_name,omitempty"`
	// (Optional) If to perform the Set operation and allow missing columns.
	//
	// Only UNION supports this option.
	AllowMissingColumns *bool `protobuf:"varint,6,opt,name=allow_missing_columns,json=allowMissingColumns,proto3,oneof" json:"allow_missing_columns,omitempty"`
}

func (x *SetOperation) Reset() {
	*x = SetOperation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[11]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SetOperation) ProtoMessage() {}

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

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

func (x *SetOperation) GetLeftInput() *Relation {
	if x != nil {
		return x.LeftInput
	}
	return nil
}

func (x *SetOperation) GetRightInput() *Relation {
	if x != nil {
		return x.RightInput
	}
	return nil
}

func (x *SetOperation) GetSetOpType() SetOperation_SetOpType {
	if x != nil {
		return x.SetOpType
	}
	return SetOperation_SET_OP_TYPE_UNSPECIFIED
}

func (x *SetOperation) GetIsAll() bool {
	if x != nil && x.IsAll != nil {
		return *x.IsAll
	}
	return false
}

func (x *SetOperation) GetByName() bool {
	if x != nil && x.ByName != nil {
		return *x.ByName
	}
	return false
}

func (x *SetOperation) GetAllowMissingColumns() bool {
	if x != nil && x.AllowMissingColumns != nil {
		return *x.AllowMissingColumns
	}
	return false
}

// Relation of type [[Limit]] that is used to `limit` rows from the input relation.
type Limit struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for a Limit.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) the limit.
	Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
}

func (x *Limit) Reset() {
	*x = Limit{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[12]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Limit) ProtoMessage() {}

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

// Deprecated: Use Limit.ProtoReflect.Descriptor instead.
func (*Limit) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{12}
}

func (x *Limit) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

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

// Relation of type [[Offset]] that is used to read rows staring from the `offset` on
// the input relation.
type Offset struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for an Offset.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) the limit.
	Offset int32 `protobuf:"varint,2,opt,name=offset,proto3" json:"offset,omitempty"`
}

func (x *Offset) Reset() {
	*x = Offset{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[13]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Offset) ProtoMessage() {}

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

// Deprecated: Use Offset.ProtoReflect.Descriptor instead.
func (*Offset) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{13}
}

func (x *Offset) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

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

// Relation of type [[Tail]] that is used to fetch `limit` rows from the last of the input relation.
type Tail struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for an Tail.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) the limit.
	Limit int32 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
}

func (x *Tail) Reset() {
	*x = Tail{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[14]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Tail) ProtoMessage() {}

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

// Deprecated: Use Tail.ProtoReflect.Descriptor instead.
func (*Tail) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{14}
}

func (x *Tail) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

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

// Relation of type [[Aggregate]].
type Aggregate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for a RelationalGroupedDataset.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) How the RelationalGroupedDataset was built.
	GroupType Aggregate_GroupType `protobuf:"varint,2,opt,name=group_type,json=groupType,proto3,enum=spark.connect.Aggregate_GroupType" json:"group_type,omitempty"`
	// (Required) Expressions for grouping keys
	GroupingExpressions []*Expression `protobuf:"bytes,3,rep,name=grouping_expressions,json=groupingExpressions,proto3" json:"grouping_expressions,omitempty"`
	// (Required) List of values that will be translated to columns in the output DataFrame.
	AggregateExpressions []*Expression `protobuf:"bytes,4,rep,name=aggregate_expressions,json=aggregateExpressions,proto3" json:"aggregate_expressions,omitempty"`
	// (Optional) Pivots a column of the current `DataFrame` and performs the specified aggregation.
	Pivot *Aggregate_Pivot `protobuf:"bytes,5,opt,name=pivot,proto3" json:"pivot,omitempty"`
	// (Optional) List of values that will be translated to columns in the output DataFrame.
	GroupingSets []*Aggregate_GroupingSets `protobuf:"bytes,6,rep,name=grouping_sets,json=groupingSets,proto3" json:"grouping_sets,omitempty"`
}

func (x *Aggregate) Reset() {
	*x = Aggregate{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[15]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Aggregate) ProtoMessage() {}

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

// Deprecated: Use Aggregate.ProtoReflect.Descriptor instead.
func (*Aggregate) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{15}
}

func (x *Aggregate) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Aggregate) GetGroupType() Aggregate_GroupType {
	if x != nil {
		return x.GroupType
	}
	return Aggregate_GROUP_TYPE_UNSPECIFIED
}

func (x *Aggregate) GetGroupingExpressions() []*Expression {
	if x != nil {
		return x.GroupingExpressions
	}
	return nil
}

func (x *Aggregate) GetAggregateExpressions() []*Expression {
	if x != nil {
		return x.AggregateExpressions
	}
	return nil
}

func (x *Aggregate) GetPivot() *Aggregate_Pivot {
	if x != nil {
		return x.Pivot
	}
	return nil
}

func (x *Aggregate) GetGroupingSets() []*Aggregate_GroupingSets {
	if x != nil {
		return x.GroupingSets
	}
	return nil
}

// Relation of type [[Sort]].
type Sort struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for a Sort.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The ordering expressions
	Order []*Expression_SortOrder `protobuf:"bytes,2,rep,name=order,proto3" json:"order,omitempty"`
	// (Optional) if this is a global sort.
	IsGlobal *bool `protobuf:"varint,3,opt,name=is_global,json=isGlobal,proto3,oneof" json:"is_global,omitempty"`
}

func (x *Sort) Reset() {
	*x = Sort{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[16]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Sort) ProtoMessage() {}

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

// Deprecated: Use Sort.ProtoReflect.Descriptor instead.
func (*Sort) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{16}
}

func (x *Sort) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Sort) GetOrder() []*Expression_SortOrder {
	if x != nil {
		return x.Order
	}
	return nil
}

func (x *Sort) GetIsGlobal() bool {
	if x != nil && x.IsGlobal != nil {
		return *x.IsGlobal
	}
	return false
}

// Drop specified columns.
type Drop struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Optional) columns to drop.
	Columns []*Expression `protobuf:"bytes,2,rep,name=columns,proto3" json:"columns,omitempty"`
	// (Optional) names of columns to drop.
	ColumnNames []string `protobuf:"bytes,3,rep,name=column_names,json=columnNames,proto3" json:"column_names,omitempty"`
}

func (x *Drop) Reset() {
	*x = Drop{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[17]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Drop) ProtoMessage() {}

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

// Deprecated: Use Drop.ProtoReflect.Descriptor instead.
func (*Drop) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{17}
}

func (x *Drop) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Drop) GetColumns() []*Expression {
	if x != nil {
		return x.Columns
	}
	return nil
}

func (x *Drop) GetColumnNames() []string {
	if x != nil {
		return x.ColumnNames
	}
	return nil
}

// Relation of type [[Deduplicate]] which have duplicate rows removed, could consider either only
// the subset of columns or all the columns.
type Deduplicate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for a Deduplicate.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Optional) Deduplicate based on a list of column names.
	//
	// This field does not co-use with `all_columns_as_keys`.
	ColumnNames []string `protobuf:"bytes,2,rep,name=column_names,json=columnNames,proto3" json:"column_names,omitempty"`
	// (Optional) Deduplicate based on all the columns of the input relation.
	//
	// This field does not co-use with `column_names`.
	AllColumnsAsKeys *bool `protobuf:"varint,3,opt,name=all_columns_as_keys,json=allColumnsAsKeys,proto3,oneof" json:"all_columns_as_keys,omitempty"`
	// (Optional) Deduplicate within the time range of watermark.
	WithinWatermark *bool `protobuf:"varint,4,opt,name=within_watermark,json=withinWatermark,proto3,oneof" json:"within_watermark,omitempty"`
}

func (x *Deduplicate) Reset() {
	*x = Deduplicate{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[18]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Deduplicate) ProtoMessage() {}

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

// Deprecated: Use Deduplicate.ProtoReflect.Descriptor instead.
func (*Deduplicate) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{18}
}

func (x *Deduplicate) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Deduplicate) GetColumnNames() []string {
	if x != nil {
		return x.ColumnNames
	}
	return nil
}

func (x *Deduplicate) GetAllColumnsAsKeys() bool {
	if x != nil && x.AllColumnsAsKeys != nil {
		return *x.AllColumnsAsKeys
	}
	return false
}

func (x *Deduplicate) GetWithinWatermark() bool {
	if x != nil && x.WithinWatermark != nil {
		return *x.WithinWatermark
	}
	return false
}

// A relation that does not need to be qualified by name.
type LocalRelation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Optional) Local collection data serialized into Arrow IPC streaming format which contains
	// the schema of the data.
	Data []byte `protobuf:"bytes,1,opt,name=data,proto3,oneof" json:"data,omitempty"`
	// (Optional) The schema of local data.
	// It should be either a DDL-formatted type string or a JSON string.
	//
	// The server side will update the column names and data types according to this schema.
	// If the 'data' is not provided, then this schema will be required.
	Schema *string `protobuf:"bytes,2,opt,name=schema,proto3,oneof" json:"schema,omitempty"`
}

func (x *LocalRelation) Reset() {
	*x = LocalRelation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[19]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LocalRelation) ProtoMessage() {}

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

// Deprecated: Use LocalRelation.ProtoReflect.Descriptor instead.
func (*LocalRelation) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{19}
}

func (x *LocalRelation) GetData() []byte {
	if x != nil {
		return x.Data
	}
	return nil
}

func (x *LocalRelation) GetSchema() string {
	if x != nil && x.Schema != nil {
		return *x.Schema
	}
	return ""
}

// A local relation that has been cached already.
type CachedLocalRelation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) A sha-256 hash of the serialized local relation in proto, see LocalRelation.
	Hash string `protobuf:"bytes,3,opt,name=hash,proto3" json:"hash,omitempty"`
}

func (x *CachedLocalRelation) Reset() {
	*x = CachedLocalRelation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[20]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CachedLocalRelation) ProtoMessage() {}

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

// Deprecated: Use CachedLocalRelation.ProtoReflect.Descriptor instead.
func (*CachedLocalRelation) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{20}
}

func (x *CachedLocalRelation) GetHash() string {
	if x != nil {
		return x.Hash
	}
	return ""
}

// Represents a remote relation that has been cached on server.
type CachedRemoteRelation struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) ID of the remote related (assigned by the service).
	RelationId string `protobuf:"bytes,1,opt,name=relation_id,json=relationId,proto3" json:"relation_id,omitempty"`
}

func (x *CachedRemoteRelation) Reset() {
	*x = CachedRemoteRelation{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[21]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CachedRemoteRelation) ProtoMessage() {}

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

// Deprecated: Use CachedRemoteRelation.ProtoReflect.Descriptor instead.
func (*CachedRemoteRelation) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{21}
}

func (x *CachedRemoteRelation) GetRelationId() string {
	if x != nil {
		return x.RelationId
	}
	return ""
}

// Relation of type [[Sample]] that samples a fraction of the dataset.
type Sample struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for a Sample.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) lower bound.
	LowerBound float64 `protobuf:"fixed64,2,opt,name=lower_bound,json=lowerBound,proto3" json:"lower_bound,omitempty"`
	// (Required) upper bound.
	UpperBound float64 `protobuf:"fixed64,3,opt,name=upper_bound,json=upperBound,proto3" json:"upper_bound,omitempty"`
	// (Optional) Whether to sample with replacement.
	WithReplacement *bool `protobuf:"varint,4,opt,name=with_replacement,json=withReplacement,proto3,oneof" json:"with_replacement,omitempty"`
	// (Required) The random seed.
	// This field is required to avoid generating mutable dataframes (see SPARK-48184 for details),
	// however, still keep it 'optional' here for backward compatibility.
	Seed *int64 `protobuf:"varint,5,opt,name=seed,proto3,oneof" json:"seed,omitempty"`
	// (Required) Explicitly sort the underlying plan to make the ordering deterministic or cache it.
	// This flag is true when invoking `dataframe.randomSplit` to randomly splits DataFrame with the
	// provided weights. Otherwise, it is false.
	DeterministicOrder bool `protobuf:"varint,6,opt,name=deterministic_order,json=deterministicOrder,proto3" json:"deterministic_order,omitempty"`
}

func (x *Sample) Reset() {
	*x = Sample{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[22]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Sample) ProtoMessage() {}

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

// Deprecated: Use Sample.ProtoReflect.Descriptor instead.
func (*Sample) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{22}
}

func (x *Sample) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Sample) GetLowerBound() float64 {
	if x != nil {
		return x.LowerBound
	}
	return 0
}

func (x *Sample) GetUpperBound() float64 {
	if x != nil {
		return x.UpperBound
	}
	return 0
}

func (x *Sample) GetWithReplacement() bool {
	if x != nil && x.WithReplacement != nil {
		return *x.WithReplacement
	}
	return false
}

func (x *Sample) GetSeed() int64 {
	if x != nil && x.Seed != nil {
		return *x.Seed
	}
	return 0
}

func (x *Sample) GetDeterministicOrder() bool {
	if x != nil {
		return x.DeterministicOrder
	}
	return false
}

// Relation of type [[Range]] that generates a sequence of integers.
type Range struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Optional) Default value = 0
	Start *int64 `protobuf:"varint,1,opt,name=start,proto3,oneof" json:"start,omitempty"`
	// (Required)
	End int64 `protobuf:"varint,2,opt,name=end,proto3" json:"end,omitempty"`
	// (Required)
	Step int64 `protobuf:"varint,3,opt,name=step,proto3" json:"step,omitempty"`
	// Optional. Default value is assigned by 1) SQL conf "spark.sql.leafNodeDefaultParallelism" if
	// it is set, or 2) spark default parallelism.
	NumPartitions *int32 `protobuf:"varint,4,opt,name=num_partitions,json=numPartitions,proto3,oneof" json:"num_partitions,omitempty"`
}

func (x *Range) Reset() {
	*x = Range{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[23]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Range) ProtoMessage() {}

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

// Deprecated: Use Range.ProtoReflect.Descriptor instead.
func (*Range) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{23}
}

func (x *Range) GetStart() int64 {
	if x != nil && x.Start != nil {
		return *x.Start
	}
	return 0
}

func (x *Range) GetEnd() int64 {
	if x != nil {
		return x.End
	}
	return 0
}

func (x *Range) GetStep() int64 {
	if x != nil {
		return x.Step
	}
	return 0
}

func (x *Range) GetNumPartitions() int32 {
	if x != nil && x.NumPartitions != nil {
		return *x.NumPartitions
	}
	return 0
}

// Relation alias.
type SubqueryAlias struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation of SubqueryAlias.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The alias.
	Alias string `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"`
	// (Optional) Qualifier of the alias.
	Qualifier []string `protobuf:"bytes,3,rep,name=qualifier,proto3" json:"qualifier,omitempty"`
}

func (x *SubqueryAlias) Reset() {
	*x = SubqueryAlias{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[24]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*SubqueryAlias) ProtoMessage() {}

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

// Deprecated: Use SubqueryAlias.ProtoReflect.Descriptor instead.
func (*SubqueryAlias) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{24}
}

func (x *SubqueryAlias) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *SubqueryAlias) GetAlias() string {
	if x != nil {
		return x.Alias
	}
	return ""
}

func (x *SubqueryAlias) GetQualifier() []string {
	if x != nil {
		return x.Qualifier
	}
	return nil
}

// Relation repartition.
type Repartition struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation of Repartition.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Must be positive.
	NumPartitions int32 `protobuf:"varint,2,opt,name=num_partitions,json=numPartitions,proto3" json:"num_partitions,omitempty"`
	// (Optional) Default value is false.
	Shuffle *bool `protobuf:"varint,3,opt,name=shuffle,proto3,oneof" json:"shuffle,omitempty"`
}

func (x *Repartition) Reset() {
	*x = Repartition{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[25]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Repartition) ProtoMessage() {}

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

// Deprecated: Use Repartition.ProtoReflect.Descriptor instead.
func (*Repartition) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{25}
}

func (x *Repartition) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Repartition) GetNumPartitions() int32 {
	if x != nil {
		return x.NumPartitions
	}
	return 0
}

func (x *Repartition) GetShuffle() bool {
	if x != nil && x.Shuffle != nil {
		return *x.Shuffle
	}
	return false
}

// Compose the string representing rows for output.
// It will invoke 'Dataset.showString' to compute the results.
type ShowString struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Number of rows to show.
	NumRows int32 `protobuf:"varint,2,opt,name=num_rows,json=numRows,proto3" json:"num_rows,omitempty"`
	// (Required) If set to more than 0, truncates strings to
	// `truncate` characters and all cells will be aligned right.
	Truncate int32 `protobuf:"varint,3,opt,name=truncate,proto3" json:"truncate,omitempty"`
	// (Required) If set to true, prints output rows vertically (one line per column value).
	Vertical bool `protobuf:"varint,4,opt,name=vertical,proto3" json:"vertical,omitempty"`
}

func (x *ShowString) Reset() {
	*x = ShowString{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[26]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ShowString) ProtoMessage() {}

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

// Deprecated: Use ShowString.ProtoReflect.Descriptor instead.
func (*ShowString) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{26}
}

func (x *ShowString) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *ShowString) GetNumRows() int32 {
	if x != nil {
		return x.NumRows
	}
	return 0
}

func (x *ShowString) GetTruncate() int32 {
	if x != nil {
		return x.Truncate
	}
	return 0
}

func (x *ShowString) GetVertical() bool {
	if x != nil {
		return x.Vertical
	}
	return false
}

// Compose the string representing rows for output.
// It will invoke 'Dataset.htmlString' to compute the results.
type HtmlString struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Number of rows to show.
	NumRows int32 `protobuf:"varint,2,opt,name=num_rows,json=numRows,proto3" json:"num_rows,omitempty"`
	// (Required) If set to more than 0, truncates strings to
	// `truncate` characters and all cells will be aligned right.
	Truncate int32 `protobuf:"varint,3,opt,name=truncate,proto3" json:"truncate,omitempty"`
}

func (x *HtmlString) Reset() {
	*x = HtmlString{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[27]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*HtmlString) ProtoMessage() {}

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

// Deprecated: Use HtmlString.ProtoReflect.Descriptor instead.
func (*HtmlString) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{27}
}

func (x *HtmlString) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *HtmlString) GetNumRows() int32 {
	if x != nil {
		return x.NumRows
	}
	return 0
}

func (x *HtmlString) GetTruncate() int32 {
	if x != nil {
		return x.Truncate
	}
	return 0
}

// Computes specified statistics for numeric and string columns.
// It will invoke 'Dataset.summary' (same as 'StatFunctions.summary')
// to compute the results.
type StatSummary struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Optional) Statistics from to be computed.
	//
	// Available statistics are:
	//
	//	count
	//	mean
	//	stddev
	//	min
	//	max
	//	arbitrary approximate percentiles specified as a percentage (e.g. 75%)
	//	count_distinct
	//	approx_count_distinct
	//
	// If no statistics are given, this function computes 'count', 'mean', 'stddev', 'min',
	// 'approximate quartiles' (percentiles at 25%, 50%, and 75%), and 'max'.
	Statistics []string `protobuf:"bytes,2,rep,name=statistics,proto3" json:"statistics,omitempty"`
}

func (x *StatSummary) Reset() {
	*x = StatSummary{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[28]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatSummary) ProtoMessage() {}

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

// Deprecated: Use StatSummary.ProtoReflect.Descriptor instead.
func (*StatSummary) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{28}
}

func (x *StatSummary) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *StatSummary) GetStatistics() []string {
	if x != nil {
		return x.Statistics
	}
	return nil
}

// Computes basic statistics for numeric and string columns, including count, mean, stddev, min,
// and max. If no columns are given, this function computes statistics for all numerical or
// string columns.
type StatDescribe struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Optional) Columns to compute statistics on.
	Cols []string `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"`
}

func (x *StatDescribe) Reset() {
	*x = StatDescribe{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[29]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatDescribe) ProtoMessage() {}

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

// Deprecated: Use StatDescribe.ProtoReflect.Descriptor instead.
func (*StatDescribe) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{29}
}

func (x *StatDescribe) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *StatDescribe) GetCols() []string {
	if x != nil {
		return x.Cols
	}
	return nil
}

// Computes a pair-wise frequency table of the given columns. Also known as a contingency table.
// It will invoke 'Dataset.stat.crosstab' (same as 'StatFunctions.crossTabulate')
// to compute the results.
type StatCrosstab struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The name of the first column.
	//
	// Distinct items will make the first item of each row.
	Col1 string `protobuf:"bytes,2,opt,name=col1,proto3" json:"col1,omitempty"`
	// (Required) The name of the second column.
	//
	// Distinct items will make the column names of the DataFrame.
	Col2 string `protobuf:"bytes,3,opt,name=col2,proto3" json:"col2,omitempty"`
}

func (x *StatCrosstab) Reset() {
	*x = StatCrosstab{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[30]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatCrosstab) ProtoMessage() {}

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

// Deprecated: Use StatCrosstab.ProtoReflect.Descriptor instead.
func (*StatCrosstab) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{30}
}

func (x *StatCrosstab) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *StatCrosstab) GetCol1() string {
	if x != nil {
		return x.Col1
	}
	return ""
}

func (x *StatCrosstab) GetCol2() string {
	if x != nil {
		return x.Col2
	}
	return ""
}

// Calculate the sample covariance of two numerical columns of a DataFrame.
// It will invoke 'Dataset.stat.cov' (same as 'StatFunctions.calculateCov') to compute the results.
type StatCov struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The name of the first column.
	Col1 string `protobuf:"bytes,2,opt,name=col1,proto3" json:"col1,omitempty"`
	// (Required) The name of the second column.
	Col2 string `protobuf:"bytes,3,opt,name=col2,proto3" json:"col2,omitempty"`
}

func (x *StatCov) Reset() {
	*x = StatCov{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[31]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatCov) ProtoMessage() {}

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

// Deprecated: Use StatCov.ProtoReflect.Descriptor instead.
func (*StatCov) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{31}
}

func (x *StatCov) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *StatCov) GetCol1() string {
	if x != nil {
		return x.Col1
	}
	return ""
}

func (x *StatCov) GetCol2() string {
	if x != nil {
		return x.Col2
	}
	return ""
}

// Calculates the correlation of two columns of a DataFrame. Currently only supports the Pearson
// Correlation Coefficient. It will invoke 'Dataset.stat.corr' (same as
// 'StatFunctions.pearsonCorrelation') to compute the results.
type StatCorr struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The name of the first column.
	Col1 string `protobuf:"bytes,2,opt,name=col1,proto3" json:"col1,omitempty"`
	// (Required) The name of the second column.
	Col2 string `protobuf:"bytes,3,opt,name=col2,proto3" json:"col2,omitempty"`
	// (Optional) Default value is 'pearson'.
	//
	// Currently only supports the Pearson Correlation Coefficient.
	Method *string `protobuf:"bytes,4,opt,name=method,proto3,oneof" json:"method,omitempty"`
}

func (x *StatCorr) Reset() {
	*x = StatCorr{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[32]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatCorr) ProtoMessage() {}

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

// Deprecated: Use StatCorr.ProtoReflect.Descriptor instead.
func (*StatCorr) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{32}
}

func (x *StatCorr) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *StatCorr) GetCol1() string {
	if x != nil {
		return x.Col1
	}
	return ""
}

func (x *StatCorr) GetCol2() string {
	if x != nil {
		return x.Col2
	}
	return ""
}

func (x *StatCorr) GetMethod() string {
	if x != nil && x.Method != nil {
		return *x.Method
	}
	return ""
}

// Calculates the approximate quantiles of numerical columns of a DataFrame.
// It will invoke 'Dataset.stat.approxQuantile' (same as 'StatFunctions.approxQuantile')
// to compute the results.
type StatApproxQuantile struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The names of the numerical columns.
	Cols []string `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"`
	// (Required) A list of quantile probabilities.
	//
	// Each number must belong to [0, 1].
	// For example 0 is the minimum, 0.5 is the median, 1 is the maximum.
	Probabilities []float64 `protobuf:"fixed64,3,rep,packed,name=probabilities,proto3" json:"probabilities,omitempty"`
	// (Required) The relative target precision to achieve (greater than or equal to 0).
	//
	// If set to zero, the exact quantiles are computed, which could be very expensive.
	// Note that values greater than 1 are accepted but give the same result as 1.
	RelativeError float64 `protobuf:"fixed64,4,opt,name=relative_error,json=relativeError,proto3" json:"relative_error,omitempty"`
}

func (x *StatApproxQuantile) Reset() {
	*x = StatApproxQuantile{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[33]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatApproxQuantile) ProtoMessage() {}

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

// Deprecated: Use StatApproxQuantile.ProtoReflect.Descriptor instead.
func (*StatApproxQuantile) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{33}
}

func (x *StatApproxQuantile) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *StatApproxQuantile) GetCols() []string {
	if x != nil {
		return x.Cols
	}
	return nil
}

func (x *StatApproxQuantile) GetProbabilities() []float64 {
	if x != nil {
		return x.Probabilities
	}
	return nil
}

func (x *StatApproxQuantile) GetRelativeError() float64 {
	if x != nil {
		return x.RelativeError
	}
	return 0
}

// Finding frequent items for columns, possibly with false positives.
// It will invoke 'Dataset.stat.freqItems' (same as 'StatFunctions.freqItems')
// to compute the results.
type StatFreqItems struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The names of the columns to search frequent items in.
	Cols []string `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"`
	// (Optional) The minimum frequency for an item to be considered `frequent`.
	// Should be greater than 1e-4.
	Support *float64 `protobuf:"fixed64,3,opt,name=support,proto3,oneof" json:"support,omitempty"`
}

func (x *StatFreqItems) Reset() {
	*x = StatFreqItems{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[34]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatFreqItems) ProtoMessage() {}

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

// Deprecated: Use StatFreqItems.ProtoReflect.Descriptor instead.
func (*StatFreqItems) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{34}
}

func (x *StatFreqItems) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *StatFreqItems) GetCols() []string {
	if x != nil {
		return x.Cols
	}
	return nil
}

func (x *StatFreqItems) GetSupport() float64 {
	if x != nil && x.Support != nil {
		return *x.Support
	}
	return 0
}

// Returns a stratified sample without replacement based on the fraction
// given on each stratum.
// It will invoke 'Dataset.stat.freqItems' (same as 'StatFunctions.freqItems')
// to compute the results.
type StatSampleBy struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The column that defines strata.
	Col *Expression `protobuf:"bytes,2,opt,name=col,proto3" json:"col,omitempty"`
	// (Required) Sampling fraction for each stratum.
	//
	// If a stratum is not specified, we treat its fraction as zero.
	Fractions []*StatSampleBy_Fraction `protobuf:"bytes,3,rep,name=fractions,proto3" json:"fractions,omitempty"`
	// (Required) The random seed.
	// This field is required to avoid generating mutable dataframes (see SPARK-48184 for details),
	// however, still keep it 'optional' here for backward compatibility.
	Seed *int64 `protobuf:"varint,5,opt,name=seed,proto3,oneof" json:"seed,omitempty"`
}

func (x *StatSampleBy) Reset() {
	*x = StatSampleBy{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[35]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatSampleBy) ProtoMessage() {}

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

// Deprecated: Use StatSampleBy.ProtoReflect.Descriptor instead.
func (*StatSampleBy) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{35}
}

func (x *StatSampleBy) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *StatSampleBy) GetCol() *Expression {
	if x != nil {
		return x.Col
	}
	return nil
}

func (x *StatSampleBy) GetFractions() []*StatSampleBy_Fraction {
	if x != nil {
		return x.Fractions
	}
	return nil
}

func (x *StatSampleBy) GetSeed() int64 {
	if x != nil && x.Seed != nil {
		return *x.Seed
	}
	return 0
}

// Replaces null values.
// It will invoke 'Dataset.na.fill' (same as 'DataFrameNaFunctions.fill') to compute the results.
// Following 3 parameter combinations are supported:
//
//	1, 'values' only contains 1 item, 'cols' is empty:
//	  replaces null values in all type-compatible columns.
//	2, 'values' only contains 1 item, 'cols' is not empty:
//	  replaces null values in specified columns.
//	3, 'values' contains more than 1 items, then 'cols' is required to have the same length:
//	  replaces each specified column with corresponding value.
type NAFill struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Optional) Optional list of column names to consider.
	Cols []string `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"`
	// (Required) Values to replace null values with.
	//
	// Should contain at least 1 item.
	// Only 4 data types are supported now: bool, long, double, string
	Values []*Expression_Literal `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"`
}

func (x *NAFill) Reset() {
	*x = NAFill{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[36]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*NAFill) ProtoMessage() {}

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

// Deprecated: Use NAFill.ProtoReflect.Descriptor instead.
func (*NAFill) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{36}
}

func (x *NAFill) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *NAFill) GetCols() []string {
	if x != nil {
		return x.Cols
	}
	return nil
}

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

// Drop rows containing null values.
// It will invoke 'Dataset.na.drop' (same as 'DataFrameNaFunctions.drop') to compute the results.
type NADrop struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Optional) Optional list of column names to consider.
	//
	// When it is empty, all the columns in the input relation will be considered.
	Cols []string `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"`
	// (Optional) The minimum number of non-null and non-NaN values required to keep.
	//
	// When not set, it is equivalent to the number of considered columns, which means
	// a row will be kept only if all columns are non-null.
	//
	// 'how' options ('all', 'any') can be easily converted to this field:
	//   - 'all' -> set 'min_non_nulls' 1;
	//   - 'any' -> keep 'min_non_nulls' unset;
	MinNonNulls *int32 `protobuf:"varint,3,opt,name=min_non_nulls,json=minNonNulls,proto3,oneof" json:"min_non_nulls,omitempty"`
}

func (x *NADrop) Reset() {
	*x = NADrop{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[37]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*NADrop) ProtoMessage() {}

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

// Deprecated: Use NADrop.ProtoReflect.Descriptor instead.
func (*NADrop) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{37}
}

func (x *NADrop) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *NADrop) GetCols() []string {
	if x != nil {
		return x.Cols
	}
	return nil
}

func (x *NADrop) GetMinNonNulls() int32 {
	if x != nil && x.MinNonNulls != nil {
		return *x.MinNonNulls
	}
	return 0
}

// Replaces old values with the corresponding values.
// It will invoke 'Dataset.na.replace' (same as 'DataFrameNaFunctions.replace')
// to compute the results.
type NAReplace struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Optional) List of column names to consider.
	//
	// When it is empty, all the type-compatible columns in the input relation will be considered.
	Cols []string `protobuf:"bytes,2,rep,name=cols,proto3" json:"cols,omitempty"`
	// (Optional) The value replacement mapping.
	Replacements []*NAReplace_Replacement `protobuf:"bytes,3,rep,name=replacements,proto3" json:"replacements,omitempty"`
}

func (x *NAReplace) Reset() {
	*x = NAReplace{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[38]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*NAReplace) ProtoMessage() {}

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

// Deprecated: Use NAReplace.ProtoReflect.Descriptor instead.
func (*NAReplace) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{38}
}

func (x *NAReplace) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *NAReplace) GetCols() []string {
	if x != nil {
		return x.Cols
	}
	return nil
}

func (x *NAReplace) GetReplacements() []*NAReplace_Replacement {
	if x != nil {
		return x.Replacements
	}
	return nil
}

// Rename columns on the input relation by the same length of names.
type ToDF struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation of RenameColumnsBySameLengthNames.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required)
	//
	// The number of columns of the input relation must be equal to the length
	// of this field. If this is not true, an exception will be returned.
	ColumnNames []string `protobuf:"bytes,2,rep,name=column_names,json=columnNames,proto3" json:"column_names,omitempty"`
}

func (x *ToDF) Reset() {
	*x = ToDF{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[39]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ToDF) ProtoMessage() {}

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

// Deprecated: Use ToDF.ProtoReflect.Descriptor instead.
func (*ToDF) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{39}
}

func (x *ToDF) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *ToDF) GetColumnNames() []string {
	if x != nil {
		return x.ColumnNames
	}
	return nil
}

// Rename columns on the input relation by a map with name to name mapping.
type WithColumnsRenamed struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Optional)
	//
	// Renaming column names of input relation from A to B where A is the map key
	// and B is the map value. This is a no-op if schema doesn't contain any A. It
	// does not require that all input relation column names to present as keys.
	// duplicated B are not allowed.
	//
	// Deprecated: Marked as deprecated in spark/connect/relations.proto.
	RenameColumnsMap map[string]string            `protobuf:"bytes,2,rep,name=rename_columns_map,json=renameColumnsMap,proto3" json:"rename_columns_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Renames          []*WithColumnsRenamed_Rename `protobuf:"bytes,3,rep,name=renames,proto3" json:"renames,omitempty"`
}

func (x *WithColumnsRenamed) Reset() {
	*x = WithColumnsRenamed{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[40]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithColumnsRenamed) ProtoMessage() {}

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

// Deprecated: Use WithColumnsRenamed.ProtoReflect.Descriptor instead.
func (*WithColumnsRenamed) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{40}
}

func (x *WithColumnsRenamed) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

// Deprecated: Marked as deprecated in spark/connect/relations.proto.
func (x *WithColumnsRenamed) GetRenameColumnsMap() map[string]string {
	if x != nil {
		return x.RenameColumnsMap
	}
	return nil
}

func (x *WithColumnsRenamed) GetRenames() []*WithColumnsRenamed_Rename {
	if x != nil {
		return x.Renames
	}
	return nil
}

// Adding columns or replacing the existing columns that have the same names.
type WithColumns struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required)
	//
	// Given a column name, apply the corresponding expression on the column. If column
	// name exists in the input relation, then replace the column. If the column name
	// does not exist in the input relation, then adds it as a new column.
	//
	// Only one name part is expected from each Expression.Alias.
	//
	// An exception is thrown when duplicated names are present in the mapping.
	Aliases []*Expression_Alias `protobuf:"bytes,2,rep,name=aliases,proto3" json:"aliases,omitempty"`
}

func (x *WithColumns) Reset() {
	*x = WithColumns{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[41]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithColumns) ProtoMessage() {}

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

// Deprecated: Use WithColumns.ProtoReflect.Descriptor instead.
func (*WithColumns) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{41}
}

func (x *WithColumns) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *WithColumns) GetAliases() []*Expression_Alias {
	if x != nil {
		return x.Aliases
	}
	return nil
}

type WithWatermark struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Name of the column containing event time.
	EventTime string `protobuf:"bytes,2,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"`
	// (Required)
	DelayThreshold string `protobuf:"bytes,3,opt,name=delay_threshold,json=delayThreshold,proto3" json:"delay_threshold,omitempty"`
}

func (x *WithWatermark) Reset() {
	*x = WithWatermark{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[42]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithWatermark) ProtoMessage() {}

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

// Deprecated: Use WithWatermark.ProtoReflect.Descriptor instead.
func (*WithWatermark) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{42}
}

func (x *WithWatermark) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *WithWatermark) GetEventTime() string {
	if x != nil {
		return x.EventTime
	}
	return ""
}

func (x *WithWatermark) GetDelayThreshold() string {
	if x != nil {
		return x.DelayThreshold
	}
	return ""
}

// Specify a hint over a relation. Hint should have a name and optional parameters.
type Hint struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Hint name.
	//
	// Supported Join hints include BROADCAST, MERGE, SHUFFLE_HASH, SHUFFLE_REPLICATE_NL.
	//
	// Supported partitioning hints include COALESCE, REPARTITION, REPARTITION_BY_RANGE.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// (Optional) Hint parameters.
	Parameters []*Expression `protobuf:"bytes,3,rep,name=parameters,proto3" json:"parameters,omitempty"`
}

func (x *Hint) Reset() {
	*x = Hint{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[43]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Hint) ProtoMessage() {}

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

// Deprecated: Use Hint.ProtoReflect.Descriptor instead.
func (*Hint) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{43}
}

func (x *Hint) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

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

func (x *Hint) GetParameters() []*Expression {
	if x != nil {
		return x.Parameters
	}
	return nil
}

// Unpivot a DataFrame from wide format to long format, optionally leaving identifier columns set.
type Unpivot struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Id columns.
	Ids []*Expression `protobuf:"bytes,2,rep,name=ids,proto3" json:"ids,omitempty"`
	// (Optional) Value columns to unpivot.
	Values *Unpivot_Values `protobuf:"bytes,3,opt,name=values,proto3,oneof" json:"values,omitempty"`
	// (Required) Name of the variable column.
	VariableColumnName string `protobuf:"bytes,4,opt,name=variable_column_name,json=variableColumnName,proto3" json:"variable_column_name,omitempty"`
	// (Required) Name of the value column.
	ValueColumnName string `protobuf:"bytes,5,opt,name=value_column_name,json=valueColumnName,proto3" json:"value_column_name,omitempty"`
}

func (x *Unpivot) Reset() {
	*x = Unpivot{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[44]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Unpivot) ProtoMessage() {}

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

// Deprecated: Use Unpivot.ProtoReflect.Descriptor instead.
func (*Unpivot) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{44}
}

func (x *Unpivot) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Unpivot) GetIds() []*Expression {
	if x != nil {
		return x.Ids
	}
	return nil
}

func (x *Unpivot) GetValues() *Unpivot_Values {
	if x != nil {
		return x.Values
	}
	return nil
}

func (x *Unpivot) GetVariableColumnName() string {
	if x != nil {
		return x.VariableColumnName
	}
	return ""
}

func (x *Unpivot) GetValueColumnName() string {
	if x != nil {
		return x.ValueColumnName
	}
	return ""
}

// Transpose a DataFrame, switching rows to columns.
// Transforms the DataFrame such that the values in the specified index column
// become the new columns of the DataFrame.
type Transpose struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Optional) A list of columns that will be treated as the indices.
	// Only single column is supported now.
	IndexColumns []*Expression `protobuf:"bytes,2,rep,name=index_columns,json=indexColumns,proto3" json:"index_columns,omitempty"`
}

func (x *Transpose) Reset() {
	*x = Transpose{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[45]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Transpose) ProtoMessage() {}

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

// Deprecated: Use Transpose.ProtoReflect.Descriptor instead.
func (*Transpose) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{45}
}

func (x *Transpose) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Transpose) GetIndexColumns() []*Expression {
	if x != nil {
		return x.IndexColumns
	}
	return nil
}

type UnresolvedTableValuedFunction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) name (or unparsed name for user defined function) for the unresolved function.
	FunctionName string `protobuf:"bytes,1,opt,name=function_name,json=functionName,proto3" json:"function_name,omitempty"`
	// (Optional) Function arguments. Empty arguments are allowed.
	Arguments []*Expression `protobuf:"bytes,2,rep,name=arguments,proto3" json:"arguments,omitempty"`
}

func (x *UnresolvedTableValuedFunction) Reset() {
	*x = UnresolvedTableValuedFunction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[46]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*UnresolvedTableValuedFunction) ProtoMessage() {}

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

// Deprecated: Use UnresolvedTableValuedFunction.ProtoReflect.Descriptor instead.
func (*UnresolvedTableValuedFunction) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{46}
}

func (x *UnresolvedTableValuedFunction) GetFunctionName() string {
	if x != nil {
		return x.FunctionName
	}
	return ""
}

func (x *UnresolvedTableValuedFunction) GetArguments() []*Expression {
	if x != nil {
		return x.Arguments
	}
	return nil
}

type ToSchema struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The user provided schema.
	//
	// The Sever side will update the dataframe with this schema.
	Schema *DataType `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"`
}

func (x *ToSchema) Reset() {
	*x = ToSchema{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[47]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ToSchema) ProtoMessage() {}

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

// Deprecated: Use ToSchema.ProtoReflect.Descriptor instead.
func (*ToSchema) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{47}
}

func (x *ToSchema) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *ToSchema) GetSchema() *DataType {
	if x != nil {
		return x.Schema
	}
	return nil
}

type RepartitionByExpression struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The partitioning expressions.
	PartitionExprs []*Expression `protobuf:"bytes,2,rep,name=partition_exprs,json=partitionExprs,proto3" json:"partition_exprs,omitempty"`
	// (Optional) number of partitions, must be positive.
	NumPartitions *int32 `protobuf:"varint,3,opt,name=num_partitions,json=numPartitions,proto3,oneof" json:"num_partitions,omitempty"`
}

func (x *RepartitionByExpression) Reset() {
	*x = RepartitionByExpression{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[48]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*RepartitionByExpression) ProtoMessage() {}

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

// Deprecated: Use RepartitionByExpression.ProtoReflect.Descriptor instead.
func (*RepartitionByExpression) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{48}
}

func (x *RepartitionByExpression) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *RepartitionByExpression) GetPartitionExprs() []*Expression {
	if x != nil {
		return x.PartitionExprs
	}
	return nil
}

func (x *RepartitionByExpression) GetNumPartitions() int32 {
	if x != nil && x.NumPartitions != nil {
		return *x.NumPartitions
	}
	return 0
}

type MapPartitions struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for a mapPartitions-equivalent API: mapInPandas, mapInArrow.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Input user-defined function.
	Func *CommonInlineUserDefinedFunction `protobuf:"bytes,2,opt,name=func,proto3" json:"func,omitempty"`
	// (Optional) Whether to use barrier mode execution or not.
	IsBarrier *bool `protobuf:"varint,3,opt,name=is_barrier,json=isBarrier,proto3,oneof" json:"is_barrier,omitempty"`
	// (Optional) ResourceProfile id used for the stage level scheduling.
	ProfileId *int32 `protobuf:"varint,4,opt,name=profile_id,json=profileId,proto3,oneof" json:"profile_id,omitempty"`
}

func (x *MapPartitions) Reset() {
	*x = MapPartitions{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[49]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MapPartitions) ProtoMessage() {}

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

// Deprecated: Use MapPartitions.ProtoReflect.Descriptor instead.
func (*MapPartitions) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{49}
}

func (x *MapPartitions) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *MapPartitions) GetFunc() *CommonInlineUserDefinedFunction {
	if x != nil {
		return x.Func
	}
	return nil
}

func (x *MapPartitions) GetIsBarrier() bool {
	if x != nil && x.IsBarrier != nil {
		return *x.IsBarrier
	}
	return false
}

func (x *MapPartitions) GetProfileId() int32 {
	if x != nil && x.ProfileId != nil {
		return *x.ProfileId
	}
	return 0
}

type GroupMap struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for Group Map API: apply, applyInPandas.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Expressions for grouping keys.
	GroupingExpressions []*Expression `protobuf:"bytes,2,rep,name=grouping_expressions,json=groupingExpressions,proto3" json:"grouping_expressions,omitempty"`
	// (Required) Input user-defined function.
	Func *CommonInlineUserDefinedFunction `protobuf:"bytes,3,opt,name=func,proto3" json:"func,omitempty"`
	// (Optional) Expressions for sorting. Only used by Scala Sorted Group Map API.
	SortingExpressions []*Expression `protobuf:"bytes,4,rep,name=sorting_expressions,json=sortingExpressions,proto3" json:"sorting_expressions,omitempty"`
	// Below fields are only used by (Flat)MapGroupsWithState
	// (Optional) Input relation for initial State.
	InitialInput *Relation `protobuf:"bytes,5,opt,name=initial_input,json=initialInput,proto3" json:"initial_input,omitempty"`
	// (Optional) Expressions for grouping keys of the initial state input relation.
	InitialGroupingExpressions []*Expression `protobuf:"bytes,6,rep,name=initial_grouping_expressions,json=initialGroupingExpressions,proto3" json:"initial_grouping_expressions,omitempty"`
	// (Optional) True if MapGroupsWithState, false if FlatMapGroupsWithState.
	IsMapGroupsWithState *bool `protobuf:"varint,7,opt,name=is_map_groups_with_state,json=isMapGroupsWithState,proto3,oneof" json:"is_map_groups_with_state,omitempty"`
	// (Optional) The output mode of the function.
	OutputMode *string `protobuf:"bytes,8,opt,name=output_mode,json=outputMode,proto3,oneof" json:"output_mode,omitempty"`
	// (Optional) Timeout configuration for groups that do not receive data for a while.
	TimeoutConf *string `protobuf:"bytes,9,opt,name=timeout_conf,json=timeoutConf,proto3,oneof" json:"timeout_conf,omitempty"`
	// (Optional) The schema for the grouped state.
	StateSchema *DataType `protobuf:"bytes,10,opt,name=state_schema,json=stateSchema,proto3,oneof" json:"state_schema,omitempty"`
	// Below fields are used by TransformWithState and TransformWithStateInPandas
	// (Optional) TransformWithState related parameters.
	TransformWithStateInfo *TransformWithStateInfo `protobuf:"bytes,11,opt,name=transform_with_state_info,json=transformWithStateInfo,proto3,oneof" json:"transform_with_state_info,omitempty"`
}

func (x *GroupMap) Reset() {
	*x = GroupMap{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[50]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*GroupMap) ProtoMessage() {}

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

// Deprecated: Use GroupMap.ProtoReflect.Descriptor instead.
func (*GroupMap) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{50}
}

func (x *GroupMap) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *GroupMap) GetGroupingExpressions() []*Expression {
	if x != nil {
		return x.GroupingExpressions
	}
	return nil
}

func (x *GroupMap) GetFunc() *CommonInlineUserDefinedFunction {
	if x != nil {
		return x.Func
	}
	return nil
}

func (x *GroupMap) GetSortingExpressions() []*Expression {
	if x != nil {
		return x.SortingExpressions
	}
	return nil
}

func (x *GroupMap) GetInitialInput() *Relation {
	if x != nil {
		return x.InitialInput
	}
	return nil
}

func (x *GroupMap) GetInitialGroupingExpressions() []*Expression {
	if x != nil {
		return x.InitialGroupingExpressions
	}
	return nil
}

func (x *GroupMap) GetIsMapGroupsWithState() bool {
	if x != nil && x.IsMapGroupsWithState != nil {
		return *x.IsMapGroupsWithState
	}
	return false
}

func (x *GroupMap) GetOutputMode() string {
	if x != nil && x.OutputMode != nil {
		return *x.OutputMode
	}
	return ""
}

func (x *GroupMap) GetTimeoutConf() string {
	if x != nil && x.TimeoutConf != nil {
		return *x.TimeoutConf
	}
	return ""
}

func (x *GroupMap) GetStateSchema() *DataType {
	if x != nil {
		return x.StateSchema
	}
	return nil
}

func (x *GroupMap) GetTransformWithStateInfo() *TransformWithStateInfo {
	if x != nil {
		return x.TransformWithStateInfo
	}
	return nil
}

// Additional input parameters used for TransformWithState operator.
type TransformWithStateInfo struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Time mode string for transformWithState.
	TimeMode string `protobuf:"bytes,1,opt,name=time_mode,json=timeMode,proto3" json:"time_mode,omitempty"`
	// (Optional) Event time column name.
	EventTimeColumnName *string `protobuf:"bytes,2,opt,name=event_time_column_name,json=eventTimeColumnName,proto3,oneof" json:"event_time_column_name,omitempty"`
	// (Optional) Schema for the output DataFrame.
	// Only required used for TransformWithStateInPandas.
	OutputSchema *DataType `protobuf:"bytes,3,opt,name=output_schema,json=outputSchema,proto3,oneof" json:"output_schema,omitempty"`
}

func (x *TransformWithStateInfo) Reset() {
	*x = TransformWithStateInfo{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[51]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*TransformWithStateInfo) ProtoMessage() {}

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

// Deprecated: Use TransformWithStateInfo.ProtoReflect.Descriptor instead.
func (*TransformWithStateInfo) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{51}
}

func (x *TransformWithStateInfo) GetTimeMode() string {
	if x != nil {
		return x.TimeMode
	}
	return ""
}

func (x *TransformWithStateInfo) GetEventTimeColumnName() string {
	if x != nil && x.EventTimeColumnName != nil {
		return *x.EventTimeColumnName
	}
	return ""
}

func (x *TransformWithStateInfo) GetOutputSchema() *DataType {
	if x != nil {
		return x.OutputSchema
	}
	return nil
}

type CoGroupMap struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) One input relation for CoGroup Map API - applyInPandas.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// Expressions for grouping keys of the first input relation.
	InputGroupingExpressions []*Expression `protobuf:"bytes,2,rep,name=input_grouping_expressions,json=inputGroupingExpressions,proto3" json:"input_grouping_expressions,omitempty"`
	// (Required) The other input relation.
	Other *Relation `protobuf:"bytes,3,opt,name=other,proto3" json:"other,omitempty"`
	// Expressions for grouping keys of the other input relation.
	OtherGroupingExpressions []*Expression `protobuf:"bytes,4,rep,name=other_grouping_expressions,json=otherGroupingExpressions,proto3" json:"other_grouping_expressions,omitempty"`
	// (Required) Input user-defined function.
	Func *CommonInlineUserDefinedFunction `protobuf:"bytes,5,opt,name=func,proto3" json:"func,omitempty"`
	// (Optional) Expressions for sorting. Only used by Scala Sorted CoGroup Map API.
	InputSortingExpressions []*Expression `protobuf:"bytes,6,rep,name=input_sorting_expressions,json=inputSortingExpressions,proto3" json:"input_sorting_expressions,omitempty"`
	// (Optional) Expressions for sorting. Only used by Scala Sorted CoGroup Map API.
	OtherSortingExpressions []*Expression `protobuf:"bytes,7,rep,name=other_sorting_expressions,json=otherSortingExpressions,proto3" json:"other_sorting_expressions,omitempty"`
}

func (x *CoGroupMap) Reset() {
	*x = CoGroupMap{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[52]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CoGroupMap) ProtoMessage() {}

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

// Deprecated: Use CoGroupMap.ProtoReflect.Descriptor instead.
func (*CoGroupMap) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{52}
}

func (x *CoGroupMap) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *CoGroupMap) GetInputGroupingExpressions() []*Expression {
	if x != nil {
		return x.InputGroupingExpressions
	}
	return nil
}

func (x *CoGroupMap) GetOther() *Relation {
	if x != nil {
		return x.Other
	}
	return nil
}

func (x *CoGroupMap) GetOtherGroupingExpressions() []*Expression {
	if x != nil {
		return x.OtherGroupingExpressions
	}
	return nil
}

func (x *CoGroupMap) GetFunc() *CommonInlineUserDefinedFunction {
	if x != nil {
		return x.Func
	}
	return nil
}

func (x *CoGroupMap) GetInputSortingExpressions() []*Expression {
	if x != nil {
		return x.InputSortingExpressions
	}
	return nil
}

func (x *CoGroupMap) GetOtherSortingExpressions() []*Expression {
	if x != nil {
		return x.OtherSortingExpressions
	}
	return nil
}

type ApplyInPandasWithState struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation for applyInPandasWithState.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Expressions for grouping keys.
	GroupingExpressions []*Expression `protobuf:"bytes,2,rep,name=grouping_expressions,json=groupingExpressions,proto3" json:"grouping_expressions,omitempty"`
	// (Required) Input user-defined function.
	Func *CommonInlineUserDefinedFunction `protobuf:"bytes,3,opt,name=func,proto3" json:"func,omitempty"`
	// (Required) Schema for the output DataFrame.
	OutputSchema string `protobuf:"bytes,4,opt,name=output_schema,json=outputSchema,proto3" json:"output_schema,omitempty"`
	// (Required) Schema for the state.
	StateSchema string `protobuf:"bytes,5,opt,name=state_schema,json=stateSchema,proto3" json:"state_schema,omitempty"`
	// (Required) The output mode of the function.
	OutputMode string `protobuf:"bytes,6,opt,name=output_mode,json=outputMode,proto3" json:"output_mode,omitempty"`
	// (Required) Timeout configuration for groups that do not receive data for a while.
	TimeoutConf string `protobuf:"bytes,7,opt,name=timeout_conf,json=timeoutConf,proto3" json:"timeout_conf,omitempty"`
}

func (x *ApplyInPandasWithState) Reset() {
	*x = ApplyInPandasWithState{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[53]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*ApplyInPandasWithState) ProtoMessage() {}

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

// Deprecated: Use ApplyInPandasWithState.ProtoReflect.Descriptor instead.
func (*ApplyInPandasWithState) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{53}
}

func (x *ApplyInPandasWithState) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *ApplyInPandasWithState) GetGroupingExpressions() []*Expression {
	if x != nil {
		return x.GroupingExpressions
	}
	return nil
}

func (x *ApplyInPandasWithState) GetFunc() *CommonInlineUserDefinedFunction {
	if x != nil {
		return x.Func
	}
	return nil
}

func (x *ApplyInPandasWithState) GetOutputSchema() string {
	if x != nil {
		return x.OutputSchema
	}
	return ""
}

func (x *ApplyInPandasWithState) GetStateSchema() string {
	if x != nil {
		return x.StateSchema
	}
	return ""
}

func (x *ApplyInPandasWithState) GetOutputMode() string {
	if x != nil {
		return x.OutputMode
	}
	return ""
}

func (x *ApplyInPandasWithState) GetTimeoutConf() string {
	if x != nil {
		return x.TimeoutConf
	}
	return ""
}

type CommonInlineUserDefinedTableFunction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Name of the user-defined table function.
	FunctionName string `protobuf:"bytes,1,opt,name=function_name,json=functionName,proto3" json:"function_name,omitempty"`
	// (Optional) Whether the user-defined table function is deterministic.
	Deterministic bool `protobuf:"varint,2,opt,name=deterministic,proto3" json:"deterministic,omitempty"`
	// (Optional) Function input arguments. Empty arguments are allowed.
	Arguments []*Expression `protobuf:"bytes,3,rep,name=arguments,proto3" json:"arguments,omitempty"`
	// (Required) Type of the user-defined table function.
	//
	// Types that are assignable to Function:
	//
	//	*CommonInlineUserDefinedTableFunction_PythonUdtf
	Function isCommonInlineUserDefinedTableFunction_Function `protobuf_oneof:"function"`
}

func (x *CommonInlineUserDefinedTableFunction) Reset() {
	*x = CommonInlineUserDefinedTableFunction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[54]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CommonInlineUserDefinedTableFunction) ProtoMessage() {}

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

// Deprecated: Use CommonInlineUserDefinedTableFunction.ProtoReflect.Descriptor instead.
func (*CommonInlineUserDefinedTableFunction) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{54}
}

func (x *CommonInlineUserDefinedTableFunction) GetFunctionName() string {
	if x != nil {
		return x.FunctionName
	}
	return ""
}

func (x *CommonInlineUserDefinedTableFunction) GetDeterministic() bool {
	if x != nil {
		return x.Deterministic
	}
	return false
}

func (x *CommonInlineUserDefinedTableFunction) GetArguments() []*Expression {
	if x != nil {
		return x.Arguments
	}
	return nil
}

func (m *CommonInlineUserDefinedTableFunction) GetFunction() isCommonInlineUserDefinedTableFunction_Function {
	if m != nil {
		return m.Function
	}
	return nil
}

func (x *CommonInlineUserDefinedTableFunction) GetPythonUdtf() *PythonUDTF {
	if x, ok := x.GetFunction().(*CommonInlineUserDefinedTableFunction_PythonUdtf); ok {
		return x.PythonUdtf
	}
	return nil
}

type isCommonInlineUserDefinedTableFunction_Function interface {
	isCommonInlineUserDefinedTableFunction_Function()
}

type CommonInlineUserDefinedTableFunction_PythonUdtf struct {
	PythonUdtf *PythonUDTF `protobuf:"bytes,4,opt,name=python_udtf,json=pythonUdtf,proto3,oneof"`
}

func (*CommonInlineUserDefinedTableFunction_PythonUdtf) isCommonInlineUserDefinedTableFunction_Function() {
}

type PythonUDTF struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Optional) Return type of the Python UDTF.
	ReturnType *DataType `protobuf:"bytes,1,opt,name=return_type,json=returnType,proto3,oneof" json:"return_type,omitempty"`
	// (Required) EvalType of the Python UDTF.
	EvalType int32 `protobuf:"varint,2,opt,name=eval_type,json=evalType,proto3" json:"eval_type,omitempty"`
	// (Required) The encoded commands of the Python UDTF.
	Command []byte `protobuf:"bytes,3,opt,name=command,proto3" json:"command,omitempty"`
	// (Required) Python version being used in the client.
	PythonVer string `protobuf:"bytes,4,opt,name=python_ver,json=pythonVer,proto3" json:"python_ver,omitempty"`
}

func (x *PythonUDTF) Reset() {
	*x = PythonUDTF{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[55]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PythonUDTF) ProtoMessage() {}

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

// Deprecated: Use PythonUDTF.ProtoReflect.Descriptor instead.
func (*PythonUDTF) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{55}
}

func (x *PythonUDTF) GetReturnType() *DataType {
	if x != nil {
		return x.ReturnType
	}
	return nil
}

func (x *PythonUDTF) GetEvalType() int32 {
	if x != nil {
		return x.EvalType
	}
	return 0
}

func (x *PythonUDTF) GetCommand() []byte {
	if x != nil {
		return x.Command
	}
	return nil
}

func (x *PythonUDTF) GetPythonVer() string {
	if x != nil {
		return x.PythonVer
	}
	return ""
}

type CommonInlineUserDefinedDataSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Name of the data source.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// (Required) The data source type.
	//
	// Types that are assignable to DataSource:
	//
	//	*CommonInlineUserDefinedDataSource_PythonDataSource
	DataSource isCommonInlineUserDefinedDataSource_DataSource `protobuf_oneof:"data_source"`
}

func (x *CommonInlineUserDefinedDataSource) Reset() {
	*x = CommonInlineUserDefinedDataSource{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[56]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CommonInlineUserDefinedDataSource) ProtoMessage() {}

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

// Deprecated: Use CommonInlineUserDefinedDataSource.ProtoReflect.Descriptor instead.
func (*CommonInlineUserDefinedDataSource) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{56}
}

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

func (m *CommonInlineUserDefinedDataSource) GetDataSource() isCommonInlineUserDefinedDataSource_DataSource {
	if m != nil {
		return m.DataSource
	}
	return nil
}

func (x *CommonInlineUserDefinedDataSource) GetPythonDataSource() *PythonDataSource {
	if x, ok := x.GetDataSource().(*CommonInlineUserDefinedDataSource_PythonDataSource); ok {
		return x.PythonDataSource
	}
	return nil
}

type isCommonInlineUserDefinedDataSource_DataSource interface {
	isCommonInlineUserDefinedDataSource_DataSource()
}

type CommonInlineUserDefinedDataSource_PythonDataSource struct {
	PythonDataSource *PythonDataSource `protobuf:"bytes,2,opt,name=python_data_source,json=pythonDataSource,proto3,oneof"`
}

func (*CommonInlineUserDefinedDataSource_PythonDataSource) isCommonInlineUserDefinedDataSource_DataSource() {
}

type PythonDataSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The encoded commands of the Python data source.
	Command []byte `protobuf:"bytes,1,opt,name=command,proto3" json:"command,omitempty"`
	// (Required) Python version being used in the client.
	PythonVer string `protobuf:"bytes,2,opt,name=python_ver,json=pythonVer,proto3" json:"python_ver,omitempty"`
}

func (x *PythonDataSource) Reset() {
	*x = PythonDataSource{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[57]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*PythonDataSource) ProtoMessage() {}

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

// Deprecated: Use PythonDataSource.ProtoReflect.Descriptor instead.
func (*PythonDataSource) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{57}
}

func (x *PythonDataSource) GetCommand() []byte {
	if x != nil {
		return x.Command
	}
	return nil
}

func (x *PythonDataSource) GetPythonVer() string {
	if x != nil {
		return x.PythonVer
	}
	return ""
}

// Collect arbitrary (named) metrics from a dataset.
type CollectMetrics struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The input relation.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) Name of the metrics.
	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	// (Required) The metric sequence.
	Metrics []*Expression `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics,omitempty"`
}

func (x *CollectMetrics) Reset() {
	*x = CollectMetrics{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[58]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*CollectMetrics) ProtoMessage() {}

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

// Deprecated: Use CollectMetrics.ProtoReflect.Descriptor instead.
func (*CollectMetrics) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{58}
}

func (x *CollectMetrics) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

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

func (x *CollectMetrics) GetMetrics() []*Expression {
	if x != nil {
		return x.Metrics
	}
	return nil
}

type Parse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Input relation to Parse. The input is expected to have single text column.
	Input *Relation `protobuf:"bytes,1,opt,name=input,proto3" json:"input,omitempty"`
	// (Required) The expected format of the text.
	Format Parse_ParseFormat `protobuf:"varint,2,opt,name=format,proto3,enum=spark.connect.Parse_ParseFormat" json:"format,omitempty"`
	// (Optional) DataType representing the schema. If not set, Spark will infer the schema.
	Schema *DataType `protobuf:"bytes,3,opt,name=schema,proto3,oneof" json:"schema,omitempty"`
	// Options for the csv/json parser. The map key is case insensitive.
	Options map[string]string `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *Parse) Reset() {
	*x = Parse{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[59]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Parse) ProtoMessage() {}

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

// Deprecated: Use Parse.ProtoReflect.Descriptor instead.
func (*Parse) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{59}
}

func (x *Parse) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *Parse) GetFormat() Parse_ParseFormat {
	if x != nil {
		return x.Format
	}
	return Parse_PARSE_FORMAT_UNSPECIFIED
}

func (x *Parse) GetSchema() *DataType {
	if x != nil {
		return x.Schema
	}
	return nil
}

func (x *Parse) GetOptions() map[string]string {
	if x != nil {
		return x.Options
	}
	return nil
}

// Relation of type [[AsOfJoin]].
//
// `left` and `right` must be present.
type AsOfJoin struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Left input relation for a Join.
	Left *Relation `protobuf:"bytes,1,opt,name=left,proto3" json:"left,omitempty"`
	// (Required) Right input relation for a Join.
	Right *Relation `protobuf:"bytes,2,opt,name=right,proto3" json:"right,omitempty"`
	// (Required) Field to join on in left DataFrame
	LeftAsOf *Expression `protobuf:"bytes,3,opt,name=left_as_of,json=leftAsOf,proto3" json:"left_as_of,omitempty"`
	// (Required) Field to join on in right DataFrame
	RightAsOf *Expression `protobuf:"bytes,4,opt,name=right_as_of,json=rightAsOf,proto3" json:"right_as_of,omitempty"`
	// (Optional) The join condition. Could be unset when `using_columns` is utilized.
	//
	// This field does not co-exist with using_columns.
	JoinExpr *Expression `protobuf:"bytes,5,opt,name=join_expr,json=joinExpr,proto3" json:"join_expr,omitempty"`
	// Optional. using_columns provides a list of columns that should present on both sides of
	// the join inputs that this Join will join on. For example A JOIN B USING col_name is
	// equivalent to A JOIN B on A.col_name = B.col_name.
	//
	// This field does not co-exist with join_condition.
	UsingColumns []string `protobuf:"bytes,6,rep,name=using_columns,json=usingColumns,proto3" json:"using_columns,omitempty"`
	// (Required) The join type.
	JoinType string `protobuf:"bytes,7,opt,name=join_type,json=joinType,proto3" json:"join_type,omitempty"`
	// (Optional) The asof tolerance within this range.
	Tolerance *Expression `protobuf:"bytes,8,opt,name=tolerance,proto3" json:"tolerance,omitempty"`
	// (Required) Whether allow matching with the same value or not.
	AllowExactMatches bool `protobuf:"varint,9,opt,name=allow_exact_matches,json=allowExactMatches,proto3" json:"allow_exact_matches,omitempty"`
	// (Required) Whether to search for prior, subsequent, or closest matches.
	Direction string `protobuf:"bytes,10,opt,name=direction,proto3" json:"direction,omitempty"`
}

func (x *AsOfJoin) Reset() {
	*x = AsOfJoin{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[60]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*AsOfJoin) ProtoMessage() {}

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

// Deprecated: Use AsOfJoin.ProtoReflect.Descriptor instead.
func (*AsOfJoin) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{60}
}

func (x *AsOfJoin) GetLeft() *Relation {
	if x != nil {
		return x.Left
	}
	return nil
}

func (x *AsOfJoin) GetRight() *Relation {
	if x != nil {
		return x.Right
	}
	return nil
}

func (x *AsOfJoin) GetLeftAsOf() *Expression {
	if x != nil {
		return x.LeftAsOf
	}
	return nil
}

func (x *AsOfJoin) GetRightAsOf() *Expression {
	if x != nil {
		return x.RightAsOf
	}
	return nil
}

func (x *AsOfJoin) GetJoinExpr() *Expression {
	if x != nil {
		return x.JoinExpr
	}
	return nil
}

func (x *AsOfJoin) GetUsingColumns() []string {
	if x != nil {
		return x.UsingColumns
	}
	return nil
}

func (x *AsOfJoin) GetJoinType() string {
	if x != nil {
		return x.JoinType
	}
	return ""
}

func (x *AsOfJoin) GetTolerance() *Expression {
	if x != nil {
		return x.Tolerance
	}
	return nil
}

func (x *AsOfJoin) GetAllowExactMatches() bool {
	if x != nil {
		return x.AllowExactMatches
	}
	return false
}

func (x *AsOfJoin) GetDirection() string {
	if x != nil {
		return x.Direction
	}
	return ""
}

// Relation of type [[LateralJoin]].
//
// `left` and `right` must be present.
type LateralJoin struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Left input relation for a Join.
	Left *Relation `protobuf:"bytes,1,opt,name=left,proto3" json:"left,omitempty"`
	// (Required) Right input relation for a Join.
	Right *Relation `protobuf:"bytes,2,opt,name=right,proto3" json:"right,omitempty"`
	// (Optional) The join condition.
	JoinCondition *Expression `protobuf:"bytes,3,opt,name=join_condition,json=joinCondition,proto3" json:"join_condition,omitempty"`
	// (Required) The join type.
	JoinType Join_JoinType `protobuf:"varint,4,opt,name=join_type,json=joinType,proto3,enum=spark.connect.Join_JoinType" json:"join_type,omitempty"`
}

func (x *LateralJoin) Reset() {
	*x = LateralJoin{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[61]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*LateralJoin) ProtoMessage() {}

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

// Deprecated: Use LateralJoin.ProtoReflect.Descriptor instead.
func (*LateralJoin) Descriptor() ([]byte, []int) {
	return file_spark_connect_relations_proto_rawDescGZIP(), []int{61}
}

func (x *LateralJoin) GetLeft() *Relation {
	if x != nil {
		return x.Left
	}
	return nil
}

func (x *LateralJoin) GetRight() *Relation {
	if x != nil {
		return x.Right
	}
	return nil
}

func (x *LateralJoin) GetJoinCondition() *Expression {
	if x != nil {
		return x.JoinCondition
	}
	return nil
}

func (x *LateralJoin) GetJoinType() Join_JoinType {
	if x != nil {
		return x.JoinType
	}
	return Join_JOIN_TYPE_UNSPECIFIED
}

// Relation to represent transform(input) of the operator
// which could be a cached model or a new transformer
type MlRelation_Transform struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Operator:
	//
	//	*MlRelation_Transform_ObjRef
	//	*MlRelation_Transform_Transformer
	Operator isMlRelation_Transform_Operator `protobuf_oneof:"operator"`
	// the input dataframe
	Input *Relation `protobuf:"bytes,3,opt,name=input,proto3" json:"input,omitempty"`
	// the operator specific parameters
	Params *MlParams `protobuf:"bytes,4,opt,name=params,proto3" json:"params,omitempty"`
}

func (x *MlRelation_Transform) Reset() {
	*x = MlRelation_Transform{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[62]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*MlRelation_Transform) ProtoMessage() {}

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

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

func (m *MlRelation_Transform) GetOperator() isMlRelation_Transform_Operator {
	if m != nil {
		return m.Operator
	}
	return nil
}

func (x *MlRelation_Transform) GetObjRef() *ObjectRef {
	if x, ok := x.GetOperator().(*MlRelation_Transform_ObjRef); ok {
		return x.ObjRef
	}
	return nil
}

func (x *MlRelation_Transform) GetTransformer() *MlOperator {
	if x, ok := x.GetOperator().(*MlRelation_Transform_Transformer); ok {
		return x.Transformer
	}
	return nil
}

func (x *MlRelation_Transform) GetInput() *Relation {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *MlRelation_Transform) GetParams() *MlParams {
	if x != nil {
		return x.Params
	}
	return nil
}

type isMlRelation_Transform_Operator interface {
	isMlRelation_Transform_Operator()
}

type MlRelation_Transform_ObjRef struct {
	// Object reference
	ObjRef *ObjectRef `protobuf:"bytes,1,opt,name=obj_ref,json=objRef,proto3,oneof"`
}

type MlRelation_Transform_Transformer struct {
	// Could be an ML transformer like VectorAssembler
	Transformer *MlOperator `protobuf:"bytes,2,opt,name=transformer,proto3,oneof"`
}

func (*MlRelation_Transform_ObjRef) isMlRelation_Transform_Operator() {}

func (*MlRelation_Transform_Transformer) isMlRelation_Transform_Operator() {}

// Represents a method with inclusion of method name and its arguments
type Fetch_Method struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) the method name
	Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"`
	// (Optional) the arguments of the method
	Args []*Fetch_Method_Args `protobuf:"bytes,2,rep,name=args,proto3" json:"args,omitempty"`
}

func (x *Fetch_Method) Reset() {
	*x = Fetch_Method{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[63]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Fetch_Method) ProtoMessage() {}

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

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

func (x *Fetch_Method) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *Fetch_Method) GetArgs() []*Fetch_Method_Args {
	if x != nil {
		return x.Args
	}
	return nil
}

type Fetch_Method_Args struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to ArgsType:
	//
	//	*Fetch_Method_Args_Param
	//	*Fetch_Method_Args_Input
	ArgsType isFetch_Method_Args_ArgsType `protobuf_oneof:"args_type"`
}

func (x *Fetch_Method_Args) Reset() {
	*x = Fetch_Method_Args{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[64]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Fetch_Method_Args) ProtoMessage() {}

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

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

func (m *Fetch_Method_Args) GetArgsType() isFetch_Method_Args_ArgsType {
	if m != nil {
		return m.ArgsType
	}
	return nil
}

func (x *Fetch_Method_Args) GetParam() *Expression_Literal {
	if x, ok := x.GetArgsType().(*Fetch_Method_Args_Param); ok {
		return x.Param
	}
	return nil
}

func (x *Fetch_Method_Args) GetInput() *Relation {
	if x, ok := x.GetArgsType().(*Fetch_Method_Args_Input); ok {
		return x.Input
	}
	return nil
}

type isFetch_Method_Args_ArgsType interface {
	isFetch_Method_Args_ArgsType()
}

type Fetch_Method_Args_Param struct {
	Param *Expression_Literal `protobuf:"bytes,1,opt,name=param,proto3,oneof"`
}

type Fetch_Method_Args_Input struct {
	Input *Relation `protobuf:"bytes,2,opt,name=input,proto3,oneof"`
}

func (*Fetch_Method_Args_Param) isFetch_Method_Args_ArgsType() {}

func (*Fetch_Method_Args_Input) isFetch_Method_Args_ArgsType() {}

type Read_NamedTable struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Unparsed identifier for the table.
	UnparsedIdentifier string `protobuf:"bytes,1,opt,name=unparsed_identifier,json=unparsedIdentifier,proto3" json:"unparsed_identifier,omitempty"`
	// Options for the named table. The map key is case insensitive.
	Options map[string]string `protobuf:"bytes,2,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}

func (x *Read_NamedTable) Reset() {
	*x = Read_NamedTable{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[67]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Read_NamedTable) ProtoMessage() {}

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

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

func (x *Read_NamedTable) GetUnparsedIdentifier() string {
	if x != nil {
		return x.UnparsedIdentifier
	}
	return ""
}

func (x *Read_NamedTable) GetOptions() map[string]string {
	if x != nil {
		return x.Options
	}
	return nil
}

type Read_DataSource struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Optional) Supported formats include: parquet, orc, text, json, parquet, csv, avro.
	//
	// If not set, the value from SQL conf 'spark.sql.sources.default' will be used.
	Format *string `protobuf:"bytes,1,opt,name=format,proto3,oneof" json:"format,omitempty"`
	// (Optional) If not set, Spark will infer the schema.
	//
	// This schema string should be either DDL-formatted or JSON-formatted.
	Schema *string `protobuf:"bytes,2,opt,name=schema,proto3,oneof" json:"schema,omitempty"`
	// Options for the data source. The context of this map varies based on the
	// data source format. This options could be empty for valid data source format.
	// The map key is case insensitive.
	Options map[string]string `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	// (Optional) A list of path for file-system backed data sources.
	Paths []string `protobuf:"bytes,4,rep,name=paths,proto3" json:"paths,omitempty"`
	// (Optional) Condition in the where clause for each partition.
	//
	// This is only supported by the JDBC data source.
	Predicates []string `protobuf:"bytes,5,rep,name=predicates,proto3" json:"predicates,omitempty"`
}

func (x *Read_DataSource) Reset() {
	*x = Read_DataSource{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[68]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Read_DataSource) ProtoMessage() {}

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

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

func (x *Read_DataSource) GetFormat() string {
	if x != nil && x.Format != nil {
		return *x.Format
	}
	return ""
}

func (x *Read_DataSource) GetSchema() string {
	if x != nil && x.Schema != nil {
		return *x.Schema
	}
	return ""
}

func (x *Read_DataSource) GetOptions() map[string]string {
	if x != nil {
		return x.Options
	}
	return nil
}

func (x *Read_DataSource) GetPaths() []string {
	if x != nil {
		return x.Paths
	}
	return nil
}

func (x *Read_DataSource) GetPredicates() []string {
	if x != nil {
		return x.Predicates
	}
	return nil
}

type Join_JoinDataType struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// If the left data type is a struct.
	IsLeftStruct bool `protobuf:"varint,1,opt,name=is_left_struct,json=isLeftStruct,proto3" json:"is_left_struct,omitempty"`
	// If the right data type is a struct.
	IsRightStruct bool `protobuf:"varint,2,opt,name=is_right_struct,json=isRightStruct,proto3" json:"is_right_struct,omitempty"`
}

func (x *Join_JoinDataType) Reset() {
	*x = Join_JoinDataType{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[71]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Join_JoinDataType) ProtoMessage() {}

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

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

func (x *Join_JoinDataType) GetIsLeftStruct() bool {
	if x != nil {
		return x.IsLeftStruct
	}
	return false
}

func (x *Join_JoinDataType) GetIsRightStruct() bool {
	if x != nil {
		return x.IsRightStruct
	}
	return false
}

type Aggregate_Pivot struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The column to pivot
	Col *Expression `protobuf:"bytes,1,opt,name=col,proto3" json:"col,omitempty"`
	// (Optional) List of values that will be translated to columns in the output DataFrame.
	//
	// Note that if it is empty, the server side will immediately trigger a job to collect
	// the distinct values of the column.
	Values []*Expression_Literal `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"`
}

func (x *Aggregate_Pivot) Reset() {
	*x = Aggregate_Pivot{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[72]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Aggregate_Pivot) ProtoMessage() {}

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

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

func (x *Aggregate_Pivot) GetCol() *Expression {
	if x != nil {
		return x.Col
	}
	return nil
}

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

type Aggregate_GroupingSets struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) Individual grouping set
	GroupingSet []*Expression `protobuf:"bytes,1,rep,name=grouping_set,json=groupingSet,proto3" json:"grouping_set,omitempty"`
}

func (x *Aggregate_GroupingSets) Reset() {
	*x = Aggregate_GroupingSets{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[73]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Aggregate_GroupingSets) ProtoMessage() {}

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

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

func (x *Aggregate_GroupingSets) GetGroupingSet() []*Expression {
	if x != nil {
		return x.GroupingSet
	}
	return nil
}

type StatSampleBy_Fraction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The stratum.
	Stratum *Expression_Literal `protobuf:"bytes,1,opt,name=stratum,proto3" json:"stratum,omitempty"`
	// (Required) The fraction value. Must be in [0, 1].
	Fraction float64 `protobuf:"fixed64,2,opt,name=fraction,proto3" json:"fraction,omitempty"`
}

func (x *StatSampleBy_Fraction) Reset() {
	*x = StatSampleBy_Fraction{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[74]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*StatSampleBy_Fraction) ProtoMessage() {}

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

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

func (x *StatSampleBy_Fraction) GetStratum() *Expression_Literal {
	if x != nil {
		return x.Stratum
	}
	return nil
}

func (x *StatSampleBy_Fraction) GetFraction() float64 {
	if x != nil {
		return x.Fraction
	}
	return 0
}

type NAReplace_Replacement struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The old value.
	//
	// Only 4 data types are supported now: null, bool, double, string.
	OldValue *Expression_Literal `protobuf:"bytes,1,opt,name=old_value,json=oldValue,proto3" json:"old_value,omitempty"`
	// (Required) The new value.
	//
	// Should be of the same data type with the old value.
	NewValue *Expression_Literal `protobuf:"bytes,2,opt,name=new_value,json=newValue,proto3" json:"new_value,omitempty"`
}

func (x *NAReplace_Replacement) Reset() {
	*x = NAReplace_Replacement{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[75]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*NAReplace_Replacement) ProtoMessage() {}

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

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

func (x *NAReplace_Replacement) GetOldValue() *Expression_Literal {
	if x != nil {
		return x.OldValue
	}
	return nil
}

func (x *NAReplace_Replacement) GetNewValue() *Expression_Literal {
	if x != nil {
		return x.NewValue
	}
	return nil
}

type WithColumnsRenamed_Rename struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// (Required) The existing column name.
	ColName string `protobuf:"bytes,1,opt,name=col_name,json=colName,proto3" json:"col_name,omitempty"`
	// (Required) The new column name.
	NewColName string `protobuf:"bytes,2,opt,name=new_col_name,json=newColName,proto3" json:"new_col_name,omitempty"`
}

func (x *WithColumnsRenamed_Rename) Reset() {
	*x = WithColumnsRenamed_Rename{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[77]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*WithColumnsRenamed_Rename) ProtoMessage() {}

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

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

func (x *WithColumnsRenamed_Rename) GetColName() string {
	if x != nil {
		return x.ColName
	}
	return ""
}

func (x *WithColumnsRenamed_Rename) GetNewColName() string {
	if x != nil {
		return x.NewColName
	}
	return ""
}

type Unpivot_Values struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	Values []*Expression `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
}

func (x *Unpivot_Values) Reset() {
	*x = Unpivot_Values{}
	if protoimpl.UnsafeEnabled {
		mi := &file_spark_connect_relations_proto_msgTypes[78]
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		ms.StoreMessageInfo(mi)
	}
}

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

func (*Unpivot_Values) ProtoMessage() {}

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

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

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

var File_spark_connect_relations_proto protoreflect.FileDescriptor

var file_spark_connect_relations_proto_rawDesc = []byte{
	0x0a, 0x1d, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2f,
	0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
	0x0d, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x1a, 0x19,
	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
	0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2f, 0x63, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x1a, 0x1a, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2f, 0x6d, 0x6c,
	0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x1d,
	0x0a, 0x08, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x6f,
	0x6d, 0x6d, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
	0x6e, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x52, 0x65, 0x61, 0x64, 0x48, 0x00, 0x52, 0x04, 0x72, 0x65, 0x61, 0x64, 0x12, 0x32, 0x0a, 0x07,
	0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x50, 0x72,
	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x48, 0x00, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74,
	0x12, 0x2f, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x15, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65,
	0x72, 0x12, 0x29, 0x0a, 0x04, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x13, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x4a, 0x6f, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x6a, 0x6f, 0x69, 0x6e, 0x12, 0x34, 0x0a, 0x06,
	0x73, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x65, 0x74,
	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x73, 0x65, 0x74,
	0x4f, 0x70, 0x12, 0x29, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x13, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x53, 0x6f, 0x72, 0x74, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x2c, 0x0a,
	0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4c, 0x69, 0x6d,
	0x69, 0x74, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x61,
	0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41,
	0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x09, 0x61, 0x67, 0x67, 0x72,
	0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x0a, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x12, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x53, 0x51, 0x4c, 0x48, 0x00, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x45, 0x0a,
	0x0e, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x6c, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x18, 0x0c,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x06, 0x73,
	0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
	0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x06,
	0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x3e, 0x0a, 0x0b, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6c,
	0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x44, 0x65, 0x64, 0x75,
	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x64, 0x75, 0x70,
	0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18,
	0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72,
	0x61, 0x6e, 0x67, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79,
	0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x75, 0x62,
	0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x75,
	0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x72,
	0x65, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x52, 0x65, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0b,
	0x72, 0x65, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x05, 0x74,
	0x6f, 0x5f, 0x64, 0x66, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x6f, 0x44, 0x46, 0x48,
	0x00, 0x52, 0x04, 0x74, 0x6f, 0x44, 0x66, 0x12, 0x55, 0x0a, 0x14, 0x77, 0x69, 0x74, 0x68, 0x5f,
	0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x18,
	0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
	0x73, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x48, 0x00, 0x52, 0x12, 0x77, 0x69, 0x74, 0x68,
	0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x12, 0x3c,
	0x0a, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x14, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00,
	0x52, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x0a, 0x04,
	0x64, 0x72, 0x6f, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x48,
	0x00, 0x52, 0x04, 0x64, 0x72, 0x6f, 0x70, 0x12, 0x29, 0x0a, 0x04, 0x74, 0x61, 0x69, 0x6c, 0x18,
	0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x61, 0x69, 0x6c, 0x48, 0x00, 0x52, 0x04, 0x74, 0x61,
	0x69, 0x6c, 0x12, 0x3f, 0x0a, 0x0c, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d,
	0x6e, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c,
	0x75, 0x6d, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x77, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c, 0x75,
	0x6d, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x13, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2e, 0x48, 0x69, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x12, 0x32,
	0x0a, 0x07, 0x75, 0x6e, 0x70, 0x69, 0x76, 0x6f, 0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x16, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x55, 0x6e, 0x70, 0x69, 0x76, 0x6f, 0x74, 0x48, 0x00, 0x52, 0x07, 0x75, 0x6e, 0x70, 0x69, 0x76,
	0x6f, 0x74, 0x12, 0x36, 0x0a, 0x09, 0x74, 0x6f, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18,
	0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x6f, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x48, 0x00,
	0x52, 0x08, 0x74, 0x6f, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x64, 0x0a, 0x19, 0x72, 0x65,
	0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x79, 0x5f, 0x65, 0x78, 0x70,
	0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65,
	0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x45, 0x78, 0x70, 0x72, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x17, 0x72, 0x65, 0x70, 0x61, 0x72, 0x74, 0x69,
	0x74, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x12, 0x45, 0x0a, 0x0e, 0x6d, 0x61, 0x70, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4d, 0x61, 0x70, 0x50, 0x61, 0x72, 0x74,
	0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x50, 0x61, 0x72,
	0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x48, 0x0a, 0x0f, 0x63, 0x6f, 0x6c, 0x6c, 0x65,
	0x63, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x1d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x48,
	0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
	0x73, 0x12, 0x2c, 0x0a, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x14, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x48, 0x00, 0x52, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0x12,
	0x36, 0x0a, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x1f, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x08, 0x67,
	0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x6f, 0x5f, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f,
	0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6f, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x12, 0x45, 0x0a, 0x0e, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x77,
	0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57,
	0x69, 0x74, 0x68, 0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x48, 0x00, 0x52, 0x0d,
	0x77, 0x69, 0x74, 0x68, 0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x63, 0x0a,
	0x1a, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x6e, 0x64, 0x61, 0x73,
	0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x22, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x25, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x6e, 0x50, 0x61, 0x6e, 0x64, 0x61, 0x73, 0x57,
	0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x16, 0x61, 0x70, 0x70, 0x6c,
	0x79, 0x49, 0x6e, 0x50, 0x61, 0x6e, 0x64, 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61,
	0x74, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x68, 0x74, 0x6d, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
	0x67, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x48, 0x74, 0x6d, 0x6c, 0x53, 0x74, 0x72, 0x69,
	0x6e, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x68, 0x74, 0x6d, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
	0x12, 0x58, 0x0a, 0x15, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c,
	0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x13, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4c, 0x6f, 0x63,
	0x61, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x16, 0x63, 0x61,
	0x63, 0x68, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x6c, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x61, 0x63, 0x68, 0x65,
	0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48,
	0x00, 0x52, 0x14, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52,
	0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x8e, 0x01, 0x0a, 0x29, 0x63, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64,
	0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x75, 0x6e,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d,
	0x6f, 0x6e, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69,
	0x6e, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x48, 0x00, 0x52, 0x24, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65,
	0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65,
	0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x0a, 0x61, 0x73, 0x5f, 0x6f,
	0x66, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x73, 0x4f,
	0x66, 0x4a, 0x6f, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x08, 0x61, 0x73, 0x4f, 0x66, 0x4a, 0x6f, 0x69,
	0x6e, 0x12, 0x85, 0x01, 0x0a, 0x26, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x6c,
	0x69, 0x6e, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64,
	0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x28, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x55,
	0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e,
	0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x44,
	0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x77, 0x69, 0x74,
	0x68, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x29, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48,
	0x00, 0x52, 0x0d, 0x77, 0x69, 0x74, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0x38, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x18, 0x2a, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x48, 0x00, 0x52,
	0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x20, 0x75, 0x6e,
	0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x64, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x2b,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x54,
	0x61, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1d, 0x75, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64,
	0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0c, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x6a,
	0x6f, 0x69, 0x6e, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x72, 0x61,
	0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x48, 0x00, 0x52, 0x0b, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x61, 0x6c,
	0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x18,
	0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4e, 0x41, 0x46, 0x69, 0x6c, 0x6c, 0x48, 0x00, 0x52, 0x06,
	0x66, 0x69, 0x6c, 0x6c, 0x4e, 0x61, 0x12, 0x30, 0x0a, 0x07, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x6e,
	0x61, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4e, 0x41, 0x44, 0x72, 0x6f, 0x70, 0x48, 0x00,
	0x52, 0x06, 0x64, 0x72, 0x6f, 0x70, 0x4e, 0x61, 0x12, 0x34, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c,
	0x61, 0x63, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4e, 0x41, 0x52, 0x65, 0x70, 0x6c,
	0x61, 0x63, 0x65, 0x48, 0x00, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x36,
	0x0a, 0x07, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x53, 0x74, 0x61, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x07, 0x73,
	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x39, 0x0a, 0x08, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x74,
	0x61, 0x62, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x72, 0x6f,
	0x73, 0x73, 0x74, 0x61, 0x62, 0x48, 0x00, 0x52, 0x08, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x74, 0x61,
	0x62, 0x12, 0x39, 0x0a, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x18, 0x66, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65,
	0x48, 0x00, 0x52, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x2a, 0x0a, 0x03,
	0x63, 0x6f, 0x76, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x6f,
	0x76, 0x48, 0x00, 0x52, 0x03, 0x63, 0x6f, 0x76, 0x12, 0x2d, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x72,
	0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x43, 0x6f, 0x72, 0x72, 0x48,
	0x00, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x72, 0x12, 0x4c, 0x0a, 0x0f, 0x61, 0x70, 0x70, 0x72, 0x6f,
	0x78, 0x5f, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x53, 0x74, 0x61, 0x74, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x51, 0x75, 0x61, 0x6e, 0x74,
	0x69, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x51, 0x75, 0x61,
	0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x3d, 0x0a, 0x0a, 0x66, 0x72, 0x65, 0x71, 0x5f, 0x69, 0x74,
	0x65, 0x6d, 0x73, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x46, 0x72,
	0x65, 0x71, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x09, 0x66, 0x72, 0x65, 0x71, 0x49,
	0x74, 0x65, 0x6d, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x62,
	0x79, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x53, 0x61, 0x6d, 0x70,
	0x6c, 0x65, 0x42, 0x79, 0x48, 0x00, 0x52, 0x08, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79,
	0x12, 0x33, 0x0a, 0x07, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0xc8, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x07, 0x63, 0x61,
	0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x3d, 0x0a, 0x0b, 0x6d, 0x6c, 0x5f, 0x72, 0x65, 0x6c, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0xac, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4d, 0x6c, 0x52, 0x65,
	0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x6d, 0x6c, 0x52, 0x65, 0x6c, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
	0x6e, 0x18, 0xe6, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x48, 0x00,
	0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x33, 0x0a, 0x07, 0x75,
	0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, 0x6e,
	0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
	0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xf8, 0x02, 0x0a,
	0x0a, 0x4d, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x09, 0x74,
	0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4d,
	0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66,
	0x6f, 0x72, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
	0x12, 0x2c, 0x0a, 0x05, 0x66, 0x65, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x14, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x46, 0x65, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x66, 0x65, 0x74, 0x63, 0x68, 0x1a, 0xeb,
	0x01, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x33, 0x0a, 0x07,
	0x6f, 0x62, 0x6a, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4f, 0x62,
	0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x48, 0x00, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x52, 0x65,
	0x66, 0x12, 0x3d, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4d, 0x6c, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f,
	0x72, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x72,
	0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12,
	0x2f, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x4d, 0x6c, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73,
	0x42, 0x0a, 0x0a, 0x08, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x42, 0x09, 0x0a, 0x07,
	0x6d, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xcb, 0x02, 0x0a, 0x05, 0x46, 0x65, 0x74, 0x63,
	0x68, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x66, 0x52, 0x06, 0x6f, 0x62,
	0x6a, 0x52, 0x65, 0x66, 0x12, 0x35, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x46, 0x65, 0x74, 0x63, 0x68, 0x2e, 0x4d, 0x65, 0x74, 0x68,
	0x6f, 0x64, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x1a, 0xd7, 0x01, 0x0a, 0x06,
	0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x34,
	0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x46, 0x65, 0x74,
	0x63, 0x68, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x2e, 0x41, 0x72, 0x67, 0x73, 0x52, 0x04,
	0x61, 0x72, 0x67, 0x73, 0x1a, 0x7f, 0x0a, 0x04, 0x41, 0x72, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x05,
	0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x48, 0x00,
	0x52, 0x05, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48,
	0x00, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x61, 0x72, 0x67, 0x73,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x09, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e,
	0x22, 0x8e, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e,
	0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0a, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e,
	0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x06, 0x70, 0x6c, 0x61,
	0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x52, 0x06, 0x6f,
	0x72, 0x69, 0x67, 0x69, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69,
	0x64, 0x22, 0xde, 0x03, 0x0a, 0x03, 0x53, 0x51, 0x4c, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65,
	0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12,
	0x34, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x51,
	0x4c, 0x2e, 0x41, 0x72, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42, 0x02, 0x18, 0x01, 0x52,
	0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x5f, 0x61, 0x72, 0x67,
	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07,
	0x70, 0x6f, 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, 0x4f, 0x0a, 0x0f, 0x6e, 0x61, 0x6d, 0x65, 0x64,
	0x5f, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x26, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x53, 0x51, 0x4c, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65,
	0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x41,
	0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x5f,
	0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x41,
	0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x5a, 0x0a, 0x09, 0x41, 0x72, 0x67, 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, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5c, 0x0a, 0x13, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x72, 0x67,
	0x75, 0x6d, 0x65, 0x6e, 0x74, 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, 0x2f, 0x0a,
	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70,
	0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
	0x38, 0x01, 0x22, 0x75, 0x0a, 0x0d, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74,
	0x12, 0x37, 0x0a, 0x0a, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x72,
	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x22, 0x97, 0x05, 0x0a, 0x04, 0x52, 0x65,
	0x61, 0x64, 0x12, 0x41, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x6c,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x2e, 0x4e, 0x61, 0x6d,
	0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x64,
	0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f,
	0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x2e,
	0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x64, 0x61,
	0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x73,
	0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b,
	0x69, 0x73, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x1a, 0xc0, 0x01, 0x0a, 0x0a,
	0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x75, 0x6e,
	0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65,
	0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x75, 0x6e, 0x70, 0x61, 0x72, 0x73, 0x65,
	0x64, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x07, 0x6f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x61,
	0x64, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x4f, 0x70, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x1a, 0x95,
	0x02, 0x0a, 0x0a, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a,
	0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
	0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x73, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x12, 0x45, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
	0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x2e, 0x44, 0x61,
	0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14,
	0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70,
	0x61, 0x74, 0x68, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74,
	0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63,
	0x61, 0x74, 0x65, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 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,
	0x42, 0x09, 0x0a, 0x07, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f,
	0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42, 0x0b, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x22, 0x75, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2d,
	0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65,
	0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x3b, 0x0a,
	0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65,
	0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x70, 0x0a, 0x06, 0x46, 0x69,
	0x6c, 0x74, 0x65, 0x72, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x12, 0x37, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x95, 0x05, 0x0a,
	0x04, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x6c, 0x65,
	0x66, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x72, 0x69, 0x67, 0x68,
	0x74, 0x12, 0x40, 0x0a, 0x0e, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x2e, 0x4a, 0x6f, 0x69, 0x6e,
	0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23,
	0x0a, 0x0d, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18,
	0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x75,
	0x6d, 0x6e, 0x73, 0x12, 0x4b, 0x0a, 0x0e, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x6f, 0x69, 0x6e,
	0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52,
	0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01,
	0x1a, 0x5c, 0x0a, 0x0c, 0x4a, 0x6f, 0x69, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65,
	0x12, 0x24, 0x0a, 0x0e, 0x69, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75,
	0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x69, 0x73, 0x4c, 0x65, 0x66, 0x74,
	0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x73, 0x5f, 0x72, 0x69, 0x67,
	0x68, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x0d, 0x69, 0x73, 0x52, 0x69, 0x67, 0x68, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x22, 0xd0,
	0x01, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4a,
	0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
	0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x4e, 0x45, 0x52, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x4a,
	0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x5f, 0x4f, 0x55,
	0x54, 0x45, 0x52, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59,
	0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x03, 0x12,
	0x19, 0x0a, 0x15, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x49, 0x47,
	0x48, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f,
	0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x41, 0x4e, 0x54,
	0x49, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45,
	0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x53, 0x45, 0x4d, 0x49, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f,
	0x4a, 0x4f, 0x49, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x4f, 0x53, 0x53, 0x10,
	0x07, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f,
	0x74, 0x79, 0x70, 0x65, 0x22, 0xdf, 0x03, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x65, 0x72,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x0a, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x09, 0x6c, 0x65, 0x66, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x38, 0x0a,
	0x0b, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x72, 0x69, 0x67,
	0x68, 0x74, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x45, 0x0a, 0x0b, 0x73, 0x65, 0x74, 0x5f, 0x6f,
	0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x65, 0x74,
	0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x54,
	0x79, 0x70, 0x65, 0x52, 0x09, 0x73, 0x65, 0x74, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a,
	0x0a, 0x06, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00,
	0x52, 0x05, 0x69, 0x73, 0x41, 0x6c, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x07, 0x62, 0x79,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x06, 0x62,
	0x79, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x61, 0x6c, 0x6c, 0x6f,
	0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
	0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x02, 0x52, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
	0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x88, 0x01,
	0x01, 0x22, 0x72, 0x0a, 0x09, 0x53, 0x65, 0x74, 0x4f, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b,
	0x0a, 0x17, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x53,
	0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52,
	0x53, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50,
	0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x16, 0x0a,
	0x12, 0x53, 0x45, 0x54, 0x5f, 0x4f, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x43,
	0x45, 0x50, 0x54, 0x10, 0x03, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x69, 0x73, 0x5f, 0x61, 0x6c, 0x6c,
	0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x62, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x18, 0x0a, 0x16,
	0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63,
	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x4c, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12,
	0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52,
	0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x14,
	0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c,
	0x69, 0x6d, 0x69, 0x74, 0x22, 0x4f, 0x0a, 0x06, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x2d,
	0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65,
	0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x16, 0x0a,
	0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6f,
	0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x4b, 0x0a, 0x04, 0x54, 0x61, 0x69, 0x6c, 0x12, 0x2d, 0x0a,
	0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x14, 0x0a, 0x05,
	0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d,
	0x69, 0x74, 0x22, 0xfe, 0x05, 0x0a, 0x09, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65,
	0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12,
	0x41, 0x0a, 0x0a, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x2e, 0x47, 0x72,
	0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79,
	0x70, 0x65, 0x12, 0x4c, 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65,
	0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
	0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x67, 0x72, 0x6f,
	0x75, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0x4e, 0x0a, 0x15, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x78,
	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x14, 0x61, 0x67, 0x67, 0x72,
	0x65, 0x67, 0x61, 0x74, 0x65, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73,
	0x12, 0x34, 0x0a, 0x05, 0x70, 0x69, 0x76, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x1e, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x69, 0x76, 0x6f, 0x74, 0x52,
	0x05, 0x70, 0x69, 0x76, 0x6f, 0x74, 0x12, 0x4a, 0x0a, 0x0d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69,
	0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x67,
	0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67,
	0x53, 0x65, 0x74, 0x73, 0x52, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65,
	0x74, 0x73, 0x1a, 0x6f, 0x0a, 0x05, 0x50, 0x69, 0x76, 0x6f, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x63,
	0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x52, 0x03, 0x63, 0x6f, 0x6c, 0x12, 0x39, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75,
	0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x06, 0x76, 0x61, 0x6c,
	0x75, 0x65, 0x73, 0x1a, 0x4c, 0x0a, 0x0c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x53,
	0x65, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f,
	0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65,
	0x74, 0x22, 0x9f, 0x01, 0x0a, 0x09, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12,
	0x1a, 0x0a, 0x16, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e,
	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x47,
	0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x42,
	0x59, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50,
	0x45, 0x5f, 0x52, 0x4f, 0x4c, 0x4c, 0x55, 0x50, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x47, 0x52,
	0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x42, 0x45, 0x10, 0x03, 0x12,
	0x14, 0x0a, 0x10, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x49,
	0x56, 0x4f, 0x54, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x5f, 0x54,
	0x59, 0x50, 0x45, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x45, 0x54,
	0x53, 0x10, 0x05, 0x22, 0xa0, 0x01, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x05,
	0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x6f,
	0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52,
	0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x20, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x67, 0x6c, 0x6f,
	0x62, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x08, 0x69, 0x73, 0x47,
	0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x69, 0x73, 0x5f,
	0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x22, 0x8d, 0x01, 0x0a, 0x04, 0x44, 0x72, 0x6f, 0x70, 0x12,
	0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52,
	0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x33,
	0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75,
	0x6d, 0x6e, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61,
	0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d,
	0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x22, 0xf0, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x64, 0x75, 0x70,
	0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05,
	0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f,
	0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6c,
	0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x5f,
	0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x5f, 0x61, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x43, 0x6f, 0x6c, 0x75,
	0x6d, 0x6e, 0x73, 0x41, 0x73, 0x4b, 0x65, 0x79, 0x73, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a, 0x10,
	0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f, 0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b,
	0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x01, 0x52, 0x0f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e,
	0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x16, 0x0a, 0x14,
	0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x5f, 0x61, 0x73, 0x5f,
	0x6b, 0x65, 0x79, 0x73, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x5f,
	0x77, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x59, 0x0a, 0x0d, 0x4c, 0x6f, 0x63,
	0x61, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x17, 0x0a, 0x04, 0x64, 0x61,
	0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61,
	0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01,
	0x42, 0x07, 0x0a, 0x05, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x22, 0x48, 0x0a, 0x13, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4c, 0x6f,
	0x63, 0x61, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x68,
	0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x4a,
	0x04, 0x08, 0x01, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65,
	0x72, 0x49, 0x64, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x37,
	0x0a, 0x14, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65,
	0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x6c,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x91, 0x02, 0x0a, 0x06, 0x53, 0x61, 0x6d, 0x70,
	0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75,
	0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e, 0x64,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x42, 0x6f, 0x75,
	0x6e, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x70, 0x70, 0x65, 0x72, 0x5f, 0x62, 0x6f, 0x75, 0x6e,
	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x75, 0x70, 0x70, 0x65, 0x72, 0x42, 0x6f,
	0x75, 0x6e, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x70, 0x6c,
	0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52,
	0x0f, 0x77, 0x69, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74,
	0x88, 0x01, 0x01, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28,
	0x03, 0x48, 0x01, 0x52, 0x04, 0x73, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x12, 0x2f, 0x0a, 0x13,
	0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x5f, 0x6f, 0x72,
	0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x64, 0x65, 0x74, 0x65, 0x72,
	0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x13, 0x0a,
	0x11, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65,
	0x6e, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x22, 0x91, 0x01, 0x0a, 0x05,
	0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x88, 0x01, 0x01,
	0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x65,
	0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x65, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03,
	0x52, 0x04, 0x73, 0x74, 0x65, 0x70, 0x12, 0x2a, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61,
	0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
	0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88,
	0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x11, 0x0a, 0x0f,
	0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22,
	0x72, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x71, 0x75, 0x65, 0x72, 0x79, 0x41, 0x6c, 0x69, 0x61, 0x73,
	0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12,
	0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
	0x61, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66, 0x69,
	0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x66,
	0x69, 0x65, 0x72, 0x22, 0x8e, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70,
	0x75, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74,
	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x50,
	0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x68, 0x75,
	0x66, 0x66, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x73, 0x68,
	0x75, 0x66, 0x66, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x68, 0x75,
	0x66, 0x66, 0x6c, 0x65, 0x22, 0x8e, 0x01, 0x0a, 0x0a, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70,
	0x75, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1a, 0x0a,
	0x08, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x08, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x76, 0x65, 0x72,
	0x74, 0x69, 0x63, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x76, 0x65, 0x72,
	0x74, 0x69, 0x63, 0x61, 0x6c, 0x22, 0x72, 0x0a, 0x0a, 0x48, 0x74, 0x6d, 0x6c, 0x53, 0x74, 0x72,
	0x69, 0x6e, 0x67, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70,
	0x75, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x1a, 0x0a,
	0x08, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
	0x08, 0x74, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x22, 0x5c, 0x0a, 0x0b, 0x53, 0x74, 0x61,
	0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x69,
	0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, 0x61,
	0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0x51, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x44,
	0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0x65, 0x0a, 0x0c, 0x53, 0x74,
	0x61, 0x74, 0x43, 0x72, 0x6f, 0x73, 0x73, 0x74, 0x61, 0x62, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6c,
	0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x31, 0x12, 0x12, 0x0a,
	0x04, 0x63, 0x6f, 0x6c, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x6c,
	0x32, 0x22, 0x60, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x74, 0x43, 0x6f, 0x76, 0x12, 0x2d, 0x0a, 0x05,
	0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61,
	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63,
	0x6f, 0x6c, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x31, 0x12,
	0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63,
	0x6f, 0x6c, 0x32, 0x22, 0x89, 0x01, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x74, 0x43, 0x6f, 0x72, 0x72,
	0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12,
	0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63,
	0x6f, 0x6c, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28,
	0x09, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x32, 0x12, 0x1b, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f,
	0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f,
	0x64, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22,
	0xa4, 0x01, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x74, 0x41, 0x70, 0x70, 0x72, 0x6f, 0x78, 0x51, 0x75,
	0x61, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05,
	0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x72, 0x6f,
	0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x01,
	0x52, 0x0d, 0x70, 0x72, 0x6f, 0x62, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12,
	0x25, 0x0a, 0x0e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76,
	0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x7d, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x46, 0x72,
	0x65, 0x71, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x73, 0x75,
	0x70, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x07, 0x73,
	0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x73, 0x75,
	0x70, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xb5, 0x02, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x53, 0x61,
	0x6d, 0x70, 0x6c, 0x65, 0x42, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18,
	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05,
	0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x03, 0x63,
	0x6f, 0x6c, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
	0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65,
	0x42, 0x79, 0x2e, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x66, 0x72, 0x61,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x17, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x64, 0x18, 0x05,
	0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x04, 0x73, 0x65, 0x65, 0x64, 0x88, 0x01, 0x01, 0x1a,
	0x63, 0x0a, 0x08, 0x46, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x07, 0x73,
	0x74, 0x72, 0x61, 0x74, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70,
	0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52,
	0x07, 0x73, 0x74, 0x72, 0x61, 0x74, 0x75, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x72, 0x61, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x66, 0x72, 0x61, 0x63,
	0x74, 0x69, 0x6f, 0x6e, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x73, 0x65, 0x65, 0x64, 0x22, 0x86, 0x01,
	0x0a, 0x06, 0x4e, 0x41, 0x46, 0x69, 0x6c, 0x6c, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x18,
	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x76,
	0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x06,
	0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x86, 0x01, 0x0a, 0x06, 0x4e, 0x41, 0x44, 0x72, 0x6f,
	0x70, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74,
	0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
	0x63, 0x6f, 0x6c, 0x73, 0x12, 0x27, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f,
	0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0b, 0x6d,
	0x69, 0x6e, 0x4e, 0x6f, 0x6e, 0x4e, 0x75, 0x6c, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a,
	0x0e, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x6e, 0x6f, 0x6e, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x73, 0x22,
	0xa8, 0x02, 0x0a, 0x09, 0x4e, 0x41, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x2d, 0x0a,
	0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04,
	0x63, 0x6f, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x73,
	0x12, 0x48, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4e, 0x41, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
	0x2e, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0c, 0x72, 0x65,
	0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x8d, 0x01, 0x0a, 0x0b, 0x52,
	0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x6f, 0x6c,
	0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78,
	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c,
	0x52, 0x08, 0x6f, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x6e, 0x65,
	0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78,
	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c,
	0x52, 0x08, 0x6e, 0x65, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x58, 0x0a, 0x04, 0x54, 0x6f,
	0x44, 0x46, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
	0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75,
	0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e,
	0x61, 0x6d, 0x65, 0x73, 0x22, 0xfe, 0x02, 0x0a, 0x12, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c,
	0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x69,
	0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x69, 0x0a, 0x12, 0x72, 0x65,
	0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x5f, 0x6d, 0x61, 0x70,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
	0x6e, 0x73, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65,
	0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x42,
	0x02, 0x18, 0x01, 0x52, 0x10, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
	0x6e, 0x73, 0x4d, 0x61, 0x70, 0x12, 0x42, 0x0a, 0x07, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73,
	0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
	0x6e, 0x73, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65,
	0x52, 0x07, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x43, 0x0a, 0x15, 0x52, 0x65, 0x6e,
	0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x4d, 0x61, 0x70, 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, 0x1a, 0x45,
	0x0a, 0x06, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x6c, 0x5f,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x4e,
	0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6c, 0x5f, 0x6e,
	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x77, 0x43, 0x6f,
	0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x77, 0x0a, 0x0b, 0x57, 0x69, 0x74, 0x68, 0x43, 0x6f, 0x6c,
	0x75, 0x6d, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x02,
	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
	0x41, 0x6c, 0x69, 0x61, 0x73, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x22, 0x86,
	0x01, 0x0a, 0x0d, 0x57, 0x69, 0x74, 0x68, 0x57, 0x61, 0x74, 0x65, 0x72, 0x6d, 0x61, 0x72, 0x6b,
	0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12,
	0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x27,
	0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c,
	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x54, 0x68,
	0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x84, 0x01, 0x0a, 0x04, 0x48, 0x69, 0x6e, 0x74,
	0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
	0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12,
	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
	0x61, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72,
	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0xc7,
	0x02, 0x0a, 0x07, 0x55, 0x6e, 0x70, 0x69, 0x76, 0x6f, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2b, 0x0a, 0x03, 0x69, 0x64, 0x73,
	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x03, 0x69, 0x64, 0x73, 0x12, 0x3a, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, 0x6e, 0x70, 0x69, 0x76, 0x6f, 0x74, 0x2e, 0x56,
	0x61, 0x6c, 0x75, 0x65, 0x73, 0x48, 0x00, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x88,
	0x01, 0x01, 0x12, 0x30, 0x0a, 0x14, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63,
	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
	0x52, 0x12, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x6f,
	0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65,
	0x1a, 0x3b, 0x0a, 0x06, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x76, 0x61,
	0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x09, 0x0a,
	0x07, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x7a, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x6e,
	0x73, 0x70, 0x6f, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69,
	0x6e, 0x70, 0x75, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x63, 0x6f,
	0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72,
	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f, 0x6c,
	0x75, 0x6d, 0x6e, 0x73, 0x22, 0x7d, 0x0a, 0x1d, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76,
	0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x64, 0x46, 0x75, 0x6e,
	0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x75,
	0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x61, 0x72,
	0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78,
	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65,
	0x6e, 0x74, 0x73, 0x22, 0x6a, 0x0a, 0x08, 0x54, 0x6f, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12,
	0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52,
	0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x2f,
	0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x44,
	0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22,
	0xcb, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42,
	0x79, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x05, 0x69,
	0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x42, 0x0a, 0x0f, 0x70, 0x61,
	0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x73, 0x18, 0x02, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e,
	0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x70, 0x72, 0x73, 0x12, 0x2a,
	0x0a, 0x0e, 0x6e, 0x75, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x50, 0x61, 0x72,
	0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6e,
	0x75, 0x6d, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe8, 0x01,
	0x0a, 0x0d, 0x4d, 0x61, 0x70, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
	0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52,
	0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x42,
	0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66,
	0x69, 0x6e, 0x65, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x66, 0x75,
	0x6e, 0x63, 0x12, 0x22, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x62, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x69, 0x73, 0x42, 0x61, 0x72, 0x72,
	0x69, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c,
	0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x09, 0x70, 0x72,
	0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69,
	0x73, 0x5f, 0x62, 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x72,
	0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x22, 0xd2, 0x06, 0x0a, 0x08, 0x47, 0x72, 0x6f,
	0x75, 0x70, 0x4d, 0x61, 0x70, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e,
	0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69,
	0x6e, 0x70, 0x75, 0x74, 0x12, 0x4c, 0x0a, 0x14, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67,
	0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03,
	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65,
	0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x67,
	0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x73, 0x12, 0x42, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
	0x32, 0x2e, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74,
	0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65,
	0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x4a, 0x0a, 0x13, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e,
	0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20,
	0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x12,
	0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69,
	0x6f, 0x6e, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x49, 0x6e, 0x70, 0x75, 0x74,
	0x12, 0x5b, 0x0a, 0x1c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73,
	0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x1a, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69,
	0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3b, 0x0a,
	0x18, 0x69, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x5f, 0x77,
	0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48,
	0x00, 0x52, 0x14, 0x69, 0x73, 0x4d, 0x61, 0x70, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x57, 0x69,
	0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x6f, 0x75,
	0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48,
	0x01, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01,
	0x12, 0x26, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
	0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
	0x74, 0x43, 0x6f, 0x6e, 0x66, 0x88, 0x01, 0x01, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74,
	0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x44,
	0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x48, 0x03, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65,
	0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x12, 0x65, 0x0a, 0x19, 0x74, 0x72, 0x61,
	0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74,
	0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x72, 0x61,
	0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49,
	0x6e, 0x66, 0x6f, 0x48, 0x04, 0x52, 0x16, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d,
	0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x88, 0x01, 0x01,
	0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x69, 0x73, 0x5f, 0x6d, 0x61, 0x70, 0x5f, 0x67, 0x72, 0x6f, 0x75,
	0x70, 0x73, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x42, 0x0e, 0x0a,
	0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x42, 0x0f, 0x0a,
	0x0d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x42, 0x0f,
	0x0a, 0x0d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x42,
	0x1c, 0x0a, 0x1a, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x77, 0x69,
	0x74, 0x68, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xdf, 0x01,
	0x0a, 0x16, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x6f, 0x72, 0x6d, 0x57, 0x69, 0x74, 0x68, 0x53,
	0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65,
	0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x69, 0x6d,
	0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x16, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74,
	0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x13, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x69,
	0x6d, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12,
	0x41, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x48,
	0x01, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88,
	0x01, 0x01, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d,
	0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a,
	0x0e, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22,
	0x8e, 0x04, 0x0a, 0x0a, 0x43, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x4d, 0x61, 0x70, 0x12, 0x2d,
	0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
	0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65,
	0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x57, 0x0a,
	0x1a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f,
	0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x69, 0x6e,
	0x70, 0x75, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x05, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x18,
	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05,
	0x6f, 0x74, 0x68, 0x65, 0x72, 0x12, 0x57, 0x0a, 0x1a, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x67,
	0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69,
	0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70,
	0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42,
	0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66,
	0x69, 0x6e, 0x65, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x66, 0x75,
	0x6e, 0x63, 0x12, 0x55, 0x0a, 0x19, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x6f, 0x72, 0x74,
	0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
	0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e,
	0x52, 0x17, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x78,
	0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x19, 0x6f, 0x74, 0x68,
	0x65, 0x72, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65,
	0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70,
	0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x53, 0x6f,
	0x72, 0x74, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73,
	0x22, 0xe5, 0x02, 0x0a, 0x16, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x49, 0x6e, 0x50, 0x61, 0x6e, 0x64,
	0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x69,
	0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74,
	0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x4c, 0x0a, 0x14, 0x67, 0x72,
	0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73,
	0x69, 0x6f, 0x6e, 0x52, 0x13, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x70,
	0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x04, 0x66, 0x75, 0x6e, 0x63,
	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x6c,
	0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x75,
	0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x66, 0x75, 0x6e, 0x63, 0x12, 0x23, 0x0a, 0x0d,
	0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d,
	0x61, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d,
	0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x65, 0x53, 0x63,
	0x68, 0x65, 0x6d, 0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d,
	0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75,
	0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
	0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x69, 0x6d,
	0x65, 0x6f, 0x75, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x22, 0xf4, 0x01, 0x0a, 0x24, 0x43, 0x6f, 0x6d,
	0x6d, 0x6f, 0x6e, 0x49, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66,
	0x69, 0x6e, 0x65, 0x64, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f,
	0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61,
	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69,
	0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d,
	0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x64,
	0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x69, 0x73, 0x74, 0x69, 0x63, 0x12, 0x37, 0x0a, 0x09,
	0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75,
	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f,
	0x75, 0x64, 0x74, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61,
	0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f,
	0x6e, 0x55, 0x44, 0x54, 0x46, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x55,
	0x64, 0x74, 0x66, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22,
	0xb1, 0x01, 0x0a, 0x0a, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x55, 0x44, 0x54, 0x46, 0x12, 0x3d,
	0x0a, 0x0b, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x0a,
	0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a,
	0x09, 0x65, 0x76, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
	0x52, 0x08, 0x65, 0x76, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f,
	0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6d,
	0x6d, 0x61, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x76,
	0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e,
	0x56, 0x65, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x21, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x49, 0x6e,
	0x6c, 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x44,
	0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4f, 0x0a,
	0x12, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75,
	0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e,
	0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, 0x10, 0x70, 0x79,
	0x74, 0x68, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0d,
	0x0a, 0x0b, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x4b, 0x0a,
	0x10, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63,
	0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x70,
	0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x56, 0x65, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x43,
	0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x0a,
	0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c,
	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04,
	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
	0x12, 0x33, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
	0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
	0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6d, 0x65,
	0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x84, 0x03, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x73, 0x65, 0x12,
	0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52,
	0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x38,
	0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x50,
	0x61, 0x72, 0x73, 0x65, 0x2e, 0x50, 0x61, 0x72, 0x73, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74,
	0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65,
	0x6d, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70,
	0x65, 0x48, 0x00, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x12, 0x3b,
	0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
	0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x50, 0x61, 0x72, 0x73, 0x65, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74,
	0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f,
	0x70, 0x74, 0x69, 0x6f, 0x6e, 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, 0x58, 0x0a, 0x0b, 0x50, 0x61, 0x72, 0x73, 0x65,
	0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x41, 0x52, 0x53, 0x45, 0x5f,
	0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
	0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x52, 0x53, 0x45, 0x5f, 0x46, 0x4f,
	0x52, 0x4d, 0x41, 0x54, 0x5f, 0x43, 0x53, 0x56, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x41,
	0x52, 0x53, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10,
	0x02, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0xdb, 0x03, 0x0a,
	0x08, 0x41, 0x73, 0x4f, 0x66, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x65, 0x66,
	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e,
	0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e,
	0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f,
	0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05,
	0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x37, 0x0a, 0x0a, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x61, 0x73,
	0x5f, 0x6f, 0x66, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72,
	0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73,
	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x65, 0x66, 0x74, 0x41, 0x73, 0x4f, 0x66, 0x12, 0x39,
	0x0a, 0x0b, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x61, 0x73, 0x5f, 0x6f, 0x66, 0x18, 0x04, 0x20,
	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e,
	0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09,
	0x72, 0x69, 0x67, 0x68, 0x74, 0x41, 0x73, 0x4f, 0x66, 0x12, 0x36, 0x0a, 0x09, 0x6a, 0x6f, 0x69,
	0x6e, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73,
	0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70,
	0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x45, 0x78, 0x70,
	0x72, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d,
	0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x43,
	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x74,
	0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54,
	0x79, 0x70, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65,
	0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f,
	0x6e, 0x52, 0x09, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2e, 0x0a, 0x13,
	0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x65, 0x78, 0x61, 0x63, 0x74, 0x5f, 0x6d, 0x61, 0x74, 0x63,
	0x68, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x77,
	0x45, 0x78, 0x61, 0x63, 0x74, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09,
	0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52,
	0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xe6, 0x01, 0x0a, 0x0b, 0x4c,
	0x61, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4a, 0x6f, 0x69, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6c, 0x65,
	0x66, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b,
	0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f,
	0x6e, 0x52, 0x04, 0x6c, 0x65, 0x66, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74,
	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63,
	0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
	0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x63,
	0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
	0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45,
	0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6a, 0x6f, 0x69, 0x6e, 0x43,
	0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x39, 0x0a, 0x09, 0x6a, 0x6f, 0x69, 0x6e,
	0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x73, 0x70,
	0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4a, 0x6f, 0x69, 0x6e,
	0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x6a, 0x6f, 0x69, 0x6e, 0x54,
	0x79, 0x70, 0x65, 0x42, 0x36, 0x0a, 0x1e, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68,
	0x65, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x12, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
	0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x33,
}

var (
	file_spark_connect_relations_proto_rawDescOnce sync.Once
	file_spark_connect_relations_proto_rawDescData = file_spark_connect_relations_proto_rawDesc
)

func file_spark_connect_relations_proto_rawDescGZIP() []byte {
	file_spark_connect_relations_proto_rawDescOnce.Do(func() {
		file_spark_connect_relations_proto_rawDescData = protoimpl.X.CompressGZIP(file_spark_connect_relations_proto_rawDescData)
	})
	return file_spark_connect_relations_proto_rawDescData
}

var file_spark_connect_relations_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
var file_spark_connect_relations_proto_msgTypes = make([]protoimpl.MessageInfo, 80)
var file_spark_connect_relations_proto_goTypes = []interface{}{
	(Join_JoinType)(0),                           // 0: spark.connect.Join.JoinType
	(SetOperation_SetOpType)(0),                  // 1: spark.connect.SetOperation.SetOpType
	(Aggregate_GroupType)(0),                     // 2: spark.connect.Aggregate.GroupType
	(Parse_ParseFormat)(0),                       // 3: spark.connect.Parse.ParseFormat
	(*Relation)(nil),                             // 4: spark.connect.Relation
	(*MlRelation)(nil),                           // 5: spark.connect.MlRelation
	(*Fetch)(nil),                                // 6: spark.connect.Fetch
	(*Unknown)(nil),                              // 7: spark.connect.Unknown
	(*RelationCommon)(nil),                       // 8: spark.connect.RelationCommon
	(*SQL)(nil),                                  // 9: spark.connect.SQL
	(*WithRelations)(nil),                        // 10: spark.connect.WithRelations
	(*Read)(nil),                                 // 11: spark.connect.Read
	(*Project)(nil),                              // 12: spark.connect.Project
	(*Filter)(nil),                               // 13: spark.connect.Filter
	(*Join)(nil),                                 // 14: spark.connect.Join
	(*SetOperation)(nil),                         // 15: spark.connect.SetOperation
	(*Limit)(nil),                                // 16: spark.connect.Limit
	(*Offset)(nil),                               // 17: spark.connect.Offset
	(*Tail)(nil),                                 // 18: spark.connect.Tail
	(*Aggregate)(nil),                            // 19: spark.connect.Aggregate
	(*Sort)(nil),                                 // 20: spark.connect.Sort
	(*Drop)(nil),                                 // 21: spark.connect.Drop
	(*Deduplicate)(nil),                          // 22: spark.connect.Deduplicate
	(*LocalRelation)(nil),                        // 23: spark.connect.LocalRelation
	(*CachedLocalRelation)(nil),                  // 24: spark.connect.CachedLocalRelation
	(*CachedRemoteRelation)(nil),                 // 25: spark.connect.CachedRemoteRelation
	(*Sample)(nil),                               // 26: spark.connect.Sample
	(*Range)(nil),                                // 27: spark.connect.Range
	(*SubqueryAlias)(nil),                        // 28: spark.connect.SubqueryAlias
	(*Repartition)(nil),                          // 29: spark.connect.Repartition
	(*ShowString)(nil),                           // 30: spark.connect.ShowString
	(*HtmlString)(nil),                           // 31: spark.connect.HtmlString
	(*StatSummary)(nil),                          // 32: spark.connect.StatSummary
	(*StatDescribe)(nil),                         // 33: spark.connect.StatDescribe
	(*StatCrosstab)(nil),                         // 34: spark.connect.StatCrosstab
	(*StatCov)(nil),                              // 35: spark.connect.StatCov
	(*StatCorr)(nil),                             // 36: spark.connect.StatCorr
	(*StatApproxQuantile)(nil),                   // 37: spark.connect.StatApproxQuantile
	(*StatFreqItems)(nil),                        // 38: spark.connect.StatFreqItems
	(*StatSampleBy)(nil),                         // 39: spark.connect.StatSampleBy
	(*NAFill)(nil),                               // 40: spark.connect.NAFill
	(*NADrop)(nil),                               // 41: spark.connect.NADrop
	(*NAReplace)(nil),                            // 42: spark.connect.NAReplace
	(*ToDF)(nil),                                 // 43: spark.connect.ToDF
	(*WithColumnsRenamed)(nil),                   // 44: spark.connect.WithColumnsRenamed
	(*WithColumns)(nil),                          // 45: spark.connect.WithColumns
	(*WithWatermark)(nil),                        // 46: spark.connect.WithWatermark
	(*Hint)(nil),                                 // 47: spark.connect.Hint
	(*Unpivot)(nil),                              // 48: spark.connect.Unpivot
	(*Transpose)(nil),                            // 49: spark.connect.Transpose
	(*UnresolvedTableValuedFunction)(nil),        // 50: spark.connect.UnresolvedTableValuedFunction
	(*ToSchema)(nil),                             // 51: spark.connect.ToSchema
	(*RepartitionByExpression)(nil),              // 52: spark.connect.RepartitionByExpression
	(*MapPartitions)(nil),                        // 53: spark.connect.MapPartitions
	(*GroupMap)(nil),                             // 54: spark.connect.GroupMap
	(*TransformWithStateInfo)(nil),               // 55: spark.connect.TransformWithStateInfo
	(*CoGroupMap)(nil),                           // 56: spark.connect.CoGroupMap
	(*ApplyInPandasWithState)(nil),               // 57: spark.connect.ApplyInPandasWithState
	(*CommonInlineUserDefinedTableFunction)(nil), // 58: spark.connect.CommonInlineUserDefinedTableFunction
	(*PythonUDTF)(nil),                           // 59: spark.connect.PythonUDTF
	(*CommonInlineUserDefinedDataSource)(nil),    // 60: spark.connect.CommonInlineUserDefinedDataSource
	(*PythonDataSource)(nil),                     // 61: spark.connect.PythonDataSource
	(*CollectMetrics)(nil),                       // 62: spark.connect.CollectMetrics
	(*Parse)(nil),                                // 63: spark.connect.Parse
	(*AsOfJoin)(nil),                             // 64: spark.connect.AsOfJoin
	(*LateralJoin)(nil),                          // 65: spark.connect.LateralJoin
	(*MlRelation_Transform)(nil),                 // 66: spark.connect.MlRelation.Transform
	(*Fetch_Method)(nil),                         // 67: spark.connect.Fetch.Method
	(*Fetch_Method_Args)(nil),                    // 68: spark.connect.Fetch.Method.Args
	nil,                                          // 69: spark.connect.SQL.ArgsEntry
	nil,                                          // 70: spark.connect.SQL.NamedArgumentsEntry
	(*Read_NamedTable)(nil),                      // 71: spark.connect.Read.NamedTable
	(*Read_DataSource)(nil),                      // 72: spark.connect.Read.DataSource
	nil,                                          // 73: spark.connect.Read.NamedTable.OptionsEntry
	nil,                                          // 74: spark.connect.Read.DataSource.OptionsEntry
	(*Join_JoinDataType)(nil),                    // 75: spark.connect.Join.JoinDataType
	(*Aggregate_Pivot)(nil),                      // 76: spark.connect.Aggregate.Pivot
	(*Aggregate_GroupingSets)(nil),               // 77: spark.connect.Aggregate.GroupingSets
	(*StatSampleBy_Fraction)(nil),                // 78: spark.connect.StatSampleBy.Fraction
	(*NAReplace_Replacement)(nil),                // 79: spark.connect.NAReplace.Replacement
	nil,                                          // 80: spark.connect.WithColumnsRenamed.RenameColumnsMapEntry
	(*WithColumnsRenamed_Rename)(nil),            // 81: spark.connect.WithColumnsRenamed.Rename
	(*Unpivot_Values)(nil),                       // 82: spark.connect.Unpivot.Values
	nil,                                          // 83: spark.connect.Parse.OptionsEntry
	(*Catalog)(nil),                              // 84: spark.connect.Catalog
	(*anypb.Any)(nil),                            // 85: google.protobuf.Any
	(*ObjectRef)(nil),                            // 86: spark.connect.ObjectRef
	(*Origin)(nil),                               // 87: spark.connect.Origin
	(*Expression_Literal)(nil),                   // 88: spark.connect.Expression.Literal
	(*Expression)(nil),                           // 89: spark.connect.Expression
	(*Expression_SortOrder)(nil),                 // 90: spark.connect.Expression.SortOrder
	(*Expression_Alias)(nil),                     // 91: spark.connect.Expression.Alias
	(*DataType)(nil),                             // 92: spark.connect.DataType
	(*CommonInlineUserDefinedFunction)(nil),      // 93: spark.connect.CommonInlineUserDefinedFunction
	(*MlOperator)(nil),                           // 94: spark.connect.MlOperator
	(*MlParams)(nil),                             // 95: spark.connect.MlParams
}
var file_spark_connect_relations_proto_depIdxs = []int32{
	8,   // 0: spark.connect.Relation.common:type_name -> spark.connect.RelationCommon
	11,  // 1: spark.connect.Relation.read:type_name -> spark.connect.Read
	12,  // 2: spark.connect.Relation.project:type_name -> spark.connect.Project
	13,  // 3: spark.connect.Relation.filter:type_name -> spark.connect.Filter
	14,  // 4: spark.connect.Relation.join:type_name -> spark.connect.Join
	15,  // 5: spark.connect.Relation.set_op:type_name -> spark.connect.SetOperation
	20,  // 6: spark.connect.Relation.sort:type_name -> spark.connect.Sort
	16,  // 7: spark.connect.Relation.limit:type_name -> spark.connect.Limit
	19,  // 8: spark.connect.Relation.aggregate:type_name -> spark.connect.Aggregate
	9,   // 9: spark.connect.Relation.sql:type_name -> spark.connect.SQL
	23,  // 10: spark.connect.Relation.local_relation:type_name -> spark.connect.LocalRelation
	26,  // 11: spark.connect.Relation.sample:type_name -> spark.connect.Sample
	17,  // 12: spark.connect.Relation.offset:type_name -> spark.connect.Offset
	22,  // 13: spark.connect.Relation.deduplicate:type_name -> spark.connect.Deduplicate
	27,  // 14: spark.connect.Relation.range:type_name -> spark.connect.Range
	28,  // 15: spark.connect.Relation.subquery_alias:type_name -> spark.connect.SubqueryAlias
	29,  // 16: spark.connect.Relation.repartition:type_name -> spark.connect.Repartition
	43,  // 17: spark.connect.Relation.to_df:type_name -> spark.connect.ToDF
	44,  // 18: spark.connect.Relation.with_columns_renamed:type_name -> spark.connect.WithColumnsRenamed
	30,  // 19: spark.connect.Relation.show_string:type_name -> spark.connect.ShowString
	21,  // 20: spark.connect.Relation.drop:type_name -> spark.connect.Drop
	18,  // 21: spark.connect.Relation.tail:type_name -> spark.connect.Tail
	45,  // 22: spark.connect.Relation.with_columns:type_name -> spark.connect.WithColumns
	47,  // 23: spark.connect.Relation.hint:type_name -> spark.connect.Hint
	48,  // 24: spark.connect.Relation.unpivot:type_name -> spark.connect.Unpivot
	51,  // 25: spark.connect.Relation.to_schema:type_name -> spark.connect.ToSchema
	52,  // 26: spark.connect.Relation.repartition_by_expression:type_name -> spark.connect.RepartitionByExpression
	53,  // 27: spark.connect.Relation.map_partitions:type_name -> spark.connect.MapPartitions
	62,  // 28: spark.connect.Relation.collect_metrics:type_name -> spark.connect.CollectMetrics
	63,  // 29: spark.connect.Relation.parse:type_name -> spark.connect.Parse
	54,  // 30: spark.connect.Relation.group_map:type_name -> spark.connect.GroupMap
	56,  // 31: spark.connect.Relation.co_group_map:type_name -> spark.connect.CoGroupMap
	46,  // 32: spark.connect.Relation.with_watermark:type_name -> spark.connect.WithWatermark
	57,  // 33: spark.connect.Relation.apply_in_pandas_with_state:type_name -> spark.connect.ApplyInPandasWithState
	31,  // 34: spark.connect.Relation.html_string:type_name -> spark.connect.HtmlString
	24,  // 35: spark.connect.Relation.cached_local_relation:type_name -> spark.connect.CachedLocalRelation
	25,  // 36: spark.connect.Relation.cached_remote_relation:type_name -> spark.connect.CachedRemoteRelation
	58,  // 37: spark.connect.Relation.common_inline_user_defined_table_function:type_name -> spark.connect.CommonInlineUserDefinedTableFunction
	64,  // 38: spark.connect.Relation.as_of_join:type_name -> spark.connect.AsOfJoin
	60,  // 39: spark.connect.Relation.common_inline_user_defined_data_source:type_name -> spark.connect.CommonInlineUserDefinedDataSource
	10,  // 40: spark.connect.Relation.with_relations:type_name -> spark.connect.WithRelations
	49,  // 41: spark.connect.Relation.transpose:type_name -> spark.connect.Transpose
	50,  // 42: spark.connect.Relation.unresolved_table_valued_function:type_name -> spark.connect.UnresolvedTableValuedFunction
	65,  // 43: spark.connect.Relation.lateral_join:type_name -> spark.connect.LateralJoin
	40,  // 44: spark.connect.Relation.fill_na:type_name -> spark.connect.NAFill
	41,  // 45: spark.connect.Relation.drop_na:type_name -> spark.connect.NADrop
	42,  // 46: spark.connect.Relation.replace:type_name -> spark.connect.NAReplace
	32,  // 47: spark.connect.Relation.summary:type_name -> spark.connect.StatSummary
	34,  // 48: spark.connect.Relation.crosstab:type_name -> spark.connect.StatCrosstab
	33,  // 49: spark.connect.Relation.describe:type_name -> spark.connect.StatDescribe
	35,  // 50: spark.connect.Relation.cov:type_name -> spark.connect.StatCov
	36,  // 51: spark.connect.Relation.corr:type_name -> spark.connect.StatCorr
	37,  // 52: spark.connect.Relation.approx_quantile:type_name -> spark.connect.StatApproxQuantile
	38,  // 53: spark.connect.Relation.freq_items:type_name -> spark.connect.StatFreqItems
	39,  // 54: spark.connect.Relation.sample_by:type_name -> spark.connect.StatSampleBy
	84,  // 55: spark.connect.Relation.catalog:type_name -> spark.connect.Catalog
	5,   // 56: spark.connect.Relation.ml_relation:type_name -> spark.connect.MlRelation
	85,  // 57: spark.connect.Relation.extension:type_name -> google.protobuf.Any
	7,   // 58: spark.connect.Relation.unknown:type_name -> spark.connect.Unknown
	66,  // 59: spark.connect.MlRelation.transform:type_name -> spark.connect.MlRelation.Transform
	6,   // 60: spark.connect.MlRelation.fetch:type_name -> spark.connect.Fetch
	86,  // 61: spark.connect.Fetch.obj_ref:type_name -> spark.connect.ObjectRef
	67,  // 62: spark.connect.Fetch.methods:type_name -> spark.connect.Fetch.Method
	87,  // 63: spark.connect.RelationCommon.origin:type_name -> spark.connect.Origin
	69,  // 64: spark.connect.SQL.args:type_name -> spark.connect.SQL.ArgsEntry
	88,  // 65: spark.connect.SQL.pos_args:type_name -> spark.connect.Expression.Literal
	70,  // 66: spark.connect.SQL.named_arguments:type_name -> spark.connect.SQL.NamedArgumentsEntry
	89,  // 67: spark.connect.SQL.pos_arguments:type_name -> spark.connect.Expression
	4,   // 68: spark.connect.WithRelations.root:type_name -> spark.connect.Relation
	4,   // 69: spark.connect.WithRelations.references:type_name -> spark.connect.Relation
	71,  // 70: spark.connect.Read.named_table:type_name -> spark.connect.Read.NamedTable
	72,  // 71: spark.connect.Read.data_source:type_name -> spark.connect.Read.DataSource
	4,   // 72: spark.connect.Project.input:type_name -> spark.connect.Relation
	89,  // 73: spark.connect.Project.expressions:type_name -> spark.connect.Expression
	4,   // 74: spark.connect.Filter.input:type_name -> spark.connect.Relation
	89,  // 75: spark.connect.Filter.condition:type_name -> spark.connect.Expression
	4,   // 76: spark.connect.Join.left:type_name -> spark.connect.Relation
	4,   // 77: spark.connect.Join.right:type_name -> spark.connect.Relation
	89,  // 78: spark.connect.Join.join_condition:type_name -> spark.connect.Expression
	0,   // 79: spark.connect.Join.join_type:type_name -> spark.connect.Join.JoinType
	75,  // 80: spark.connect.Join.join_data_type:type_name -> spark.connect.Join.JoinDataType
	4,   // 81: spark.connect.SetOperation.left_input:type_name -> spark.connect.Relation
	4,   // 82: spark.connect.SetOperation.right_input:type_name -> spark.connect.Relation
	1,   // 83: spark.connect.SetOperation.set_op_type:type_name -> spark.connect.SetOperation.SetOpType
	4,   // 84: spark.connect.Limit.input:type_name -> spark.connect.Relation
	4,   // 85: spark.connect.Offset.input:type_name -> spark.connect.Relation
	4,   // 86: spark.connect.Tail.input:type_name -> spark.connect.Relation
	4,   // 87: spark.connect.Aggregate.input:type_name -> spark.connect.Relation
	2,   // 88: spark.connect.Aggregate.group_type:type_name -> spark.connect.Aggregate.GroupType
	89,  // 89: spark.connect.Aggregate.grouping_expressions:type_name -> spark.connect.Expression
	89,  // 90: spark.connect.Aggregate.aggregate_expressions:type_name -> spark.connect.Expression
	76,  // 91: spark.connect.Aggregate.pivot:type_name -> spark.connect.Aggregate.Pivot
	77,  // 92: spark.connect.Aggregate.grouping_sets:type_name -> spark.connect.Aggregate.GroupingSets
	4,   // 93: spark.connect.Sort.input:type_name -> spark.connect.Relation
	90,  // 94: spark.connect.Sort.order:type_name -> spark.connect.Expression.SortOrder
	4,   // 95: spark.connect.Drop.input:type_name -> spark.connect.Relation
	89,  // 96: spark.connect.Drop.columns:type_name -> spark.connect.Expression
	4,   // 97: spark.connect.Deduplicate.input:type_name -> spark.connect.Relation
	4,   // 98: spark.connect.Sample.input:type_name -> spark.connect.Relation
	4,   // 99: spark.connect.SubqueryAlias.input:type_name -> spark.connect.Relation
	4,   // 100: spark.connect.Repartition.input:type_name -> spark.connect.Relation
	4,   // 101: spark.connect.ShowString.input:type_name -> spark.connect.Relation
	4,   // 102: spark.connect.HtmlString.input:type_name -> spark.connect.Relation
	4,   // 103: spark.connect.StatSummary.input:type_name -> spark.connect.Relation
	4,   // 104: spark.connect.StatDescribe.input:type_name -> spark.connect.Relation
	4,   // 105: spark.connect.StatCrosstab.input:type_name -> spark.connect.Relation
	4,   // 106: spark.connect.StatCov.input:type_name -> spark.connect.Relation
	4,   // 107: spark.connect.StatCorr.input:type_name -> spark.connect.Relation
	4,   // 108: spark.connect.StatApproxQuantile.input:type_name -> spark.connect.Relation
	4,   // 109: spark.connect.StatFreqItems.input:type_name -> spark.connect.Relation
	4,   // 110: spark.connect.StatSampleBy.input:type_name -> spark.connect.Relation
	89,  // 111: spark.connect.StatSampleBy.col:type_name -> spark.connect.Expression
	78,  // 112: spark.connect.StatSampleBy.fractions:type_name -> spark.connect.StatSampleBy.Fraction
	4,   // 113: spark.connect.NAFill.input:type_name -> spark.connect.Relation
	88,  // 114: spark.connect.NAFill.values:type_name -> spark.connect.Expression.Literal
	4,   // 115: spark.connect.NADrop.input:type_name -> spark.connect.Relation
	4,   // 116: spark.connect.NAReplace.input:type_name -> spark.connect.Relation
	79,  // 117: spark.connect.NAReplace.replacements:type_name -> spark.connect.NAReplace.Replacement
	4,   // 118: spark.connect.ToDF.input:type_name -> spark.connect.Relation
	4,   // 119: spark.connect.WithColumnsRenamed.input:type_name -> spark.connect.Relation
	80,  // 120: spark.connect.WithColumnsRenamed.rename_columns_map:type_name -> spark.connect.WithColumnsRenamed.RenameColumnsMapEntry
	81,  // 121: spark.connect.WithColumnsRenamed.renames:type_name -> spark.connect.WithColumnsRenamed.Rename
	4,   // 122: spark.connect.WithColumns.input:type_name -> spark.connect.Relation
	91,  // 123: spark.connect.WithColumns.aliases:type_name -> spark.connect.Expression.Alias
	4,   // 124: spark.connect.WithWatermark.input:type_name -> spark.connect.Relation
	4,   // 125: spark.connect.Hint.input:type_name -> spark.connect.Relation
	89,  // 126: spark.connect.Hint.parameters:type_name -> spark.connect.Expression
	4,   // 127: spark.connect.Unpivot.input:type_name -> spark.connect.Relation
	89,  // 128: spark.connect.Unpivot.ids:type_name -> spark.connect.Expression
	82,  // 129: spark.connect.Unpivot.values:type_name -> spark.connect.Unpivot.Values
	4,   // 130: spark.connect.Transpose.input:type_name -> spark.connect.Relation
	89,  // 131: spark.connect.Transpose.index_columns:type_name -> spark.connect.Expression
	89,  // 132: spark.connect.UnresolvedTableValuedFunction.arguments:type_name -> spark.connect.Expression
	4,   // 133: spark.connect.ToSchema.input:type_name -> spark.connect.Relation
	92,  // 134: spark.connect.ToSchema.schema:type_name -> spark.connect.DataType
	4,   // 135: spark.connect.RepartitionByExpression.input:type_name -> spark.connect.Relation
	89,  // 136: spark.connect.RepartitionByExpression.partition_exprs:type_name -> spark.connect.Expression
	4,   // 137: spark.connect.MapPartitions.input:type_name -> spark.connect.Relation
	93,  // 138: spark.connect.MapPartitions.func:type_name -> spark.connect.CommonInlineUserDefinedFunction
	4,   // 139: spark.connect.GroupMap.input:type_name -> spark.connect.Relation
	89,  // 140: spark.connect.GroupMap.grouping_expressions:type_name -> spark.connect.Expression
	93,  // 141: spark.connect.GroupMap.func:type_name -> spark.connect.CommonInlineUserDefinedFunction
	89,  // 142: spark.connect.GroupMap.sorting_expressions:type_name -> spark.connect.Expression
	4,   // 143: spark.connect.GroupMap.initial_input:type_name -> spark.connect.Relation
	89,  // 144: spark.connect.GroupMap.initial_grouping_expressions:type_name -> spark.connect.Expression
	92,  // 145: spark.connect.GroupMap.state_schema:type_name -> spark.connect.DataType
	55,  // 146: spark.connect.GroupMap.transform_with_state_info:type_name -> spark.connect.TransformWithStateInfo
	92,  // 147: spark.connect.TransformWithStateInfo.output_schema:type_name -> spark.connect.DataType
	4,   // 148: spark.connect.CoGroupMap.input:type_name -> spark.connect.Relation
	89,  // 149: spark.connect.CoGroupMap.input_grouping_expressions:type_name -> spark.connect.Expression
	4,   // 150: spark.connect.CoGroupMap.other:type_name -> spark.connect.Relation
	89,  // 151: spark.connect.CoGroupMap.other_grouping_expressions:type_name -> spark.connect.Expression
	93,  // 152: spark.connect.CoGroupMap.func:type_name -> spark.connect.CommonInlineUserDefinedFunction
	89,  // 153: spark.connect.CoGroupMap.input_sorting_expressions:type_name -> spark.connect.Expression
	89,  // 154: spark.connect.CoGroupMap.other_sorting_expressions:type_name -> spark.connect.Expression
	4,   // 155: spark.connect.ApplyInPandasWithState.input:type_name -> spark.connect.Relation
	89,  // 156: spark.connect.ApplyInPandasWithState.grouping_expressions:type_name -> spark.connect.Expression
	93,  // 157: spark.connect.ApplyInPandasWithState.func:type_name -> spark.connect.CommonInlineUserDefinedFunction
	89,  // 158: spark.connect.CommonInlineUserDefinedTableFunction.arguments:type_name -> spark.connect.Expression
	59,  // 159: spark.connect.CommonInlineUserDefinedTableFunction.python_udtf:type_name -> spark.connect.PythonUDTF
	92,  // 160: spark.connect.PythonUDTF.return_type:type_name -> spark.connect.DataType
	61,  // 161: spark.connect.CommonInlineUserDefinedDataSource.python_data_source:type_name -> spark.connect.PythonDataSource
	4,   // 162: spark.connect.CollectMetrics.input:type_name -> spark.connect.Relation
	89,  // 163: spark.connect.CollectMetrics.metrics:type_name -> spark.connect.Expression
	4,   // 164: spark.connect.Parse.input:type_name -> spark.connect.Relation
	3,   // 165: spark.connect.Parse.format:type_name -> spark.connect.Parse.ParseFormat
	92,  // 166: spark.connect.Parse.schema:type_name -> spark.connect.DataType
	83,  // 167: spark.connect.Parse.options:type_name -> spark.connect.Parse.OptionsEntry
	4,   // 168: spark.connect.AsOfJoin.left:type_name -> spark.connect.Relation
	4,   // 169: spark.connect.AsOfJoin.right:type_name -> spark.connect.Relation
	89,  // 170: spark.connect.AsOfJoin.left_as_of:type_name -> spark.connect.Expression
	89,  // 171: spark.connect.AsOfJoin.right_as_of:type_name -> spark.connect.Expression
	89,  // 172: spark.connect.AsOfJoin.join_expr:type_name -> spark.connect.Expression
	89,  // 173: spark.connect.AsOfJoin.tolerance:type_name -> spark.connect.Expression
	4,   // 174: spark.connect.LateralJoin.left:type_name -> spark.connect.Relation
	4,   // 175: spark.connect.LateralJoin.right:type_name -> spark.connect.Relation
	89,  // 176: spark.connect.LateralJoin.join_condition:type_name -> spark.connect.Expression
	0,   // 177: spark.connect.LateralJoin.join_type:type_name -> spark.connect.Join.JoinType
	86,  // 178: spark.connect.MlRelation.Transform.obj_ref:type_name -> spark.connect.ObjectRef
	94,  // 179: spark.connect.MlRelation.Transform.transformer:type_name -> spark.connect.MlOperator
	4,   // 180: spark.connect.MlRelation.Transform.input:type_name -> spark.connect.Relation
	95,  // 181: spark.connect.MlRelation.Transform.params:type_name -> spark.connect.MlParams
	68,  // 182: spark.connect.Fetch.Method.args:type_name -> spark.connect.Fetch.Method.Args
	88,  // 183: spark.connect.Fetch.Method.Args.param:type_name -> spark.connect.Expression.Literal
	4,   // 184: spark.connect.Fetch.Method.Args.input:type_name -> spark.connect.Relation
	88,  // 185: spark.connect.SQL.ArgsEntry.value:type_name -> spark.connect.Expression.Literal
	89,  // 186: spark.connect.SQL.NamedArgumentsEntry.value:type_name -> spark.connect.Expression
	73,  // 187: spark.connect.Read.NamedTable.options:type_name -> spark.connect.Read.NamedTable.OptionsEntry
	74,  // 188: spark.connect.Read.DataSource.options:type_name -> spark.connect.Read.DataSource.OptionsEntry
	89,  // 189: spark.connect.Aggregate.Pivot.col:type_name -> spark.connect.Expression
	88,  // 190: spark.connect.Aggregate.Pivot.values:type_name -> spark.connect.Expression.Literal
	89,  // 191: spark.connect.Aggregate.GroupingSets.grouping_set:type_name -> spark.connect.Expression
	88,  // 192: spark.connect.StatSampleBy.Fraction.stratum:type_name -> spark.connect.Expression.Literal
	88,  // 193: spark.connect.NAReplace.Replacement.old_value:type_name -> spark.connect.Expression.Literal
	88,  // 194: spark.connect.NAReplace.Replacement.new_value:type_name -> spark.connect.Expression.Literal
	89,  // 195: spark.connect.Unpivot.Values.values:type_name -> spark.connect.Expression
	196, // [196:196] is the sub-list for method output_type
	196, // [196:196] is the sub-list for method input_type
	196, // [196:196] is the sub-list for extension type_name
	196, // [196:196] is the sub-list for extension extendee
	0,   // [0:196] is the sub-list for field type_name
}

func init() { file_spark_connect_relations_proto_init() }
func file_spark_connect_relations_proto_init() {
	if File_spark_connect_relations_proto != nil {
		return
	}
	file_spark_connect_expressions_proto_init()
	file_spark_connect_types_proto_init()
	file_spark_connect_catalog_proto_init()
	file_spark_connect_common_proto_init()
	file_spark_connect_ml_common_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_spark_connect_relations_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Relation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MlRelation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Fetch); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Unknown); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RelationCommon); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SQL); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithRelations); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Read); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Project); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Filter); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Join); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SetOperation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Limit); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Offset); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Tail); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Aggregate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Sort); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Drop); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Deduplicate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LocalRelation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CachedLocalRelation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CachedRemoteRelation); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Sample); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Range); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*SubqueryAlias); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Repartition); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ShowString); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*HtmlString); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatSummary); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatDescribe); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatCrosstab); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatCov); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatCorr); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatApproxQuantile); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatFreqItems); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatSampleBy); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NAFill); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NADrop); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NAReplace); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ToDF); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithColumnsRenamed); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithColumns); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithWatermark); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Hint); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Unpivot); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Transpose); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UnresolvedTableValuedFunction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ToSchema); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*RepartitionByExpression); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MapPartitions); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*GroupMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*TransformWithStateInfo); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CoGroupMap); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*ApplyInPandasWithState); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommonInlineUserDefinedTableFunction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PythonUDTF); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CommonInlineUserDefinedDataSource); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*PythonDataSource); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*CollectMetrics); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Parse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*AsOfJoin); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*LateralJoin); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*MlRelation_Transform); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Fetch_Method); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Fetch_Method_Args); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Read_NamedTable); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Read_DataSource); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Join_JoinDataType); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Aggregate_Pivot); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Aggregate_GroupingSets); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*StatSampleBy_Fraction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*NAReplace_Replacement); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*WithColumnsRenamed_Rename); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_spark_connect_relations_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*Unpivot_Values); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_spark_connect_relations_proto_msgTypes[0].OneofWrappers = []interface{}{
		(*Relation_Read)(nil),
		(*Relation_Project)(nil),
		(*Relation_Filter)(nil),
		(*Relation_Join)(nil),
		(*Relation_SetOp)(nil),
		(*Relation_Sort)(nil),
		(*Relation_Limit)(nil),
		(*Relation_Aggregate)(nil),
		(*Relation_Sql)(nil),
		(*Relation_LocalRelation)(nil),
		(*Relation_Sample)(nil),
		(*Relation_Offset)(nil),
		(*Relation_Deduplicate)(nil),
		(*Relation_Range)(nil),
		(*Relation_SubqueryAlias)(nil),
		(*Relation_Repartition)(nil),
		(*Relation_ToDf)(nil),
		(*Relation_WithColumnsRenamed)(nil),
		(*Relation_ShowString)(nil),
		(*Relation_Drop)(nil),
		(*Relation_Tail)(nil),
		(*Relation_WithColumns)(nil),
		(*Relation_Hint)(nil),
		(*Relation_Unpivot)(nil),
		(*Relation_ToSchema)(nil),
		(*Relation_RepartitionByExpression)(nil),
		(*Relation_MapPartitions)(nil),
		(*Relation_CollectMetrics)(nil),
		(*Relation_Parse)(nil),
		(*Relation_GroupMap)(nil),
		(*Relation_CoGroupMap)(nil),
		(*Relation_WithWatermark)(nil),
		(*Relation_ApplyInPandasWithState)(nil),
		(*Relation_HtmlString)(nil),
		(*Relation_CachedLocalRelation)(nil),
		(*Relation_CachedRemoteRelation)(nil),
		(*Relation_CommonInlineUserDefinedTableFunction)(nil),
		(*Relation_AsOfJoin)(nil),
		(*Relation_CommonInlineUserDefinedDataSource)(nil),
		(*Relation_WithRelations)(nil),
		(*Relation_Transpose)(nil),
		(*Relation_UnresolvedTableValuedFunction)(nil),
		(*Relation_LateralJoin)(nil),
		(*Relation_FillNa)(nil),
		(*Relation_DropNa)(nil),
		(*Relation_Replace)(nil),
		(*Relation_Summary)(nil),
		(*Relation_Crosstab)(nil),
		(*Relation_Describe)(nil),
		(*Relation_Cov)(nil),
		(*Relation_Corr)(nil),
		(*Relation_ApproxQuantile)(nil),
		(*Relation_FreqItems)(nil),
		(*Relation_SampleBy)(nil),
		(*Relation_Catalog)(nil),
		(*Relation_MlRelation)(nil),
		(*Relation_Extension)(nil),
		(*Relation_Unknown)(nil),
	}
	file_spark_connect_relations_proto_msgTypes[1].OneofWrappers = []interface{}{
		(*MlRelation_Transform_)(nil),
		(*MlRelation_Fetch)(nil),
	}
	file_spark_connect_relations_proto_msgTypes[4].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*Read_NamedTable_)(nil),
		(*Read_DataSource_)(nil),
	}
	file_spark_connect_relations_proto_msgTypes[10].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[11].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[16].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[18].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[19].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[22].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[23].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[25].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[32].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[34].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[35].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[37].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[44].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[48].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[49].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[50].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[51].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[54].OneofWrappers = []interface{}{
		(*CommonInlineUserDefinedTableFunction_PythonUdtf)(nil),
	}
	file_spark_connect_relations_proto_msgTypes[55].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[56].OneofWrappers = []interface{}{
		(*CommonInlineUserDefinedDataSource_PythonDataSource)(nil),
	}
	file_spark_connect_relations_proto_msgTypes[59].OneofWrappers = []interface{}{}
	file_spark_connect_relations_proto_msgTypes[62].OneofWrappers = []interface{}{
		(*MlRelation_Transform_ObjRef)(nil),
		(*MlRelation_Transform_Transformer)(nil),
	}
	file_spark_connect_relations_proto_msgTypes[64].OneofWrappers = []interface{}{
		(*Fetch_Method_Args_Param)(nil),
		(*Fetch_Method_Args_Input)(nil),
	}
	file_spark_connect_relations_proto_msgTypes[68].OneofWrappers = []interface{}{}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_spark_connect_relations_proto_rawDesc,
			NumEnums:      4,
			NumMessages:   80,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_spark_connect_relations_proto_goTypes,
		DependencyIndexes: file_spark_connect_relations_proto_depIdxs,
		EnumInfos:         file_spark_connect_relations_proto_enumTypes,
		MessageInfos:      file_spark_connect_relations_proto_msgTypes,
	}.Build()
	File_spark_connect_relations_proto = out.File
	file_spark_connect_relations_proto_rawDesc = nil
	file_spark_connect_relations_proto_goTypes = nil
	file_spark_connect_relations_proto_depIdxs = nil
}
