diff --git a/client/channel/channel_test.go b/client/channel/channel_test.go index 53b9561..f4c4bc3 100644 --- a/client/channel/channel_test.go +++ b/client/channel/channel_test.go @@ -20,7 +20,7 @@ import ( "strings" "testing" - "github.com/apache/spark-connect-go/v34/client/channel" + "github.com/apache/spark-connect-go/v1/client/channel" "github.com/stretchr/testify/assert" ) diff --git a/client/sql/dataframe.go b/client/sql/dataframe.go index adb5e1b..6fa7515 100644 --- a/client/sql/dataframe.go +++ b/client/sql/dataframe.go @@ -23,7 +23,7 @@ import ( "github.com/apache/arrow/go/v12/arrow" "github.com/apache/arrow/go/v12/arrow/array" "github.com/apache/arrow/go/v12/arrow/ipc" - proto "github.com/apache/spark-connect-go/v34/internal/generated" + proto "github.com/apache/spark-connect-go/v1/internal/generated" "io" ) diff --git a/client/sql/dataframe_test.go b/client/sql/dataframe_test.go index a41f126..ac5b162 100644 --- a/client/sql/dataframe_test.go +++ b/client/sql/dataframe_test.go @@ -25,7 +25,7 @@ import ( "github.com/apache/arrow/go/v12/arrow/float16" "github.com/apache/arrow/go/v12/arrow/ipc" "github.com/apache/arrow/go/v12/arrow/memory" - proto "github.com/apache/spark-connect-go/v34/internal/generated" + proto "github.com/apache/spark-connect-go/v1/internal/generated" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "testing" diff --git a/client/sql/dataframereader.go b/client/sql/dataframereader.go index 738b7a8..2f0e215 100644 --- a/client/sql/dataframereader.go +++ b/client/sql/dataframereader.go @@ -1,6 +1,6 @@ package sql -import proto "github.com/apache/spark-connect-go/v34/internal/generated" +import proto "github.com/apache/spark-connect-go/v1/internal/generated" // DataFrameReader supports reading data from storage and returning a data frame. // TODO needs to implement other methods like Option(), Schema(), and also "strong typed" diff --git a/client/sql/dataframewriter.go b/client/sql/dataframewriter.go index 20e70d9..a398ebd 100644 --- a/client/sql/dataframewriter.go +++ b/client/sql/dataframewriter.go @@ -2,7 +2,7 @@ package sql import ( "fmt" - proto "github.com/apache/spark-connect-go/v34/internal/generated" + proto "github.com/apache/spark-connect-go/v1/internal/generated" "strings" ) diff --git a/client/sql/dataframewriter_test.go b/client/sql/dataframewriter_test.go index c4ad58b..d61266f 100644 --- a/client/sql/dataframewriter_test.go +++ b/client/sql/dataframewriter_test.go @@ -1,7 +1,7 @@ package sql import ( - proto "github.com/apache/spark-connect-go/v34/internal/generated" + proto "github.com/apache/spark-connect-go/v1/internal/generated" "github.com/stretchr/testify/assert" "testing" ) diff --git a/client/sql/sparksession.go b/client/sql/sparksession.go index 005136e..a5ac466 100644 --- a/client/sql/sparksession.go +++ b/client/sql/sparksession.go @@ -21,8 +21,8 @@ import ( "errors" "fmt" - "github.com/apache/spark-connect-go/v34/client/channel" - proto "github.com/apache/spark-connect-go/v34/internal/generated" + "github.com/apache/spark-connect-go/v1/client/channel" + proto "github.com/apache/spark-connect-go/v1/internal/generated" "github.com/google/uuid" "google.golang.org/grpc/metadata" "io" diff --git a/cmd/spark-connect-example-raw-grpc-client/main.go b/cmd/spark-connect-example-raw-grpc-client/main.go index 3d122ca..f48500b 100644 --- a/cmd/spark-connect-example-raw-grpc-client/main.go +++ b/cmd/spark-connect-example-raw-grpc-client/main.go @@ -19,7 +19,7 @@ package main import ( "context" "flag" - proto "github.com/apache/spark-connect-go/v34/internal/generated" + proto "github.com/apache/spark-connect-go/v1/internal/generated" "github.com/google/uuid" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" diff --git a/cmd/spark-connect-example-spark-session/main.go b/cmd/spark-connect-example-spark-session/main.go index 0913c50..aeb95b8 100644 --- a/cmd/spark-connect-example-spark-session/main.go +++ b/cmd/spark-connect-example-spark-session/main.go @@ -20,7 +20,7 @@ import ( "flag" "log" - "github.com/apache/spark-connect-go/v34/client/sql" + "github.com/apache/spark-connect-go/v1/client/sql" ) var ( diff --git a/go.mod b/go.mod index d518fc5..72f627c 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -module github.com/apache/spark-connect-go/v34 +module github.com/apache/spark-connect-go/v1 go 1.19 diff --git a/internal/generated/base.pb.go b/internal/generated/base.pb.go index ab8bb5d..acf50e6 100644 --- a/internal/generated/base.pb.go +++ b/internal/generated/base.pb.go @@ -109,8 +109,12 @@ type InterruptRequest_InterruptType int32 const ( InterruptRequest_INTERRUPT_TYPE_UNSPECIFIED InterruptRequest_InterruptType = 0 - // Interrupt all running executions within session with provided session_id. + // Interrupt all running executions within the session with the provided session_id. InterruptRequest_INTERRUPT_TYPE_ALL InterruptRequest_InterruptType = 1 + // Interrupt all running executions within the session with the provided operation_tag. + InterruptRequest_INTERRUPT_TYPE_TAG InterruptRequest_InterruptType = 2 + // Interrupt the running execution within the session with the provided operation_id. + InterruptRequest_INTERRUPT_TYPE_OPERATION_ID InterruptRequest_InterruptType = 3 ) // Enum value maps for InterruptRequest_InterruptType. @@ -118,10 +122,14 @@ var ( InterruptRequest_InterruptType_name = map[int32]string{ 0: "INTERRUPT_TYPE_UNSPECIFIED", 1: "INTERRUPT_TYPE_ALL", + 2: "INTERRUPT_TYPE_TAG", + 3: "INTERRUPT_TYPE_OPERATION_ID", } InterruptRequest_InterruptType_value = map[string]int32{ - "INTERRUPT_TYPE_UNSPECIFIED": 0, - "INTERRUPT_TYPE_ALL": 1, + "INTERRUPT_TYPE_UNSPECIFIED": 0, + "INTERRUPT_TYPE_ALL": 1, + "INTERRUPT_TYPE_TAG": 2, + "INTERRUPT_TYPE_OPERATION_ID": 3, } ) @@ -317,6 +325,7 @@ type AnalyzePlanRequest struct { // The session_id specifies a spark session for a user id (which is specified // by user_context.user_id). The session_id is set by the client to be able to // collate streaming responses from different queries within the dedicated session. + // The id should be an UUID string of the format `00112233-4455-6677-8899-aabbccddeeff` SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // (Required) User context UserContext *UserContext `protobuf:"bytes,2,opt,name=user_context,json=userContext,proto3" json:"user_context,omitempty"` @@ -831,12 +840,18 @@ type ExecutePlanRequest struct { // The session_id specifies a spark session for a user id (which is specified // by user_context.user_id). The session_id is set by the client to be able to // collate streaming responses from different queries within the dedicated session. + // The id should be an UUID string of the format `00112233-4455-6677-8899-aabbccddeeff` SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // (Required) User context // // user_context.user_id and session+id both identify a unique remote spark session on the // server side. UserContext *UserContext `protobuf:"bytes,2,opt,name=user_context,json=userContext,proto3" json:"user_context,omitempty"` + // (Optional) + // Provide an id for this request. If not provided, it will be generated by the server. + // It is returned in every ExecutePlanResponse.operation_id of the ExecutePlan response stream. + // The id must be an UUID string of the format `00112233-4455-6677-8899-aabbccddeeff` + OperationId *string `protobuf:"bytes,6,opt,name=operation_id,json=operationId,proto3,oneof" json:"operation_id,omitempty"` // (Required) The logical plan to be executed / analyzed. Plan *Plan `protobuf:"bytes,3,opt,name=plan,proto3" json:"plan,omitempty"` // Provides optional information about the client sending the request. This field @@ -846,6 +861,10 @@ type ExecutePlanRequest struct { // Repeated element for options that can be passed to the request. This element is currently // unused but allows to pass in an extension value used for arbitrary options. RequestOptions []*ExecutePlanRequest_RequestOption `protobuf:"bytes,5,rep,name=request_options,json=requestOptions,proto3" json:"request_options,omitempty"` + // Tags to tag the given execution with. + // Tags cannot contain ',' character and cannot be empty strings. + // Used by Interrupt with interrupt.tag. + Tags []string `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"` } func (x *ExecutePlanRequest) Reset() { @@ -894,6 +913,13 @@ func (x *ExecutePlanRequest) GetUserContext() *UserContext { return nil } +func (x *ExecutePlanRequest) GetOperationId() string { + if x != nil && x.OperationId != nil { + return *x.OperationId + } + return "" +} + func (x *ExecutePlanRequest) GetPlan() *Plan { if x != nil { return x.Plan @@ -915,6 +941,13 @@ func (x *ExecutePlanRequest) GetRequestOptions() []*ExecutePlanRequest_RequestOp return nil } +func (x *ExecutePlanRequest) GetTags() []string { + if x != nil { + return x.Tags + } + return nil +} + // The response of a query, can be one or more for each request. Responses belonging to the // same input query, carry the same `session_id`. type ExecutePlanResponse struct { @@ -923,6 +956,14 @@ type ExecutePlanResponse struct { unknownFields protoimpl.UnknownFields SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + // Identifies the ExecutePlan execution. + // If set by the client in ExecutePlanRequest.operationId, that value is returned. + // Otherwise generated by the server. + // It is an UUID string of the format `00112233-4455-6677-8899-aabbccddeeff` + OperationId string `protobuf:"bytes,12,opt,name=operation_id,json=operationId,proto3" json:"operation_id,omitempty"` + // Identified the response in the stream. + // The id is an UUID string of the format `00112233-4455-6677-8899-aabbccddeeff` + ResponseId string `protobuf:"bytes,13,opt,name=response_id,json=responseId,proto3" json:"response_id,omitempty"` // Union type for the different response messages. // // Types that are assignable to ResponseType: @@ -933,6 +974,7 @@ type ExecutePlanResponse struct { // *ExecutePlanResponse_StreamingQueryCommandResult // *ExecutePlanResponse_GetResourcesCommandResult // *ExecutePlanResponse_StreamingQueryManagerCommandResult + // *ExecutePlanResponse_ResultComplete_ // *ExecutePlanResponse_Extension ResponseType isExecutePlanResponse_ResponseType `protobuf_oneof:"response_type"` // Metrics for the query execution. Typically, this field is only present in the last @@ -983,6 +1025,20 @@ func (x *ExecutePlanResponse) GetSessionId() string { return "" } +func (x *ExecutePlanResponse) GetOperationId() string { + if x != nil { + return x.OperationId + } + return "" +} + +func (x *ExecutePlanResponse) GetResponseId() string { + if x != nil { + return x.ResponseId + } + return "" +} + func (m *ExecutePlanResponse) GetResponseType() isExecutePlanResponse_ResponseType { if m != nil { return m.ResponseType @@ -1032,6 +1088,13 @@ func (x *ExecutePlanResponse) GetStreamingQueryManagerCommandResult() *Streaming return nil } +func (x *ExecutePlanResponse) GetResultComplete() *ExecutePlanResponse_ResultComplete { + if x, ok := x.GetResponseType().(*ExecutePlanResponse_ResultComplete_); ok { + return x.ResultComplete + } + return nil +} + func (x *ExecutePlanResponse) GetExtension() *anypb.Any { if x, ok := x.GetResponseType().(*ExecutePlanResponse_Extension); ok { return x.Extension @@ -1093,6 +1156,11 @@ type ExecutePlanResponse_StreamingQueryManagerCommandResult struct { StreamingQueryManagerCommandResult *StreamingQueryManagerCommandResult `protobuf:"bytes,11,opt,name=streaming_query_manager_command_result,json=streamingQueryManagerCommandResult,proto3,oneof"` } +type ExecutePlanResponse_ResultComplete_ struct { + // Response type informing if the stream is complete in reattachable execution. + ResultComplete *ExecutePlanResponse_ResultComplete `protobuf:"bytes,14,opt,name=result_complete,json=resultComplete,proto3,oneof"` +} + type ExecutePlanResponse_Extension struct { // Support arbitrary result objects. Extension *anypb.Any `protobuf:"bytes,999,opt,name=extension,proto3,oneof"` @@ -1110,6 +1178,8 @@ func (*ExecutePlanResponse_GetResourcesCommandResult) isExecutePlanResponse_Resp func (*ExecutePlanResponse_StreamingQueryManagerCommandResult) isExecutePlanResponse_ResponseType() {} +func (*ExecutePlanResponse_ResultComplete_) isExecutePlanResponse_ResponseType() {} + func (*ExecutePlanResponse_Extension) isExecutePlanResponse_ResponseType() {} // The key-value pair for the config request and response. @@ -1181,6 +1251,7 @@ type ConfigRequest struct { // The session_id specifies a spark session for a user id (which is specified // by user_context.user_id). The session_id is set by the client to be able to // collate streaming responses from different queries within the dedicated session. + // The id should be an UUID string of the format `00112233-4455-6677-8899-aabbccddeeff` SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // (Required) User context UserContext *UserContext `protobuf:"bytes,2,opt,name=user_context,json=userContext,proto3" json:"user_context,omitempty"` @@ -1334,6 +1405,7 @@ type AddArtifactsRequest struct { // The session_id specifies a spark session for a user id (which is specified // by user_context.user_id). The session_id is set by the client to be able to // collate streaming responses from different queries within the dedicated session. + // The id should be an UUID string of the format `00112233-4455-6677-8899-aabbccddeeff` SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // User context UserContext *UserContext `protobuf:"bytes,2,opt,name=user_context,json=userContext,proto3" json:"user_context,omitempty"` @@ -1520,6 +1592,7 @@ type ArtifactStatusesRequest struct { // The session_id specifies a spark session for a user id (which is specified // by user_context.user_id). The session_id is set by the client to be able to // collate streaming responses from different queries within the dedicated session. + // The id should be an UUID string of the format `00112233-4455-6677-8899-aabbccddeeff` SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // User context UserContext *UserContext `protobuf:"bytes,2,opt,name=user_context,json=userContext,proto3" json:"user_context,omitempty"` @@ -1655,6 +1728,7 @@ type InterruptRequest struct { // The session_id specifies a spark session for a user id (which is specified // by user_context.user_id). The session_id is set by the client to be able to // collate streaming responses from different queries within the dedicated session. + // The id should be an UUID string of the format `00112233-4455-6677-8899-aabbccddeeff` SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // (Required) User context UserContext *UserContext `protobuf:"bytes,2,opt,name=user_context,json=userContext,proto3" json:"user_context,omitempty"` @@ -1664,6 +1738,11 @@ type InterruptRequest struct { ClientType *string `protobuf:"bytes,3,opt,name=client_type,json=clientType,proto3,oneof" json:"client_type,omitempty"` // (Required) The type of interrupt to execute. InterruptType InterruptRequest_InterruptType `protobuf:"varint,4,opt,name=interrupt_type,json=interruptType,proto3,enum=spark.connect.InterruptRequest_InterruptType" json:"interrupt_type,omitempty"` + // Types that are assignable to Interrupt: + // + // *InterruptRequest_OperationTag + // *InterruptRequest_OperationId + Interrupt isInterruptRequest_Interrupt `protobuf_oneof:"interrupt"` } func (x *InterruptRequest) Reset() { @@ -1726,12 +1805,54 @@ func (x *InterruptRequest) GetInterruptType() InterruptRequest_InterruptType { return InterruptRequest_INTERRUPT_TYPE_UNSPECIFIED } +func (m *InterruptRequest) GetInterrupt() isInterruptRequest_Interrupt { + if m != nil { + return m.Interrupt + } + return nil +} + +func (x *InterruptRequest) GetOperationTag() string { + if x, ok := x.GetInterrupt().(*InterruptRequest_OperationTag); ok { + return x.OperationTag + } + return "" +} + +func (x *InterruptRequest) GetOperationId() string { + if x, ok := x.GetInterrupt().(*InterruptRequest_OperationId); ok { + return x.OperationId + } + return "" +} + +type isInterruptRequest_Interrupt interface { + isInterruptRequest_Interrupt() +} + +type InterruptRequest_OperationTag struct { + // if interrupt_tag == INTERRUPT_TYPE_TAG, interrupt operation with this tag. + OperationTag string `protobuf:"bytes,5,opt,name=operation_tag,json=operationTag,proto3,oneof"` +} + +type InterruptRequest_OperationId struct { + // if interrupt_tag == INTERRUPT_TYPE_OPERATION_ID, interrupt operation with this operation_id. + OperationId string `protobuf:"bytes,6,opt,name=operation_id,json=operationId,proto3,oneof"` +} + +func (*InterruptRequest_OperationTag) isInterruptRequest_Interrupt() {} + +func (*InterruptRequest_OperationId) isInterruptRequest_Interrupt() {} + type InterruptResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Session id in which the interrupt was running. SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + // Operation ids of the executions which were interrupted. + InterruptedIds []string `protobuf:"bytes,2,rep,name=interrupted_ids,json=interruptedIds,proto3" json:"interrupted_ids,omitempty"` } func (x *InterruptResponse) Reset() { @@ -1773,17 +1894,31 @@ func (x *InterruptResponse) GetSessionId() string { return "" } -type AnalyzePlanRequest_Schema struct { +func (x *InterruptResponse) GetInterruptedIds() []string { + if x != nil { + return x.InterruptedIds + } + return nil +} + +type ReattachOptions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // (Required) The logical plan to be analyzed. - Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` + // If true, the request can be reattached to using ReattachExecute. + // ReattachExecute can be used either if the stream broke with a GRPC network error, + // or if the server closed the stream without sending a response with StreamStatus.complete=true. + // The server will keep a buffer of responses in case a response is lost, and + // ReattachExecute needs to back-track. + // + // If false, the execution response stream will will not be reattachable, and all responses are + // immediately released by the server after being sent. + Reattachable bool `protobuf:"varint,1,opt,name=reattachable,proto3" json:"reattachable,omitempty"` } -func (x *AnalyzePlanRequest_Schema) Reset() { - *x = AnalyzePlanRequest_Schema{} +func (x *ReattachOptions) Reset() { + *x = ReattachOptions{} if protoimpl.UnsafeEnabled { mi := &file_spark_connect_base_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1791,13 +1926,13 @@ func (x *AnalyzePlanRequest_Schema) Reset() { } } -func (x *AnalyzePlanRequest_Schema) String() string { +func (x *ReattachOptions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzePlanRequest_Schema) ProtoMessage() {} +func (*ReattachOptions) ProtoMessage() {} -func (x *AnalyzePlanRequest_Schema) ProtoReflect() protoreflect.Message { +func (x *ReattachOptions) ProtoReflect() protoreflect.Message { mi := &file_spark_connect_base_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1809,32 +1944,54 @@ func (x *AnalyzePlanRequest_Schema) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AnalyzePlanRequest_Schema.ProtoReflect.Descriptor instead. -func (*AnalyzePlanRequest_Schema) Descriptor() ([]byte, []int) { - return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 0} +// Deprecated: Use ReattachOptions.ProtoReflect.Descriptor instead. +func (*ReattachOptions) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{15} } -func (x *AnalyzePlanRequest_Schema) GetPlan() *Plan { +func (x *ReattachOptions) GetReattachable() bool { if x != nil { - return x.Plan + return x.Reattachable } - return nil + return false } -// Explains the input plan based on a configurable mode. -type AnalyzePlanRequest_Explain struct { +type ReattachExecuteRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // (Required) The logical plan to be analyzed. - Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` - // (Required) For analyzePlan rpc calls, configure the mode to explain plan in strings. - ExplainMode AnalyzePlanRequest_Explain_ExplainMode `protobuf:"varint,2,opt,name=explain_mode,json=explainMode,proto3,enum=spark.connect.AnalyzePlanRequest_Explain_ExplainMode" json:"explain_mode,omitempty"` + // (Required) + // + // The session_id of the request to reattach to. + // This must be an id of existing session. + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + // (Required) User context + // + // user_context.user_id and session+id both identify a unique remote spark session on the + // server side. + UserContext *UserContext `protobuf:"bytes,2,opt,name=user_context,json=userContext,proto3" json:"user_context,omitempty"` + // (Required) + // Provide an id of the request to reattach to. + // This must be an id of existing operation. + OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId,proto3" json:"operation_id,omitempty"` + // Provides optional information about the client sending the request. This field + // can be used for language or version specific information and is only intended for + // logging purposes and will not be interpreted by the server. + ClientType *string `protobuf:"bytes,4,opt,name=client_type,json=clientType,proto3,oneof" json:"client_type,omitempty"` + // (Optional) + // Last already processed response id from the response stream. + // After reattach, server will resume the response stream after that response. + // If not specified, server will restart the stream from the start. + // + // Note: server controls the amount of responses that it buffers and it may drop responses, + // that are far behind the latest returned response, so this can't be used to arbitrarily + // scroll back the cursor. If the response is no longer available, this will result in an error. + LastResponseId *string `protobuf:"bytes,5,opt,name=last_response_id,json=lastResponseId,proto3,oneof" json:"last_response_id,omitempty"` } -func (x *AnalyzePlanRequest_Explain) Reset() { - *x = AnalyzePlanRequest_Explain{} +func (x *ReattachExecuteRequest) Reset() { + *x = ReattachExecuteRequest{} if protoimpl.UnsafeEnabled { mi := &file_spark_connect_base_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1842,13 +1999,13 @@ func (x *AnalyzePlanRequest_Explain) Reset() { } } -func (x *AnalyzePlanRequest_Explain) String() string { +func (x *ReattachExecuteRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzePlanRequest_Explain) ProtoMessage() {} +func (*ReattachExecuteRequest) ProtoMessage() {} -func (x *AnalyzePlanRequest_Explain) ProtoReflect() protoreflect.Message { +func (x *ReattachExecuteRequest) ProtoReflect() protoreflect.Message { mi := &file_spark_connect_base_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1860,38 +2017,78 @@ func (x *AnalyzePlanRequest_Explain) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AnalyzePlanRequest_Explain.ProtoReflect.Descriptor instead. -func (*AnalyzePlanRequest_Explain) Descriptor() ([]byte, []int) { - return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 1} +// Deprecated: Use ReattachExecuteRequest.ProtoReflect.Descriptor instead. +func (*ReattachExecuteRequest) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{16} } -func (x *AnalyzePlanRequest_Explain) GetPlan() *Plan { +func (x *ReattachExecuteRequest) GetSessionId() string { if x != nil { - return x.Plan + return x.SessionId + } + return "" +} + +func (x *ReattachExecuteRequest) GetUserContext() *UserContext { + if x != nil { + return x.UserContext } return nil } -func (x *AnalyzePlanRequest_Explain) GetExplainMode() AnalyzePlanRequest_Explain_ExplainMode { +func (x *ReattachExecuteRequest) GetOperationId() string { if x != nil { - return x.ExplainMode + return x.OperationId } - return AnalyzePlanRequest_Explain_EXPLAIN_MODE_UNSPECIFIED + return "" } -type AnalyzePlanRequest_TreeString struct { +func (x *ReattachExecuteRequest) GetClientType() string { + if x != nil && x.ClientType != nil { + return *x.ClientType + } + return "" +} + +func (x *ReattachExecuteRequest) GetLastResponseId() string { + if x != nil && x.LastResponseId != nil { + return *x.LastResponseId + } + return "" +} + +type ReleaseExecuteRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // (Required) The logical plan to be analyzed. - Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` - // (Optional) Max level of the schema. - Level *int32 `protobuf:"varint,2,opt,name=level,proto3,oneof" json:"level,omitempty"` + // (Required) + // + // The session_id of the request to reattach to. + // This must be an id of existing session. + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + // (Required) User context + // + // user_context.user_id and session+id both identify a unique remote spark session on the + // server side. + UserContext *UserContext `protobuf:"bytes,2,opt,name=user_context,json=userContext,proto3" json:"user_context,omitempty"` + // (Required) + // Provide an id of the request to reattach to. + // This must be an id of existing operation. + OperationId string `protobuf:"bytes,3,opt,name=operation_id,json=operationId,proto3" json:"operation_id,omitempty"` + // Provides optional information about the client sending the request. This field + // can be used for language or version specific information and is only intended for + // logging purposes and will not be interpreted by the server. + ClientType *string `protobuf:"bytes,4,opt,name=client_type,json=clientType,proto3,oneof" json:"client_type,omitempty"` + // Types that are assignable to Release: + // + // *ReleaseExecuteRequest_ReleaseAll_ + // *ReleaseExecuteRequest_ReleaseUntil_ + Release isReleaseExecuteRequest_Release `protobuf_oneof:"release"` } -func (x *AnalyzePlanRequest_TreeString) Reset() { - *x = AnalyzePlanRequest_TreeString{} +func (x *ReleaseExecuteRequest) Reset() { + *x = ReleaseExecuteRequest{} if protoimpl.UnsafeEnabled { mi := &file_spark_connect_base_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1899,13 +2096,13 @@ func (x *AnalyzePlanRequest_TreeString) Reset() { } } -func (x *AnalyzePlanRequest_TreeString) String() string { +func (x *ReleaseExecuteRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzePlanRequest_TreeString) ProtoMessage() {} +func (*ReleaseExecuteRequest) ProtoMessage() {} -func (x *AnalyzePlanRequest_TreeString) ProtoReflect() protoreflect.Message { +func (x *ReleaseExecuteRequest) ProtoReflect() protoreflect.Message { mi := &file_spark_connect_base_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1917,36 +2114,91 @@ func (x *AnalyzePlanRequest_TreeString) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AnalyzePlanRequest_TreeString.ProtoReflect.Descriptor instead. -func (*AnalyzePlanRequest_TreeString) Descriptor() ([]byte, []int) { - return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 2} +// Deprecated: Use ReleaseExecuteRequest.ProtoReflect.Descriptor instead. +func (*ReleaseExecuteRequest) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{17} } -func (x *AnalyzePlanRequest_TreeString) GetPlan() *Plan { +func (x *ReleaseExecuteRequest) GetSessionId() string { if x != nil { - return x.Plan + return x.SessionId + } + return "" +} + +func (x *ReleaseExecuteRequest) GetUserContext() *UserContext { + if x != nil { + return x.UserContext } return nil } -func (x *AnalyzePlanRequest_TreeString) GetLevel() int32 { - if x != nil && x.Level != nil { - return *x.Level +func (x *ReleaseExecuteRequest) GetOperationId() string { + if x != nil { + return x.OperationId } - return 0 + return "" } -type AnalyzePlanRequest_IsLocal struct { +func (x *ReleaseExecuteRequest) GetClientType() string { + if x != nil && x.ClientType != nil { + return *x.ClientType + } + return "" +} + +func (m *ReleaseExecuteRequest) GetRelease() isReleaseExecuteRequest_Release { + if m != nil { + return m.Release + } + return nil +} + +func (x *ReleaseExecuteRequest) GetReleaseAll() *ReleaseExecuteRequest_ReleaseAll { + if x, ok := x.GetRelease().(*ReleaseExecuteRequest_ReleaseAll_); ok { + return x.ReleaseAll + } + return nil +} + +func (x *ReleaseExecuteRequest) GetReleaseUntil() *ReleaseExecuteRequest_ReleaseUntil { + if x, ok := x.GetRelease().(*ReleaseExecuteRequest_ReleaseUntil_); ok { + return x.ReleaseUntil + } + return nil +} + +type isReleaseExecuteRequest_Release interface { + isReleaseExecuteRequest_Release() +} + +type ReleaseExecuteRequest_ReleaseAll_ struct { + ReleaseAll *ReleaseExecuteRequest_ReleaseAll `protobuf:"bytes,5,opt,name=release_all,json=releaseAll,proto3,oneof"` +} + +type ReleaseExecuteRequest_ReleaseUntil_ struct { + ReleaseUntil *ReleaseExecuteRequest_ReleaseUntil `protobuf:"bytes,6,opt,name=release_until,json=releaseUntil,proto3,oneof"` +} + +func (*ReleaseExecuteRequest_ReleaseAll_) isReleaseExecuteRequest_Release() {} + +func (*ReleaseExecuteRequest_ReleaseUntil_) isReleaseExecuteRequest_Release() {} + +type ReleaseExecuteResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // (Required) The logical plan to be analyzed. - Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` + // Session id in which the release was running. + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + // Operation id of the operation on which the release executed. + // If the operation couldn't be found (because e.g. it was concurrently released), will be unset. + // Otherwise, it will be equal to the operation_id from request. + OperationId *string `protobuf:"bytes,2,opt,name=operation_id,json=operationId,proto3,oneof" json:"operation_id,omitempty"` } -func (x *AnalyzePlanRequest_IsLocal) Reset() { - *x = AnalyzePlanRequest_IsLocal{} +func (x *ReleaseExecuteResponse) Reset() { + *x = ReleaseExecuteResponse{} if protoimpl.UnsafeEnabled { mi := &file_spark_connect_base_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1954,13 +2206,13 @@ func (x *AnalyzePlanRequest_IsLocal) Reset() { } } -func (x *AnalyzePlanRequest_IsLocal) String() string { +func (x *ReleaseExecuteResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzePlanRequest_IsLocal) ProtoMessage() {} +func (*ReleaseExecuteResponse) ProtoMessage() {} -func (x *AnalyzePlanRequest_IsLocal) ProtoReflect() protoreflect.Message { +func (x *ReleaseExecuteResponse) ProtoReflect() protoreflect.Message { mi := &file_spark_connect_base_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1972,19 +2224,26 @@ func (x *AnalyzePlanRequest_IsLocal) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AnalyzePlanRequest_IsLocal.ProtoReflect.Descriptor instead. -func (*AnalyzePlanRequest_IsLocal) Descriptor() ([]byte, []int) { - return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 3} +// Deprecated: Use ReleaseExecuteResponse.ProtoReflect.Descriptor instead. +func (*ReleaseExecuteResponse) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{18} } -func (x *AnalyzePlanRequest_IsLocal) GetPlan() *Plan { +func (x *ReleaseExecuteResponse) GetSessionId() string { if x != nil { - return x.Plan + return x.SessionId } - return nil + return "" } -type AnalyzePlanRequest_IsStreaming struct { +func (x *ReleaseExecuteResponse) GetOperationId() string { + if x != nil && x.OperationId != nil { + return *x.OperationId + } + return "" +} + +type AnalyzePlanRequest_Schema struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1993,8 +2252,8 @@ type AnalyzePlanRequest_IsStreaming struct { Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` } -func (x *AnalyzePlanRequest_IsStreaming) Reset() { - *x = AnalyzePlanRequest_IsStreaming{} +func (x *AnalyzePlanRequest_Schema) Reset() { + *x = AnalyzePlanRequest_Schema{} if protoimpl.UnsafeEnabled { mi := &file_spark_connect_base_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2002,13 +2261,13 @@ func (x *AnalyzePlanRequest_IsStreaming) Reset() { } } -func (x *AnalyzePlanRequest_IsStreaming) String() string { +func (x *AnalyzePlanRequest_Schema) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzePlanRequest_IsStreaming) ProtoMessage() {} +func (*AnalyzePlanRequest_Schema) ProtoMessage() {} -func (x *AnalyzePlanRequest_IsStreaming) ProtoReflect() protoreflect.Message { +func (x *AnalyzePlanRequest_Schema) ProtoReflect() protoreflect.Message { mi := &file_spark_connect_base_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2020,29 +2279,32 @@ func (x *AnalyzePlanRequest_IsStreaming) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AnalyzePlanRequest_IsStreaming.ProtoReflect.Descriptor instead. -func (*AnalyzePlanRequest_IsStreaming) Descriptor() ([]byte, []int) { - return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 4} +// Deprecated: Use AnalyzePlanRequest_Schema.ProtoReflect.Descriptor instead. +func (*AnalyzePlanRequest_Schema) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 0} } -func (x *AnalyzePlanRequest_IsStreaming) GetPlan() *Plan { +func (x *AnalyzePlanRequest_Schema) GetPlan() *Plan { if x != nil { return x.Plan } return nil } -type AnalyzePlanRequest_InputFiles struct { +// Explains the input plan based on a configurable mode. +type AnalyzePlanRequest_Explain struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // (Required) The logical plan to be analyzed. Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` + // (Required) For analyzePlan rpc calls, configure the mode to explain plan in strings. + ExplainMode AnalyzePlanRequest_Explain_ExplainMode `protobuf:"varint,2,opt,name=explain_mode,json=explainMode,proto3,enum=spark.connect.AnalyzePlanRequest_Explain_ExplainMode" json:"explain_mode,omitempty"` } -func (x *AnalyzePlanRequest_InputFiles) Reset() { - *x = AnalyzePlanRequest_InputFiles{} +func (x *AnalyzePlanRequest_Explain) Reset() { + *x = AnalyzePlanRequest_Explain{} if protoimpl.UnsafeEnabled { mi := &file_spark_connect_base_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2050,13 +2312,13 @@ func (x *AnalyzePlanRequest_InputFiles) Reset() { } } -func (x *AnalyzePlanRequest_InputFiles) String() string { +func (x *AnalyzePlanRequest_Explain) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AnalyzePlanRequest_InputFiles) ProtoMessage() {} +func (*AnalyzePlanRequest_Explain) ProtoMessage() {} -func (x *AnalyzePlanRequest_InputFiles) ProtoReflect() protoreflect.Message { +func (x *AnalyzePlanRequest_Explain) ProtoReflect() protoreflect.Message { mi := &file_spark_connect_base_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -2068,19 +2330,227 @@ func (x *AnalyzePlanRequest_InputFiles) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AnalyzePlanRequest_InputFiles.ProtoReflect.Descriptor instead. -func (*AnalyzePlanRequest_InputFiles) Descriptor() ([]byte, []int) { - return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 5} +// Deprecated: Use AnalyzePlanRequest_Explain.ProtoReflect.Descriptor instead. +func (*AnalyzePlanRequest_Explain) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 1} } -func (x *AnalyzePlanRequest_InputFiles) GetPlan() *Plan { +func (x *AnalyzePlanRequest_Explain) GetPlan() *Plan { if x != nil { return x.Plan } return nil } -type AnalyzePlanRequest_SparkVersion struct { +func (x *AnalyzePlanRequest_Explain) GetExplainMode() AnalyzePlanRequest_Explain_ExplainMode { + if x != nil { + return x.ExplainMode + } + return AnalyzePlanRequest_Explain_EXPLAIN_MODE_UNSPECIFIED +} + +type AnalyzePlanRequest_TreeString struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // (Required) The logical plan to be analyzed. + Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` + // (Optional) Max level of the schema. + Level *int32 `protobuf:"varint,2,opt,name=level,proto3,oneof" json:"level,omitempty"` +} + +func (x *AnalyzePlanRequest_TreeString) Reset() { + *x = AnalyzePlanRequest_TreeString{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_base_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnalyzePlanRequest_TreeString) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalyzePlanRequest_TreeString) ProtoMessage() {} + +func (x *AnalyzePlanRequest_TreeString) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_base_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 AnalyzePlanRequest_TreeString.ProtoReflect.Descriptor instead. +func (*AnalyzePlanRequest_TreeString) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 2} +} + +func (x *AnalyzePlanRequest_TreeString) GetPlan() *Plan { + if x != nil { + return x.Plan + } + return nil +} + +func (x *AnalyzePlanRequest_TreeString) GetLevel() int32 { + if x != nil && x.Level != nil { + return *x.Level + } + return 0 +} + +type AnalyzePlanRequest_IsLocal struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // (Required) The logical plan to be analyzed. + Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` +} + +func (x *AnalyzePlanRequest_IsLocal) Reset() { + *x = AnalyzePlanRequest_IsLocal{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_base_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnalyzePlanRequest_IsLocal) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalyzePlanRequest_IsLocal) ProtoMessage() {} + +func (x *AnalyzePlanRequest_IsLocal) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_base_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 AnalyzePlanRequest_IsLocal.ProtoReflect.Descriptor instead. +func (*AnalyzePlanRequest_IsLocal) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 3} +} + +func (x *AnalyzePlanRequest_IsLocal) GetPlan() *Plan { + if x != nil { + return x.Plan + } + return nil +} + +type AnalyzePlanRequest_IsStreaming struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // (Required) The logical plan to be analyzed. + Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` +} + +func (x *AnalyzePlanRequest_IsStreaming) Reset() { + *x = AnalyzePlanRequest_IsStreaming{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_base_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnalyzePlanRequest_IsStreaming) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalyzePlanRequest_IsStreaming) ProtoMessage() {} + +func (x *AnalyzePlanRequest_IsStreaming) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_base_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 AnalyzePlanRequest_IsStreaming.ProtoReflect.Descriptor instead. +func (*AnalyzePlanRequest_IsStreaming) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 4} +} + +func (x *AnalyzePlanRequest_IsStreaming) GetPlan() *Plan { + if x != nil { + return x.Plan + } + return nil +} + +type AnalyzePlanRequest_InputFiles struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // (Required) The logical plan to be analyzed. + Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` +} + +func (x *AnalyzePlanRequest_InputFiles) Reset() { + *x = AnalyzePlanRequest_InputFiles{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_base_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AnalyzePlanRequest_InputFiles) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AnalyzePlanRequest_InputFiles) ProtoMessage() {} + +func (x *AnalyzePlanRequest_InputFiles) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_base_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 AnalyzePlanRequest_InputFiles.ProtoReflect.Descriptor instead. +func (*AnalyzePlanRequest_InputFiles) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{2, 5} +} + +func (x *AnalyzePlanRequest_InputFiles) GetPlan() *Plan { + if x != nil { + return x.Plan + } + return nil +} + +type AnalyzePlanRequest_SparkVersion struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -2089,7 +2559,7 @@ type AnalyzePlanRequest_SparkVersion struct { func (x *AnalyzePlanRequest_SparkVersion) Reset() { *x = AnalyzePlanRequest_SparkVersion{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[21] + mi := &file_spark_connect_base_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2102,7 +2572,7 @@ func (x *AnalyzePlanRequest_SparkVersion) String() string { func (*AnalyzePlanRequest_SparkVersion) ProtoMessage() {} func (x *AnalyzePlanRequest_SparkVersion) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[21] + mi := &file_spark_connect_base_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2130,7 +2600,7 @@ type AnalyzePlanRequest_DDLParse struct { func (x *AnalyzePlanRequest_DDLParse) Reset() { *x = AnalyzePlanRequest_DDLParse{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[22] + mi := &file_spark_connect_base_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2143,7 +2613,7 @@ func (x *AnalyzePlanRequest_DDLParse) String() string { func (*AnalyzePlanRequest_DDLParse) ProtoMessage() {} func (x *AnalyzePlanRequest_DDLParse) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[22] + mi := &file_spark_connect_base_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2181,7 +2651,7 @@ type AnalyzePlanRequest_SameSemantics struct { func (x *AnalyzePlanRequest_SameSemantics) Reset() { *x = AnalyzePlanRequest_SameSemantics{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[23] + mi := &file_spark_connect_base_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2194,7 +2664,7 @@ func (x *AnalyzePlanRequest_SameSemantics) String() string { func (*AnalyzePlanRequest_SameSemantics) ProtoMessage() {} func (x *AnalyzePlanRequest_SameSemantics) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[23] + mi := &file_spark_connect_base_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2236,7 +2706,7 @@ type AnalyzePlanRequest_SemanticHash struct { func (x *AnalyzePlanRequest_SemanticHash) Reset() { *x = AnalyzePlanRequest_SemanticHash{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[24] + mi := &file_spark_connect_base_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2249,7 +2719,7 @@ func (x *AnalyzePlanRequest_SemanticHash) String() string { func (*AnalyzePlanRequest_SemanticHash) ProtoMessage() {} func (x *AnalyzePlanRequest_SemanticHash) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[24] + mi := &file_spark_connect_base_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2286,7 +2756,7 @@ type AnalyzePlanRequest_Persist struct { func (x *AnalyzePlanRequest_Persist) Reset() { *x = AnalyzePlanRequest_Persist{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[25] + mi := &file_spark_connect_base_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2299,7 +2769,7 @@ func (x *AnalyzePlanRequest_Persist) String() string { func (*AnalyzePlanRequest_Persist) ProtoMessage() {} func (x *AnalyzePlanRequest_Persist) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[25] + mi := &file_spark_connect_base_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2343,7 +2813,7 @@ type AnalyzePlanRequest_Unpersist struct { func (x *AnalyzePlanRequest_Unpersist) Reset() { *x = AnalyzePlanRequest_Unpersist{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[26] + mi := &file_spark_connect_base_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2356,7 +2826,7 @@ func (x *AnalyzePlanRequest_Unpersist) String() string { func (*AnalyzePlanRequest_Unpersist) ProtoMessage() {} func (x *AnalyzePlanRequest_Unpersist) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[26] + mi := &file_spark_connect_base_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2398,7 +2868,7 @@ type AnalyzePlanRequest_GetStorageLevel struct { func (x *AnalyzePlanRequest_GetStorageLevel) Reset() { *x = AnalyzePlanRequest_GetStorageLevel{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[27] + mi := &file_spark_connect_base_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2411,7 +2881,7 @@ func (x *AnalyzePlanRequest_GetStorageLevel) String() string { func (*AnalyzePlanRequest_GetStorageLevel) ProtoMessage() {} func (x *AnalyzePlanRequest_GetStorageLevel) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[27] + mi := &file_spark_connect_base_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2445,7 +2915,7 @@ type AnalyzePlanResponse_Schema struct { func (x *AnalyzePlanResponse_Schema) Reset() { *x = AnalyzePlanResponse_Schema{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[28] + mi := &file_spark_connect_base_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2458,7 +2928,7 @@ func (x *AnalyzePlanResponse_Schema) String() string { func (*AnalyzePlanResponse_Schema) ProtoMessage() {} func (x *AnalyzePlanResponse_Schema) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[28] + mi := &file_spark_connect_base_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2492,7 +2962,7 @@ type AnalyzePlanResponse_Explain struct { func (x *AnalyzePlanResponse_Explain) Reset() { *x = AnalyzePlanResponse_Explain{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[29] + mi := &file_spark_connect_base_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2505,7 +2975,7 @@ func (x *AnalyzePlanResponse_Explain) String() string { func (*AnalyzePlanResponse_Explain) ProtoMessage() {} func (x *AnalyzePlanResponse_Explain) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[29] + mi := &file_spark_connect_base_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2539,7 +3009,7 @@ type AnalyzePlanResponse_TreeString struct { func (x *AnalyzePlanResponse_TreeString) Reset() { *x = AnalyzePlanResponse_TreeString{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[30] + mi := &file_spark_connect_base_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2552,7 +3022,7 @@ func (x *AnalyzePlanResponse_TreeString) String() string { func (*AnalyzePlanResponse_TreeString) ProtoMessage() {} func (x *AnalyzePlanResponse_TreeString) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[30] + mi := &file_spark_connect_base_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2586,7 +3056,7 @@ type AnalyzePlanResponse_IsLocal struct { func (x *AnalyzePlanResponse_IsLocal) Reset() { *x = AnalyzePlanResponse_IsLocal{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[31] + mi := &file_spark_connect_base_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2599,7 +3069,7 @@ func (x *AnalyzePlanResponse_IsLocal) String() string { func (*AnalyzePlanResponse_IsLocal) ProtoMessage() {} func (x *AnalyzePlanResponse_IsLocal) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[31] + mi := &file_spark_connect_base_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2633,7 +3103,7 @@ type AnalyzePlanResponse_IsStreaming struct { func (x *AnalyzePlanResponse_IsStreaming) Reset() { *x = AnalyzePlanResponse_IsStreaming{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[32] + mi := &file_spark_connect_base_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2646,7 +3116,7 @@ func (x *AnalyzePlanResponse_IsStreaming) String() string { func (*AnalyzePlanResponse_IsStreaming) ProtoMessage() {} func (x *AnalyzePlanResponse_IsStreaming) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[32] + mi := &file_spark_connect_base_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2681,7 +3151,7 @@ type AnalyzePlanResponse_InputFiles struct { func (x *AnalyzePlanResponse_InputFiles) Reset() { *x = AnalyzePlanResponse_InputFiles{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[33] + mi := &file_spark_connect_base_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2694,7 +3164,7 @@ func (x *AnalyzePlanResponse_InputFiles) String() string { func (*AnalyzePlanResponse_InputFiles) ProtoMessage() {} func (x *AnalyzePlanResponse_InputFiles) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[33] + mi := &file_spark_connect_base_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2728,7 +3198,7 @@ type AnalyzePlanResponse_SparkVersion struct { func (x *AnalyzePlanResponse_SparkVersion) Reset() { *x = AnalyzePlanResponse_SparkVersion{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[34] + mi := &file_spark_connect_base_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2741,7 +3211,7 @@ func (x *AnalyzePlanResponse_SparkVersion) String() string { func (*AnalyzePlanResponse_SparkVersion) ProtoMessage() {} func (x *AnalyzePlanResponse_SparkVersion) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[34] + mi := &file_spark_connect_base_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2775,7 +3245,7 @@ type AnalyzePlanResponse_DDLParse struct { func (x *AnalyzePlanResponse_DDLParse) Reset() { *x = AnalyzePlanResponse_DDLParse{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[35] + mi := &file_spark_connect_base_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2788,7 +3258,7 @@ func (x *AnalyzePlanResponse_DDLParse) String() string { func (*AnalyzePlanResponse_DDLParse) ProtoMessage() {} func (x *AnalyzePlanResponse_DDLParse) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[35] + mi := &file_spark_connect_base_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2822,7 +3292,7 @@ type AnalyzePlanResponse_SameSemantics struct { func (x *AnalyzePlanResponse_SameSemantics) Reset() { *x = AnalyzePlanResponse_SameSemantics{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[36] + mi := &file_spark_connect_base_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2835,7 +3305,7 @@ func (x *AnalyzePlanResponse_SameSemantics) String() string { func (*AnalyzePlanResponse_SameSemantics) ProtoMessage() {} func (x *AnalyzePlanResponse_SameSemantics) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[36] + mi := &file_spark_connect_base_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2869,7 +3339,7 @@ type AnalyzePlanResponse_SemanticHash struct { func (x *AnalyzePlanResponse_SemanticHash) Reset() { *x = AnalyzePlanResponse_SemanticHash{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[37] + mi := &file_spark_connect_base_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2882,7 +3352,7 @@ func (x *AnalyzePlanResponse_SemanticHash) String() string { func (*AnalyzePlanResponse_SemanticHash) ProtoMessage() {} func (x *AnalyzePlanResponse_SemanticHash) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[37] + mi := &file_spark_connect_base_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2914,7 +3384,7 @@ type AnalyzePlanResponse_Persist struct { func (x *AnalyzePlanResponse_Persist) Reset() { *x = AnalyzePlanResponse_Persist{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[38] + mi := &file_spark_connect_base_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2927,7 +3397,7 @@ func (x *AnalyzePlanResponse_Persist) String() string { func (*AnalyzePlanResponse_Persist) ProtoMessage() {} func (x *AnalyzePlanResponse_Persist) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[38] + mi := &file_spark_connect_base_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2952,7 +3422,7 @@ type AnalyzePlanResponse_Unpersist struct { func (x *AnalyzePlanResponse_Unpersist) Reset() { *x = AnalyzePlanResponse_Unpersist{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[39] + mi := &file_spark_connect_base_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2965,7 +3435,7 @@ func (x *AnalyzePlanResponse_Unpersist) String() string { func (*AnalyzePlanResponse_Unpersist) ProtoMessage() {} func (x *AnalyzePlanResponse_Unpersist) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[39] + mi := &file_spark_connect_base_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2993,7 +3463,7 @@ type AnalyzePlanResponse_GetStorageLevel struct { func (x *AnalyzePlanResponse_GetStorageLevel) Reset() { *x = AnalyzePlanResponse_GetStorageLevel{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[40] + mi := &file_spark_connect_base_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3006,7 +3476,7 @@ func (x *AnalyzePlanResponse_GetStorageLevel) String() string { func (*AnalyzePlanResponse_GetStorageLevel) ProtoMessage() {} func (x *AnalyzePlanResponse_GetStorageLevel) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[40] + mi := &file_spark_connect_base_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3036,6 +3506,7 @@ type ExecutePlanRequest_RequestOption struct { // Types that are assignable to RequestOption: // + // *ExecutePlanRequest_RequestOption_ReattachOptions // *ExecutePlanRequest_RequestOption_Extension RequestOption isExecutePlanRequest_RequestOption_RequestOption `protobuf_oneof:"request_option"` } @@ -3043,7 +3514,7 @@ type ExecutePlanRequest_RequestOption struct { func (x *ExecutePlanRequest_RequestOption) Reset() { *x = ExecutePlanRequest_RequestOption{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[41] + mi := &file_spark_connect_base_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3056,7 +3527,7 @@ func (x *ExecutePlanRequest_RequestOption) String() string { func (*ExecutePlanRequest_RequestOption) ProtoMessage() {} func (x *ExecutePlanRequest_RequestOption) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[41] + mi := &file_spark_connect_base_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3079,6 +3550,13 @@ func (m *ExecutePlanRequest_RequestOption) GetRequestOption() isExecutePlanReque return nil } +func (x *ExecutePlanRequest_RequestOption) GetReattachOptions() *ReattachOptions { + if x, ok := x.GetRequestOption().(*ExecutePlanRequest_RequestOption_ReattachOptions); ok { + return x.ReattachOptions + } + return nil +} + func (x *ExecutePlanRequest_RequestOption) GetExtension() *anypb.Any { if x, ok := x.GetRequestOption().(*ExecutePlanRequest_RequestOption_Extension); ok { return x.Extension @@ -3090,11 +3568,18 @@ type isExecutePlanRequest_RequestOption_RequestOption interface { isExecutePlanRequest_RequestOption_RequestOption() } +type ExecutePlanRequest_RequestOption_ReattachOptions struct { + ReattachOptions *ReattachOptions `protobuf:"bytes,1,opt,name=reattach_options,json=reattachOptions,proto3,oneof"` +} + type ExecutePlanRequest_RequestOption_Extension struct { // Extension type for request options Extension *anypb.Any `protobuf:"bytes,999,opt,name=extension,proto3,oneof"` } +func (*ExecutePlanRequest_RequestOption_ReattachOptions) isExecutePlanRequest_RequestOption_RequestOption() { +} + func (*ExecutePlanRequest_RequestOption_Extension) isExecutePlanRequest_RequestOption_RequestOption() { } @@ -3111,7 +3596,7 @@ type ExecutePlanResponse_SqlCommandResult struct { func (x *ExecutePlanResponse_SqlCommandResult) Reset() { *x = ExecutePlanResponse_SqlCommandResult{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[42] + mi := &file_spark_connect_base_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3124,7 +3609,7 @@ func (x *ExecutePlanResponse_SqlCommandResult) String() string { func (*ExecutePlanResponse_SqlCommandResult) ProtoMessage() {} func (x *ExecutePlanResponse_SqlCommandResult) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[42] + mi := &file_spark_connect_base_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3160,7 +3645,7 @@ type ExecutePlanResponse_ArrowBatch struct { func (x *ExecutePlanResponse_ArrowBatch) Reset() { *x = ExecutePlanResponse_ArrowBatch{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[43] + mi := &file_spark_connect_base_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3173,7 +3658,7 @@ func (x *ExecutePlanResponse_ArrowBatch) String() string { func (*ExecutePlanResponse_ArrowBatch) ProtoMessage() {} func (x *ExecutePlanResponse_ArrowBatch) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[43] + mi := &file_spark_connect_base_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3214,7 +3699,7 @@ type ExecutePlanResponse_Metrics struct { func (x *ExecutePlanResponse_Metrics) Reset() { *x = ExecutePlanResponse_Metrics{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[44] + mi := &file_spark_connect_base_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3227,7 +3712,7 @@ func (x *ExecutePlanResponse_Metrics) String() string { func (*ExecutePlanResponse_Metrics) ProtoMessage() {} func (x *ExecutePlanResponse_Metrics) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[44] + mi := &file_spark_connect_base_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3262,7 +3747,7 @@ type ExecutePlanResponse_ObservedMetrics struct { func (x *ExecutePlanResponse_ObservedMetrics) Reset() { *x = ExecutePlanResponse_ObservedMetrics{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[45] + mi := &file_spark_connect_base_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3275,7 +3760,7 @@ func (x *ExecutePlanResponse_ObservedMetrics) String() string { func (*ExecutePlanResponse_ObservedMetrics) ProtoMessage() {} func (x *ExecutePlanResponse_ObservedMetrics) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[45] + mi := &file_spark_connect_base_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3305,6 +3790,44 @@ func (x *ExecutePlanResponse_ObservedMetrics) GetValues() []*Expression_Literal return nil } +type ExecutePlanResponse_ResultComplete struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ExecutePlanResponse_ResultComplete) Reset() { + *x = ExecutePlanResponse_ResultComplete{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_base_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExecutePlanResponse_ResultComplete) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutePlanResponse_ResultComplete) ProtoMessage() {} + +func (x *ExecutePlanResponse_ResultComplete) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_base_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 ExecutePlanResponse_ResultComplete.ProtoReflect.Descriptor instead. +func (*ExecutePlanResponse_ResultComplete) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{5, 4} +} + type ExecutePlanResponse_Metrics_MetricObject struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3319,7 +3842,7 @@ type ExecutePlanResponse_Metrics_MetricObject struct { func (x *ExecutePlanResponse_Metrics_MetricObject) Reset() { *x = ExecutePlanResponse_Metrics_MetricObject{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[46] + mi := &file_spark_connect_base_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3332,7 +3855,7 @@ func (x *ExecutePlanResponse_Metrics_MetricObject) String() string { func (*ExecutePlanResponse_Metrics_MetricObject) ProtoMessage() {} func (x *ExecutePlanResponse_Metrics_MetricObject) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[46] + mi := &file_spark_connect_base_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3389,7 +3912,7 @@ type ExecutePlanResponse_Metrics_MetricValue struct { func (x *ExecutePlanResponse_Metrics_MetricValue) Reset() { *x = ExecutePlanResponse_Metrics_MetricValue{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[47] + mi := &file_spark_connect_base_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3402,7 +3925,7 @@ func (x *ExecutePlanResponse_Metrics_MetricValue) String() string { func (*ExecutePlanResponse_Metrics_MetricValue) ProtoMessage() {} func (x *ExecutePlanResponse_Metrics_MetricValue) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[47] + mi := &file_spark_connect_base_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3459,7 +3982,7 @@ type ConfigRequest_Operation struct { func (x *ConfigRequest_Operation) Reset() { *x = ConfigRequest_Operation{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[49] + mi := &file_spark_connect_base_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3472,7 +3995,7 @@ func (x *ConfigRequest_Operation) String() string { func (*ConfigRequest_Operation) ProtoMessage() {} func (x *ConfigRequest_Operation) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[49] + mi := &file_spark_connect_base_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3602,7 +4125,7 @@ type ConfigRequest_Set struct { func (x *ConfigRequest_Set) Reset() { *x = ConfigRequest_Set{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[50] + mi := &file_spark_connect_base_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3615,7 +4138,7 @@ func (x *ConfigRequest_Set) String() string { func (*ConfigRequest_Set) ProtoMessage() {} func (x *ConfigRequest_Set) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[50] + mi := &file_spark_connect_base_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3650,7 +4173,7 @@ type ConfigRequest_Get struct { func (x *ConfigRequest_Get) Reset() { *x = ConfigRequest_Get{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[51] + mi := &file_spark_connect_base_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3663,7 +4186,7 @@ func (x *ConfigRequest_Get) String() string { func (*ConfigRequest_Get) ProtoMessage() {} func (x *ConfigRequest_Get) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[51] + mi := &file_spark_connect_base_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3698,7 +4221,7 @@ type ConfigRequest_GetWithDefault struct { func (x *ConfigRequest_GetWithDefault) Reset() { *x = ConfigRequest_GetWithDefault{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[52] + mi := &file_spark_connect_base_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3711,7 +4234,7 @@ func (x *ConfigRequest_GetWithDefault) String() string { func (*ConfigRequest_GetWithDefault) ProtoMessage() {} func (x *ConfigRequest_GetWithDefault) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[52] + mi := &file_spark_connect_base_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3746,7 +4269,7 @@ type ConfigRequest_GetOption struct { func (x *ConfigRequest_GetOption) Reset() { *x = ConfigRequest_GetOption{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[53] + mi := &file_spark_connect_base_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3759,7 +4282,7 @@ func (x *ConfigRequest_GetOption) String() string { func (*ConfigRequest_GetOption) ProtoMessage() {} func (x *ConfigRequest_GetOption) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[53] + mi := &file_spark_connect_base_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3794,7 +4317,7 @@ type ConfigRequest_GetAll struct { func (x *ConfigRequest_GetAll) Reset() { *x = ConfigRequest_GetAll{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[54] + mi := &file_spark_connect_base_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3807,7 +4330,7 @@ func (x *ConfigRequest_GetAll) String() string { func (*ConfigRequest_GetAll) ProtoMessage() {} func (x *ConfigRequest_GetAll) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[54] + mi := &file_spark_connect_base_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3842,7 +4365,7 @@ type ConfigRequest_Unset struct { func (x *ConfigRequest_Unset) Reset() { *x = ConfigRequest_Unset{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[55] + mi := &file_spark_connect_base_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3855,7 +4378,7 @@ func (x *ConfigRequest_Unset) String() string { func (*ConfigRequest_Unset) ProtoMessage() {} func (x *ConfigRequest_Unset) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[55] + mi := &file_spark_connect_base_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3890,7 +4413,7 @@ type ConfigRequest_IsModifiable struct { func (x *ConfigRequest_IsModifiable) Reset() { *x = ConfigRequest_IsModifiable{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[56] + mi := &file_spark_connect_base_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3903,7 +4426,7 @@ func (x *ConfigRequest_IsModifiable) String() string { func (*ConfigRequest_IsModifiable) ProtoMessage() {} func (x *ConfigRequest_IsModifiable) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[56] + mi := &file_spark_connect_base_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3941,7 +4464,7 @@ type AddArtifactsRequest_ArtifactChunk struct { func (x *AddArtifactsRequest_ArtifactChunk) Reset() { *x = AddArtifactsRequest_ArtifactChunk{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[57] + mi := &file_spark_connect_base_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3954,7 +4477,7 @@ func (x *AddArtifactsRequest_ArtifactChunk) String() string { func (*AddArtifactsRequest_ArtifactChunk) ProtoMessage() {} func (x *AddArtifactsRequest_ArtifactChunk) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[57] + mi := &file_spark_connect_base_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4005,7 +4528,7 @@ type AddArtifactsRequest_SingleChunkArtifact struct { func (x *AddArtifactsRequest_SingleChunkArtifact) Reset() { *x = AddArtifactsRequest_SingleChunkArtifact{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[58] + mi := &file_spark_connect_base_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4018,7 +4541,7 @@ func (x *AddArtifactsRequest_SingleChunkArtifact) String() string { func (*AddArtifactsRequest_SingleChunkArtifact) ProtoMessage() {} func (x *AddArtifactsRequest_SingleChunkArtifact) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[58] + mi := &file_spark_connect_base_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4060,7 +4583,7 @@ type AddArtifactsRequest_Batch struct { func (x *AddArtifactsRequest_Batch) Reset() { *x = AddArtifactsRequest_Batch{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[59] + mi := &file_spark_connect_base_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4073,7 +4596,7 @@ func (x *AddArtifactsRequest_Batch) String() string { func (*AddArtifactsRequest_Batch) ProtoMessage() {} func (x *AddArtifactsRequest_Batch) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[59] + mi := &file_spark_connect_base_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4119,7 +4642,7 @@ type AddArtifactsRequest_BeginChunkedArtifact struct { func (x *AddArtifactsRequest_BeginChunkedArtifact) Reset() { *x = AddArtifactsRequest_BeginChunkedArtifact{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[60] + mi := &file_spark_connect_base_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4132,7 +4655,7 @@ func (x *AddArtifactsRequest_BeginChunkedArtifact) String() string { func (*AddArtifactsRequest_BeginChunkedArtifact) ProtoMessage() {} func (x *AddArtifactsRequest_BeginChunkedArtifact) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[60] + mi := &file_spark_connect_base_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4181,31 +4704,133 @@ type AddArtifactsResponse_ArtifactSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Whether the CRC (Cyclic Redundancy Check) is successful on server verification. - // The server discards any artifact that fails the CRC. - // If false, the client may choose to resend the artifact specified by `name`. - IsCrcSuccessful bool `protobuf:"varint,2,opt,name=is_crc_successful,json=isCrcSuccessful,proto3" json:"is_crc_successful,omitempty"` + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Whether the CRC (Cyclic Redundancy Check) is successful on server verification. + // The server discards any artifact that fails the CRC. + // If false, the client may choose to resend the artifact specified by `name`. + IsCrcSuccessful bool `protobuf:"varint,2,opt,name=is_crc_successful,json=isCrcSuccessful,proto3" json:"is_crc_successful,omitempty"` +} + +func (x *AddArtifactsResponse_ArtifactSummary) Reset() { + *x = AddArtifactsResponse_ArtifactSummary{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_base_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddArtifactsResponse_ArtifactSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddArtifactsResponse_ArtifactSummary) ProtoMessage() {} + +func (x *AddArtifactsResponse_ArtifactSummary) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_base_proto_msgTypes[66] + 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 AddArtifactsResponse_ArtifactSummary.ProtoReflect.Descriptor instead. +func (*AddArtifactsResponse_ArtifactSummary) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{10, 0} +} + +func (x *AddArtifactsResponse_ArtifactSummary) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *AddArtifactsResponse_ArtifactSummary) GetIsCrcSuccessful() bool { + if x != nil { + return x.IsCrcSuccessful + } + return false +} + +type ArtifactStatusesResponse_ArtifactStatus struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Exists or not particular artifact at the server. + Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` +} + +func (x *ArtifactStatusesResponse_ArtifactStatus) Reset() { + *x = ArtifactStatusesResponse_ArtifactStatus{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_base_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ArtifactStatusesResponse_ArtifactStatus) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ArtifactStatusesResponse_ArtifactStatus) ProtoMessage() {} + +func (x *ArtifactStatusesResponse_ArtifactStatus) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_base_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 ArtifactStatusesResponse_ArtifactStatus.ProtoReflect.Descriptor instead. +func (*ArtifactStatusesResponse_ArtifactStatus) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{12, 0} +} + +func (x *ArtifactStatusesResponse_ArtifactStatus) GetExists() bool { + if x != nil { + return x.Exists + } + return false +} + +// Release and close operation completely. +// This will also interrupt the query if it is running execution, and wait for it to be torn down. +type ReleaseExecuteRequest_ReleaseAll struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (x *AddArtifactsResponse_ArtifactSummary) Reset() { - *x = AddArtifactsResponse_ArtifactSummary{} +func (x *ReleaseExecuteRequest_ReleaseAll) Reset() { + *x = ReleaseExecuteRequest_ReleaseAll{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[61] + mi := &file_spark_connect_base_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *AddArtifactsResponse_ArtifactSummary) String() string { +func (x *ReleaseExecuteRequest_ReleaseAll) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AddArtifactsResponse_ArtifactSummary) ProtoMessage() {} +func (*ReleaseExecuteRequest_ReleaseAll) ProtoMessage() {} -func (x *AddArtifactsResponse_ArtifactSummary) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[61] +func (x *ReleaseExecuteRequest_ReleaseAll) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_base_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4216,51 +4841,41 @@ func (x *AddArtifactsResponse_ArtifactSummary) ProtoReflect() protoreflect.Messa return mi.MessageOf(x) } -// Deprecated: Use AddArtifactsResponse_ArtifactSummary.ProtoReflect.Descriptor instead. -func (*AddArtifactsResponse_ArtifactSummary) Descriptor() ([]byte, []int) { - return file_spark_connect_base_proto_rawDescGZIP(), []int{10, 0} -} - -func (x *AddArtifactsResponse_ArtifactSummary) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *AddArtifactsResponse_ArtifactSummary) GetIsCrcSuccessful() bool { - if x != nil { - return x.IsCrcSuccessful - } - return false +// Deprecated: Use ReleaseExecuteRequest_ReleaseAll.ProtoReflect.Descriptor instead. +func (*ReleaseExecuteRequest_ReleaseAll) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{17, 0} } -type ArtifactStatusesResponse_ArtifactStatus struct { +// Release all responses from the operation response stream up to and including +// the response with the given by response_id. +// While server determines by itself how much of a buffer of responses to keep, client providing +// explicit release calls will help reduce resource consumption. +// Noop if response_id not found in cached responses. +type ReleaseExecuteRequest_ReleaseUntil struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Exists or not particular artifact at the server. - Exists bool `protobuf:"varint,1,opt,name=exists,proto3" json:"exists,omitempty"` + ResponseId string `protobuf:"bytes,1,opt,name=response_id,json=responseId,proto3" json:"response_id,omitempty"` } -func (x *ArtifactStatusesResponse_ArtifactStatus) Reset() { - *x = ArtifactStatusesResponse_ArtifactStatus{} +func (x *ReleaseExecuteRequest_ReleaseUntil) Reset() { + *x = ReleaseExecuteRequest_ReleaseUntil{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_base_proto_msgTypes[62] + mi := &file_spark_connect_base_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ArtifactStatusesResponse_ArtifactStatus) String() string { +func (x *ReleaseExecuteRequest_ReleaseUntil) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ArtifactStatusesResponse_ArtifactStatus) ProtoMessage() {} +func (*ReleaseExecuteRequest_ReleaseUntil) ProtoMessage() {} -func (x *ArtifactStatusesResponse_ArtifactStatus) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_base_proto_msgTypes[62] +func (x *ReleaseExecuteRequest_ReleaseUntil) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_base_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4271,16 +4886,16 @@ func (x *ArtifactStatusesResponse_ArtifactStatus) ProtoReflect() protoreflect.Me return mi.MessageOf(x) } -// Deprecated: Use ArtifactStatusesResponse_ArtifactStatus.ProtoReflect.Descriptor instead. -func (*ArtifactStatusesResponse_ArtifactStatus) Descriptor() ([]byte, []int) { - return file_spark_connect_base_proto_rawDescGZIP(), []int{12, 0} +// Deprecated: Use ReleaseExecuteRequest_ReleaseUntil.ProtoReflect.Descriptor instead. +func (*ReleaseExecuteRequest_ReleaseUntil) Descriptor() ([]byte, []int) { + return file_spark_connect_base_proto_rawDescGZIP(), []int{17, 1} } -func (x *ArtifactStatusesResponse_ArtifactStatus) GetExists() bool { +func (x *ReleaseExecuteRequest_ReleaseUntil) GetResponseId() string { if x != nil { - return x.Exists + return x.ResponseId } - return false + return "" } var File_spark_connect_base_proto protoreflect.FileDescriptor @@ -4572,376 +5187,477 @@ var file_spark_connect_base_proto_rawDesc = []byte{ 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x85, 0x03, 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, + 0xa0, 0x04, 0x0a, 0x12, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x12, 0x27, 0x0a, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x12, 0x24, 0x0a, - 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, - 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x58, 0x0a, - 0x0d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, - 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 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, 0x42, 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xe5, 0x0d, 0x0a, 0x13, 0x45, 0x78, 0x65, 0x63, - 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x50, - 0x0a, 0x0b, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x72, 0x72, 0x6f, 0x77, 0x42, 0x61, 0x74, - 0x63, 0x68, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x42, 0x61, 0x74, 0x63, 0x68, - 0x12, 0x63, 0x0a, 0x12, 0x73, 0x71, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, - 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, - 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x48, 0x00, 0x52, 0x10, 0x73, 0x71, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x7e, 0x0a, 0x23, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, - 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x71, 0x0a, 0x1e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, - 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, - 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1b, 0x73, 0x74, 0x72, + 0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x27, 0x0a, 0x04, + 0x70, 0x6c, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x70, 0x61, + 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x6e, 0x52, + 0x04, 0x70, 0x6c, 0x61, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x58, 0x0a, 0x0f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x1a, 0xa5, 0x01, 0x0a, 0x0d, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x10, 0x72, + 0x65, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 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, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x61, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 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, 0x42, + 0x10, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x22, 0x99, 0x0f, 0x0a, 0x13, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, + 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x64, 0x12, 0x50, 0x0a, + 0x0b, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x72, 0x72, 0x6f, 0x77, 0x42, 0x61, 0x74, 0x63, + 0x68, 0x48, 0x00, 0x52, 0x0a, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, + 0x63, 0x0a, 0x12, 0x73, 0x71, 0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x72, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, + 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x48, 0x00, 0x52, 0x10, 0x73, 0x71, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x7e, 0x0a, 0x23, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2e, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x48, 0x00, 0x52, 0x1f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x71, 0x0a, 0x1e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, + 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6b, 0x0a, 0x1c, 0x67, 0x65, 0x74, 0x5f, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x19, 0x67, 0x65, 0x74, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x87, 0x01, 0x0a, 0x26, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x69, 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x22, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x35, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 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, 0x44, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, + 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x1b, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6b, 0x0a, 0x1c, 0x67, 0x65, 0x74, 0x5f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x47, 0x65, + 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x19, 0x67, 0x65, 0x74, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x87, 0x01, 0x0a, 0x26, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, + 0x6e, 0x67, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, + 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x22, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, + 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x5c, + 0x0a, 0x0f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, - 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x5d, 0x0a, 0x10, - 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, - 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x07, 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, 0x1a, 0x47, 0x0a, 0x10, - 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x12, 0x33, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x08, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3d, 0x0a, 0x0a, 0x41, 0x72, 0x72, 0x6f, 0x77, 0x42, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x1a, 0x85, 0x04, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x12, 0x51, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x1a, 0xcc, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, - 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x7a, 0x0a, 0x11, 0x65, 0x78, 0x65, - 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x35, 0x0a, 0x09, + 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 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, 0x44, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, - 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x1a, 0x7b, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 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, 0x4c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x36, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, - 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x58, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x60, 0x0a, 0x0f, - 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, - 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 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, 0x42, 0x0f, - 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x41, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x19, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x84, 0x08, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, - 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, - 0x78, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0xf2, - 0x03, 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x03, - 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x61, 0x72, - 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x03, 0x73, - 0x65, 0x74, 0x12, 0x34, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x65, - 0x74, 0x48, 0x00, 0x52, 0x03, 0x67, 0x65, 0x74, 0x12, 0x57, 0x0a, 0x10, 0x67, 0x65, 0x74, 0x5f, - 0x77, 0x69, 0x74, 0x68, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, - 0x00, 0x52, 0x0e, 0x67, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x12, 0x47, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, - 0x09, 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x67, 0x65, - 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, - 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, - 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x3a, 0x0a, 0x05, 0x75, 0x6e, - 0x73, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, - 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, - 0x05, 0x75, 0x6e, 0x73, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x6d, 0x6f, 0x64, - 0x69, 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x73, 0x4d, 0x6f, - 0x64, 0x69, 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x73, 0x4d, 0x6f, - 0x64, 0x69, 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x70, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x1a, 0x34, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x70, 0x61, - 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, - 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x1a, 0x19, 0x0a, 0x03, 0x47, 0x65, 0x74, + 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x5d, 0x0a, 0x10, 0x6f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x18, 0x07, 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, 0x1a, 0x47, 0x0a, 0x10, 0x53, 0x71, 0x6c, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, + 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x1a, 0x3d, 0x0a, 0x0a, 0x41, 0x72, 0x72, 0x6f, 0x77, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x1a, 0x85, 0x04, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x51, 0x0a, + 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, + 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, + 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x1a, 0xcc, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x12, 0x16, + 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x7a, 0x0a, 0x11, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x4d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x1a, 0x7b, 0x0a, 0x15, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 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, 0x4c, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, + 0x58, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x60, 0x0a, 0x0f, 0x4f, 0x62, 0x73, + 0x65, 0x72, 0x76, 0x65, 0x64, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 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, 0x10, 0x0a, 0x0e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x0f, 0x0a, + 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x41, + 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x22, 0x84, 0x08, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, + 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x12, 0x44, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x1a, 0xf2, 0x03, + 0x0a, 0x09, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x03, 0x73, + 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, + 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x03, 0x73, 0x65, + 0x74, 0x12, 0x34, 0x0a, 0x03, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, + 0x48, 0x00, 0x52, 0x03, 0x67, 0x65, 0x74, 0x12, 0x57, 0x0a, 0x10, 0x67, 0x65, 0x74, 0x5f, 0x77, + 0x69, 0x74, 0x68, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x48, 0x00, + 0x52, 0x0e, 0x67, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, + 0x12, 0x47, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, + 0x67, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x07, 0x67, 0x65, 0x74, + 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, 0x61, + 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x48, + 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x3a, 0x0a, 0x05, 0x75, 0x6e, 0x73, + 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, + 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x55, 0x6e, 0x73, 0x65, 0x74, 0x48, 0x00, 0x52, 0x05, + 0x75, 0x6e, 0x73, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x69, + 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x73, 0x4d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x69, 0x73, 0x4d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x70, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x1a, 0x34, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x70, 0x61, 0x69, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, + 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x1a, 0x19, 0x0a, 0x03, 0x47, 0x65, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, + 0x65, 0x79, 0x73, 0x1a, 0x3f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x44, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x70, + 0x61, 0x69, 0x72, 0x73, 0x1a, 0x1f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x04, 0x6b, 0x65, 0x79, 0x73, 0x1a, 0x30, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, 0x12, + 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0x1b, 0x0a, 0x05, 0x55, 0x6e, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x6b, 0x65, 0x79, 0x73, 0x1a, 0x3f, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x57, 0x69, 0x74, 0x68, 0x44, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, - 0x70, 0x61, 0x69, 0x72, 0x73, 0x1a, 0x1f, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x1a, 0x30, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x41, 0x6c, 0x6c, - 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x88, 0x01, 0x01, 0x42, 0x09, 0x0a, - 0x07, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x1a, 0x1b, 0x0a, 0x05, 0x55, 0x6e, 0x73, 0x65, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x04, 0x6b, 0x65, 0x79, 0x73, 0x1a, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x4d, 0x6f, 0x64, 0x69, 0x66, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x7a, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x70, 0x61, - 0x69, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, - 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, - 0x6e, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xe7, 0x06, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, - 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, - 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x40, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x28, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x62, 0x61, - 0x74, 0x63, 0x68, 0x12, 0x5a, 0x0a, 0x0b, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x75, - 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, - 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x65, 0x67, - 0x69, 0x6e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x48, 0x00, 0x52, 0x0a, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, - 0x48, 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, - 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, - 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, - 0x48, 0x00, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x35, 0x0a, 0x0d, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x72, 0x63, - 0x1a, 0x6f, 0x0a, 0x13, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x41, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x61, 0x72, - 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x1a, 0x5d, 0x0a, 0x05, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x54, 0x0a, 0x09, 0x61, 0x72, - 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, + 0x6b, 0x65, 0x79, 0x73, 0x1a, 0x22, 0x0a, 0x0c, 0x49, 0x73, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x04, 0x6b, 0x65, 0x79, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x7a, 0x0a, 0x0e, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x70, 0x61, 0x69, + 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, + 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x61, 0x72, 0x6e, + 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x77, 0x61, 0x72, 0x6e, + 0x69, 0x6e, 0x67, 0x73, 0x22, 0xe7, 0x06, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x75, + 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x01, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, + 0x12, 0x40, 0x0a, 0x05, 0x62, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, + 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, 0x05, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x12, 0x5a, 0x0a, 0x0b, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x5f, 0x63, 0x68, 0x75, 0x6e, + 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, + 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x65, 0x67, 0x69, + 0x6e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x48, 0x00, 0x52, 0x0a, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x48, + 0x0a, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x41, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, - 0x1a, 0xc1, 0x01, 0x0a, 0x14, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, - 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, - 0x0a, 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x55, 0x0a, - 0x0d, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x43, - 0x68, 0x75, 0x6e, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, - 0xbc, 0x01, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, - 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, - 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x1a, 0x51, 0x0a, 0x0f, 0x41, - 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x73, 0x75, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, - 0x73, 0x43, 0x72, 0x63, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x22, 0xc3, - 0x01, 0x0a, 0x17, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, + 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x48, + 0x00, 0x52, 0x05, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x1a, 0x35, 0x0a, 0x0d, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, + 0x03, 0x63, 0x72, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x63, 0x72, 0x63, 0x1a, + 0x6f, 0x0a, 0x13, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x41, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, + 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x1a, 0x5d, 0x0a, 0x05, 0x42, 0x61, 0x74, 0x63, 0x68, 0x12, 0x54, 0x0a, 0x09, 0x61, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, + 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x52, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x1a, + 0xc1, 0x01, 0x0a, 0x14, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, + 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, + 0x0a, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x55, 0x0a, 0x0d, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x0c, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x43, 0x68, + 0x75, 0x6e, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x0e, + 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xbc, + 0x01, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, + 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x61, + 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, + 0x09, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x1a, 0x51, 0x0a, 0x0f, 0x41, 0x72, + 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x63, 0x72, 0x63, 0x5f, 0x73, 0x75, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, + 0x43, 0x72, 0x63, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x22, 0xc3, 0x01, + 0x0a, 0x17, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, + 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, + 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, + 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x18, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x51, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x65, 0x73, 0x1a, 0x28, 0x0a, 0x0e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x1a, 0x73, 0x0a, + 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, + 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, + 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x36, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, + 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0xd8, 0x03, 0x0a, 0x10, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, + 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0e, 0x69, + 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x25, 0x0a, 0x0d, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x67, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x80, 0x01, + 0x0a, 0x0d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x54, 0x45, 0x52, + 0x52, 0x55, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x02, 0x12, + 0x1f, 0x0a, 0x1b, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x44, 0x10, 0x03, + 0x42, 0x0b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x42, 0x0e, 0x0a, + 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x5b, 0x0a, + 0x11, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, + 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x65, 0x64, + 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x72, 0x75, 0x70, 0x74, 0x65, 0x64, 0x49, 0x64, 0x73, 0x22, 0x35, 0x0a, 0x0f, 0x52, 0x65, + 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x0a, + 0x0c, 0x72, 0x65, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x61, 0x62, 0x6c, + 0x65, 0x22, 0x93, 0x02, 0x0a, 0x16, 0x52, 0x65, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x75, + 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x24, 0x0a, + 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x88, 0x01, 0x01, 0x12, 0x2d, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x49, 0x64, 0x88, + 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x69, 0x64, 0x22, 0xc6, 0x03, 0x0a, 0x15, 0x52, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x78, 0x74, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, + 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x52, 0x0a, 0x0b, 0x72, 0x65, 0x6c, 0x65, + 0x61, 0x73, 0x65, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, 0x6c, 0x6c, 0x48, 0x00, + 0x52, 0x0a, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x41, 0x6c, 0x6c, 0x12, 0x58, 0x0a, 0x0d, + 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x6e, 0x74, 0x69, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x55, 0x6e, 0x74, 0x69, 0x6c, 0x1a, 0x0c, 0x0a, 0x0a, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, + 0x65, 0x41, 0x6c, 0x6c, 0x1a, 0x2f, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x55, + 0x6e, 0x74, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x49, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, + 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x22, 0x70, 0x0a, 0x16, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x75, 0x73, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x0a, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14, - 0x0a, 0x05, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x22, 0x8c, 0x02, 0x0a, 0x18, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x51, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x65, 0x73, 0x1a, 0x28, 0x0a, 0x0e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x1a, 0x73, - 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xc5, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x24, 0x0a, 0x0b, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x63, - 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x0e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x47, 0x0a, 0x0d, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x55, 0x50, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x32, 0x0a, 0x11, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x32, - 0xa4, 0x04, 0x0a, 0x13, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x45, 0x78, 0x65, 0x63, 0x75, - 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, - 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0c, 0x6f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x0b, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, + 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x32, 0xe7, 0x05, 0x0a, 0x13, 0x53, 0x70, 0x61, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, - 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, - 0x01, 0x12, 0x56, 0x0a, 0x0b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x50, 0x6c, 0x61, 0x6e, - 0x12, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x30, 0x01, 0x12, 0x56, 0x0a, 0x0b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x50, + 0x6c, 0x61, 0x6e, 0x12, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x06, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, - 0x74, 0x73, 0x12, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x28, 0x01, 0x12, - 0x63, 0x0a, 0x0e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x26, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, - 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, - 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, - 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 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, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x50, 0x6c, + 0x61, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x06, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0c, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, + 0x66, 0x61, 0x63, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x73, 0x70, 0x61, 0x72, + 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x41, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x28, 0x01, 0x12, 0x63, 0x0a, 0x0e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x41, 0x72, 0x74, + 0x69, 0x66, 0x61, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x72, 0x75, 0x70, 0x74, 0x12, 0x1f, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0f, 0x52, 0x65, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x2e, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x0e, 0x52, + 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x24, 0x2e, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, + 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x45, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 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 ( @@ -4957,7 +5673,7 @@ func file_spark_connect_base_proto_rawDescGZIP() []byte { } var file_spark_connect_base_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_spark_connect_base_proto_msgTypes = make([]protoimpl.MessageInfo, 64) +var file_spark_connect_base_proto_msgTypes = make([]protoimpl.MessageInfo, 71) var file_spark_connect_base_proto_goTypes = []interface{}{ (AnalyzePlanRequest_Explain_ExplainMode)(0), // 0: spark.connect.AnalyzePlanRequest.Explain.ExplainMode (InterruptRequest_InterruptType)(0), // 1: spark.connect.InterruptRequest.InterruptType @@ -4976,175 +5692,192 @@ var file_spark_connect_base_proto_goTypes = []interface{}{ (*ArtifactStatusesResponse)(nil), // 14: spark.connect.ArtifactStatusesResponse (*InterruptRequest)(nil), // 15: spark.connect.InterruptRequest (*InterruptResponse)(nil), // 16: spark.connect.InterruptResponse - (*AnalyzePlanRequest_Schema)(nil), // 17: spark.connect.AnalyzePlanRequest.Schema - (*AnalyzePlanRequest_Explain)(nil), // 18: spark.connect.AnalyzePlanRequest.Explain - (*AnalyzePlanRequest_TreeString)(nil), // 19: spark.connect.AnalyzePlanRequest.TreeString - (*AnalyzePlanRequest_IsLocal)(nil), // 20: spark.connect.AnalyzePlanRequest.IsLocal - (*AnalyzePlanRequest_IsStreaming)(nil), // 21: spark.connect.AnalyzePlanRequest.IsStreaming - (*AnalyzePlanRequest_InputFiles)(nil), // 22: spark.connect.AnalyzePlanRequest.InputFiles - (*AnalyzePlanRequest_SparkVersion)(nil), // 23: spark.connect.AnalyzePlanRequest.SparkVersion - (*AnalyzePlanRequest_DDLParse)(nil), // 24: spark.connect.AnalyzePlanRequest.DDLParse - (*AnalyzePlanRequest_SameSemantics)(nil), // 25: spark.connect.AnalyzePlanRequest.SameSemantics - (*AnalyzePlanRequest_SemanticHash)(nil), // 26: spark.connect.AnalyzePlanRequest.SemanticHash - (*AnalyzePlanRequest_Persist)(nil), // 27: spark.connect.AnalyzePlanRequest.Persist - (*AnalyzePlanRequest_Unpersist)(nil), // 28: spark.connect.AnalyzePlanRequest.Unpersist - (*AnalyzePlanRequest_GetStorageLevel)(nil), // 29: spark.connect.AnalyzePlanRequest.GetStorageLevel - (*AnalyzePlanResponse_Schema)(nil), // 30: spark.connect.AnalyzePlanResponse.Schema - (*AnalyzePlanResponse_Explain)(nil), // 31: spark.connect.AnalyzePlanResponse.Explain - (*AnalyzePlanResponse_TreeString)(nil), // 32: spark.connect.AnalyzePlanResponse.TreeString - (*AnalyzePlanResponse_IsLocal)(nil), // 33: spark.connect.AnalyzePlanResponse.IsLocal - (*AnalyzePlanResponse_IsStreaming)(nil), // 34: spark.connect.AnalyzePlanResponse.IsStreaming - (*AnalyzePlanResponse_InputFiles)(nil), // 35: spark.connect.AnalyzePlanResponse.InputFiles - (*AnalyzePlanResponse_SparkVersion)(nil), // 36: spark.connect.AnalyzePlanResponse.SparkVersion - (*AnalyzePlanResponse_DDLParse)(nil), // 37: spark.connect.AnalyzePlanResponse.DDLParse - (*AnalyzePlanResponse_SameSemantics)(nil), // 38: spark.connect.AnalyzePlanResponse.SameSemantics - (*AnalyzePlanResponse_SemanticHash)(nil), // 39: spark.connect.AnalyzePlanResponse.SemanticHash - (*AnalyzePlanResponse_Persist)(nil), // 40: spark.connect.AnalyzePlanResponse.Persist - (*AnalyzePlanResponse_Unpersist)(nil), // 41: spark.connect.AnalyzePlanResponse.Unpersist - (*AnalyzePlanResponse_GetStorageLevel)(nil), // 42: spark.connect.AnalyzePlanResponse.GetStorageLevel - (*ExecutePlanRequest_RequestOption)(nil), // 43: spark.connect.ExecutePlanRequest.RequestOption - (*ExecutePlanResponse_SqlCommandResult)(nil), // 44: spark.connect.ExecutePlanResponse.SqlCommandResult - (*ExecutePlanResponse_ArrowBatch)(nil), // 45: spark.connect.ExecutePlanResponse.ArrowBatch - (*ExecutePlanResponse_Metrics)(nil), // 46: spark.connect.ExecutePlanResponse.Metrics - (*ExecutePlanResponse_ObservedMetrics)(nil), // 47: spark.connect.ExecutePlanResponse.ObservedMetrics - (*ExecutePlanResponse_Metrics_MetricObject)(nil), // 48: spark.connect.ExecutePlanResponse.Metrics.MetricObject - (*ExecutePlanResponse_Metrics_MetricValue)(nil), // 49: spark.connect.ExecutePlanResponse.Metrics.MetricValue - nil, // 50: spark.connect.ExecutePlanResponse.Metrics.MetricObject.ExecutionMetricsEntry - (*ConfigRequest_Operation)(nil), // 51: spark.connect.ConfigRequest.Operation - (*ConfigRequest_Set)(nil), // 52: spark.connect.ConfigRequest.Set - (*ConfigRequest_Get)(nil), // 53: spark.connect.ConfigRequest.Get - (*ConfigRequest_GetWithDefault)(nil), // 54: spark.connect.ConfigRequest.GetWithDefault - (*ConfigRequest_GetOption)(nil), // 55: spark.connect.ConfigRequest.GetOption - (*ConfigRequest_GetAll)(nil), // 56: spark.connect.ConfigRequest.GetAll - (*ConfigRequest_Unset)(nil), // 57: spark.connect.ConfigRequest.Unset - (*ConfigRequest_IsModifiable)(nil), // 58: spark.connect.ConfigRequest.IsModifiable - (*AddArtifactsRequest_ArtifactChunk)(nil), // 59: spark.connect.AddArtifactsRequest.ArtifactChunk - (*AddArtifactsRequest_SingleChunkArtifact)(nil), // 60: spark.connect.AddArtifactsRequest.SingleChunkArtifact - (*AddArtifactsRequest_Batch)(nil), // 61: spark.connect.AddArtifactsRequest.Batch - (*AddArtifactsRequest_BeginChunkedArtifact)(nil), // 62: spark.connect.AddArtifactsRequest.BeginChunkedArtifact - (*AddArtifactsResponse_ArtifactSummary)(nil), // 63: spark.connect.AddArtifactsResponse.ArtifactSummary - (*ArtifactStatusesResponse_ArtifactStatus)(nil), // 64: spark.connect.ArtifactStatusesResponse.ArtifactStatus - nil, // 65: spark.connect.ArtifactStatusesResponse.StatusesEntry - (*Relation)(nil), // 66: spark.connect.Relation - (*Command)(nil), // 67: spark.connect.Command - (*anypb.Any)(nil), // 68: google.protobuf.Any - (*WriteStreamOperationStartResult)(nil), // 69: spark.connect.WriteStreamOperationStartResult - (*StreamingQueryCommandResult)(nil), // 70: spark.connect.StreamingQueryCommandResult - (*GetResourcesCommandResult)(nil), // 71: spark.connect.GetResourcesCommandResult - (*StreamingQueryManagerCommandResult)(nil), // 72: spark.connect.StreamingQueryManagerCommandResult - (*DataType)(nil), // 73: spark.connect.DataType - (*StorageLevel)(nil), // 74: spark.connect.StorageLevel - (*Expression_Literal)(nil), // 75: spark.connect.Expression.Literal + (*ReattachOptions)(nil), // 17: spark.connect.ReattachOptions + (*ReattachExecuteRequest)(nil), // 18: spark.connect.ReattachExecuteRequest + (*ReleaseExecuteRequest)(nil), // 19: spark.connect.ReleaseExecuteRequest + (*ReleaseExecuteResponse)(nil), // 20: spark.connect.ReleaseExecuteResponse + (*AnalyzePlanRequest_Schema)(nil), // 21: spark.connect.AnalyzePlanRequest.Schema + (*AnalyzePlanRequest_Explain)(nil), // 22: spark.connect.AnalyzePlanRequest.Explain + (*AnalyzePlanRequest_TreeString)(nil), // 23: spark.connect.AnalyzePlanRequest.TreeString + (*AnalyzePlanRequest_IsLocal)(nil), // 24: spark.connect.AnalyzePlanRequest.IsLocal + (*AnalyzePlanRequest_IsStreaming)(nil), // 25: spark.connect.AnalyzePlanRequest.IsStreaming + (*AnalyzePlanRequest_InputFiles)(nil), // 26: spark.connect.AnalyzePlanRequest.InputFiles + (*AnalyzePlanRequest_SparkVersion)(nil), // 27: spark.connect.AnalyzePlanRequest.SparkVersion + (*AnalyzePlanRequest_DDLParse)(nil), // 28: spark.connect.AnalyzePlanRequest.DDLParse + (*AnalyzePlanRequest_SameSemantics)(nil), // 29: spark.connect.AnalyzePlanRequest.SameSemantics + (*AnalyzePlanRequest_SemanticHash)(nil), // 30: spark.connect.AnalyzePlanRequest.SemanticHash + (*AnalyzePlanRequest_Persist)(nil), // 31: spark.connect.AnalyzePlanRequest.Persist + (*AnalyzePlanRequest_Unpersist)(nil), // 32: spark.connect.AnalyzePlanRequest.Unpersist + (*AnalyzePlanRequest_GetStorageLevel)(nil), // 33: spark.connect.AnalyzePlanRequest.GetStorageLevel + (*AnalyzePlanResponse_Schema)(nil), // 34: spark.connect.AnalyzePlanResponse.Schema + (*AnalyzePlanResponse_Explain)(nil), // 35: spark.connect.AnalyzePlanResponse.Explain + (*AnalyzePlanResponse_TreeString)(nil), // 36: spark.connect.AnalyzePlanResponse.TreeString + (*AnalyzePlanResponse_IsLocal)(nil), // 37: spark.connect.AnalyzePlanResponse.IsLocal + (*AnalyzePlanResponse_IsStreaming)(nil), // 38: spark.connect.AnalyzePlanResponse.IsStreaming + (*AnalyzePlanResponse_InputFiles)(nil), // 39: spark.connect.AnalyzePlanResponse.InputFiles + (*AnalyzePlanResponse_SparkVersion)(nil), // 40: spark.connect.AnalyzePlanResponse.SparkVersion + (*AnalyzePlanResponse_DDLParse)(nil), // 41: spark.connect.AnalyzePlanResponse.DDLParse + (*AnalyzePlanResponse_SameSemantics)(nil), // 42: spark.connect.AnalyzePlanResponse.SameSemantics + (*AnalyzePlanResponse_SemanticHash)(nil), // 43: spark.connect.AnalyzePlanResponse.SemanticHash + (*AnalyzePlanResponse_Persist)(nil), // 44: spark.connect.AnalyzePlanResponse.Persist + (*AnalyzePlanResponse_Unpersist)(nil), // 45: spark.connect.AnalyzePlanResponse.Unpersist + (*AnalyzePlanResponse_GetStorageLevel)(nil), // 46: spark.connect.AnalyzePlanResponse.GetStorageLevel + (*ExecutePlanRequest_RequestOption)(nil), // 47: spark.connect.ExecutePlanRequest.RequestOption + (*ExecutePlanResponse_SqlCommandResult)(nil), // 48: spark.connect.ExecutePlanResponse.SqlCommandResult + (*ExecutePlanResponse_ArrowBatch)(nil), // 49: spark.connect.ExecutePlanResponse.ArrowBatch + (*ExecutePlanResponse_Metrics)(nil), // 50: spark.connect.ExecutePlanResponse.Metrics + (*ExecutePlanResponse_ObservedMetrics)(nil), // 51: spark.connect.ExecutePlanResponse.ObservedMetrics + (*ExecutePlanResponse_ResultComplete)(nil), // 52: spark.connect.ExecutePlanResponse.ResultComplete + (*ExecutePlanResponse_Metrics_MetricObject)(nil), // 53: spark.connect.ExecutePlanResponse.Metrics.MetricObject + (*ExecutePlanResponse_Metrics_MetricValue)(nil), // 54: spark.connect.ExecutePlanResponse.Metrics.MetricValue + nil, // 55: spark.connect.ExecutePlanResponse.Metrics.MetricObject.ExecutionMetricsEntry + (*ConfigRequest_Operation)(nil), // 56: spark.connect.ConfigRequest.Operation + (*ConfigRequest_Set)(nil), // 57: spark.connect.ConfigRequest.Set + (*ConfigRequest_Get)(nil), // 58: spark.connect.ConfigRequest.Get + (*ConfigRequest_GetWithDefault)(nil), // 59: spark.connect.ConfigRequest.GetWithDefault + (*ConfigRequest_GetOption)(nil), // 60: spark.connect.ConfigRequest.GetOption + (*ConfigRequest_GetAll)(nil), // 61: spark.connect.ConfigRequest.GetAll + (*ConfigRequest_Unset)(nil), // 62: spark.connect.ConfigRequest.Unset + (*ConfigRequest_IsModifiable)(nil), // 63: spark.connect.ConfigRequest.IsModifiable + (*AddArtifactsRequest_ArtifactChunk)(nil), // 64: spark.connect.AddArtifactsRequest.ArtifactChunk + (*AddArtifactsRequest_SingleChunkArtifact)(nil), // 65: spark.connect.AddArtifactsRequest.SingleChunkArtifact + (*AddArtifactsRequest_Batch)(nil), // 66: spark.connect.AddArtifactsRequest.Batch + (*AddArtifactsRequest_BeginChunkedArtifact)(nil), // 67: spark.connect.AddArtifactsRequest.BeginChunkedArtifact + (*AddArtifactsResponse_ArtifactSummary)(nil), // 68: spark.connect.AddArtifactsResponse.ArtifactSummary + (*ArtifactStatusesResponse_ArtifactStatus)(nil), // 69: spark.connect.ArtifactStatusesResponse.ArtifactStatus + nil, // 70: spark.connect.ArtifactStatusesResponse.StatusesEntry + (*ReleaseExecuteRequest_ReleaseAll)(nil), // 71: spark.connect.ReleaseExecuteRequest.ReleaseAll + (*ReleaseExecuteRequest_ReleaseUntil)(nil), // 72: spark.connect.ReleaseExecuteRequest.ReleaseUntil + (*Relation)(nil), // 73: spark.connect.Relation + (*Command)(nil), // 74: spark.connect.Command + (*anypb.Any)(nil), // 75: google.protobuf.Any + (*WriteStreamOperationStartResult)(nil), // 76: spark.connect.WriteStreamOperationStartResult + (*StreamingQueryCommandResult)(nil), // 77: spark.connect.StreamingQueryCommandResult + (*GetResourcesCommandResult)(nil), // 78: spark.connect.GetResourcesCommandResult + (*StreamingQueryManagerCommandResult)(nil), // 79: spark.connect.StreamingQueryManagerCommandResult + (*DataType)(nil), // 80: spark.connect.DataType + (*StorageLevel)(nil), // 81: spark.connect.StorageLevel + (*Expression_Literal)(nil), // 82: spark.connect.Expression.Literal } var file_spark_connect_base_proto_depIdxs = []int32{ - 66, // 0: spark.connect.Plan.root:type_name -> spark.connect.Relation - 67, // 1: spark.connect.Plan.command:type_name -> spark.connect.Command - 68, // 2: spark.connect.UserContext.extensions:type_name -> google.protobuf.Any - 3, // 3: spark.connect.AnalyzePlanRequest.user_context:type_name -> spark.connect.UserContext - 17, // 4: spark.connect.AnalyzePlanRequest.schema:type_name -> spark.connect.AnalyzePlanRequest.Schema - 18, // 5: spark.connect.AnalyzePlanRequest.explain:type_name -> spark.connect.AnalyzePlanRequest.Explain - 19, // 6: spark.connect.AnalyzePlanRequest.tree_string:type_name -> spark.connect.AnalyzePlanRequest.TreeString - 20, // 7: spark.connect.AnalyzePlanRequest.is_local:type_name -> spark.connect.AnalyzePlanRequest.IsLocal - 21, // 8: spark.connect.AnalyzePlanRequest.is_streaming:type_name -> spark.connect.AnalyzePlanRequest.IsStreaming - 22, // 9: spark.connect.AnalyzePlanRequest.input_files:type_name -> spark.connect.AnalyzePlanRequest.InputFiles - 23, // 10: spark.connect.AnalyzePlanRequest.spark_version:type_name -> spark.connect.AnalyzePlanRequest.SparkVersion - 24, // 11: spark.connect.AnalyzePlanRequest.ddl_parse:type_name -> spark.connect.AnalyzePlanRequest.DDLParse - 25, // 12: spark.connect.AnalyzePlanRequest.same_semantics:type_name -> spark.connect.AnalyzePlanRequest.SameSemantics - 26, // 13: spark.connect.AnalyzePlanRequest.semantic_hash:type_name -> spark.connect.AnalyzePlanRequest.SemanticHash - 27, // 14: spark.connect.AnalyzePlanRequest.persist:type_name -> spark.connect.AnalyzePlanRequest.Persist - 28, // 15: spark.connect.AnalyzePlanRequest.unpersist:type_name -> spark.connect.AnalyzePlanRequest.Unpersist - 29, // 16: spark.connect.AnalyzePlanRequest.get_storage_level:type_name -> spark.connect.AnalyzePlanRequest.GetStorageLevel - 30, // 17: spark.connect.AnalyzePlanResponse.schema:type_name -> spark.connect.AnalyzePlanResponse.Schema - 31, // 18: spark.connect.AnalyzePlanResponse.explain:type_name -> spark.connect.AnalyzePlanResponse.Explain - 32, // 19: spark.connect.AnalyzePlanResponse.tree_string:type_name -> spark.connect.AnalyzePlanResponse.TreeString - 33, // 20: spark.connect.AnalyzePlanResponse.is_local:type_name -> spark.connect.AnalyzePlanResponse.IsLocal - 34, // 21: spark.connect.AnalyzePlanResponse.is_streaming:type_name -> spark.connect.AnalyzePlanResponse.IsStreaming - 35, // 22: spark.connect.AnalyzePlanResponse.input_files:type_name -> spark.connect.AnalyzePlanResponse.InputFiles - 36, // 23: spark.connect.AnalyzePlanResponse.spark_version:type_name -> spark.connect.AnalyzePlanResponse.SparkVersion - 37, // 24: spark.connect.AnalyzePlanResponse.ddl_parse:type_name -> spark.connect.AnalyzePlanResponse.DDLParse - 38, // 25: spark.connect.AnalyzePlanResponse.same_semantics:type_name -> spark.connect.AnalyzePlanResponse.SameSemantics - 39, // 26: spark.connect.AnalyzePlanResponse.semantic_hash:type_name -> spark.connect.AnalyzePlanResponse.SemanticHash - 40, // 27: spark.connect.AnalyzePlanResponse.persist:type_name -> spark.connect.AnalyzePlanResponse.Persist - 41, // 28: spark.connect.AnalyzePlanResponse.unpersist:type_name -> spark.connect.AnalyzePlanResponse.Unpersist - 42, // 29: spark.connect.AnalyzePlanResponse.get_storage_level:type_name -> spark.connect.AnalyzePlanResponse.GetStorageLevel - 3, // 30: spark.connect.ExecutePlanRequest.user_context:type_name -> spark.connect.UserContext - 2, // 31: spark.connect.ExecutePlanRequest.plan:type_name -> spark.connect.Plan - 43, // 32: spark.connect.ExecutePlanRequest.request_options:type_name -> spark.connect.ExecutePlanRequest.RequestOption - 45, // 33: spark.connect.ExecutePlanResponse.arrow_batch:type_name -> spark.connect.ExecutePlanResponse.ArrowBatch - 44, // 34: spark.connect.ExecutePlanResponse.sql_command_result:type_name -> spark.connect.ExecutePlanResponse.SqlCommandResult - 69, // 35: spark.connect.ExecutePlanResponse.write_stream_operation_start_result:type_name -> spark.connect.WriteStreamOperationStartResult - 70, // 36: spark.connect.ExecutePlanResponse.streaming_query_command_result:type_name -> spark.connect.StreamingQueryCommandResult - 71, // 37: spark.connect.ExecutePlanResponse.get_resources_command_result:type_name -> spark.connect.GetResourcesCommandResult - 72, // 38: spark.connect.ExecutePlanResponse.streaming_query_manager_command_result:type_name -> spark.connect.StreamingQueryManagerCommandResult - 68, // 39: spark.connect.ExecutePlanResponse.extension:type_name -> google.protobuf.Any - 46, // 40: spark.connect.ExecutePlanResponse.metrics:type_name -> spark.connect.ExecutePlanResponse.Metrics - 47, // 41: spark.connect.ExecutePlanResponse.observed_metrics:type_name -> spark.connect.ExecutePlanResponse.ObservedMetrics - 73, // 42: spark.connect.ExecutePlanResponse.schema:type_name -> spark.connect.DataType - 3, // 43: spark.connect.ConfigRequest.user_context:type_name -> spark.connect.UserContext - 51, // 44: spark.connect.ConfigRequest.operation:type_name -> spark.connect.ConfigRequest.Operation - 8, // 45: spark.connect.ConfigResponse.pairs:type_name -> spark.connect.KeyValue - 3, // 46: spark.connect.AddArtifactsRequest.user_context:type_name -> spark.connect.UserContext - 61, // 47: spark.connect.AddArtifactsRequest.batch:type_name -> spark.connect.AddArtifactsRequest.Batch - 62, // 48: spark.connect.AddArtifactsRequest.begin_chunk:type_name -> spark.connect.AddArtifactsRequest.BeginChunkedArtifact - 59, // 49: spark.connect.AddArtifactsRequest.chunk:type_name -> spark.connect.AddArtifactsRequest.ArtifactChunk - 63, // 50: spark.connect.AddArtifactsResponse.artifacts:type_name -> spark.connect.AddArtifactsResponse.ArtifactSummary - 3, // 51: spark.connect.ArtifactStatusesRequest.user_context:type_name -> spark.connect.UserContext - 65, // 52: spark.connect.ArtifactStatusesResponse.statuses:type_name -> spark.connect.ArtifactStatusesResponse.StatusesEntry - 3, // 53: spark.connect.InterruptRequest.user_context:type_name -> spark.connect.UserContext - 1, // 54: spark.connect.InterruptRequest.interrupt_type:type_name -> spark.connect.InterruptRequest.InterruptType - 2, // 55: spark.connect.AnalyzePlanRequest.Schema.plan:type_name -> spark.connect.Plan - 2, // 56: spark.connect.AnalyzePlanRequest.Explain.plan:type_name -> spark.connect.Plan - 0, // 57: spark.connect.AnalyzePlanRequest.Explain.explain_mode:type_name -> spark.connect.AnalyzePlanRequest.Explain.ExplainMode - 2, // 58: spark.connect.AnalyzePlanRequest.TreeString.plan:type_name -> spark.connect.Plan - 2, // 59: spark.connect.AnalyzePlanRequest.IsLocal.plan:type_name -> spark.connect.Plan - 2, // 60: spark.connect.AnalyzePlanRequest.IsStreaming.plan:type_name -> spark.connect.Plan - 2, // 61: spark.connect.AnalyzePlanRequest.InputFiles.plan:type_name -> spark.connect.Plan - 2, // 62: spark.connect.AnalyzePlanRequest.SameSemantics.target_plan:type_name -> spark.connect.Plan - 2, // 63: spark.connect.AnalyzePlanRequest.SameSemantics.other_plan:type_name -> spark.connect.Plan - 2, // 64: spark.connect.AnalyzePlanRequest.SemanticHash.plan:type_name -> spark.connect.Plan - 66, // 65: spark.connect.AnalyzePlanRequest.Persist.relation:type_name -> spark.connect.Relation - 74, // 66: spark.connect.AnalyzePlanRequest.Persist.storage_level:type_name -> spark.connect.StorageLevel - 66, // 67: spark.connect.AnalyzePlanRequest.Unpersist.relation:type_name -> spark.connect.Relation - 66, // 68: spark.connect.AnalyzePlanRequest.GetStorageLevel.relation:type_name -> spark.connect.Relation - 73, // 69: spark.connect.AnalyzePlanResponse.Schema.schema:type_name -> spark.connect.DataType - 73, // 70: spark.connect.AnalyzePlanResponse.DDLParse.parsed:type_name -> spark.connect.DataType - 74, // 71: spark.connect.AnalyzePlanResponse.GetStorageLevel.storage_level:type_name -> spark.connect.StorageLevel - 68, // 72: spark.connect.ExecutePlanRequest.RequestOption.extension:type_name -> google.protobuf.Any - 66, // 73: spark.connect.ExecutePlanResponse.SqlCommandResult.relation:type_name -> spark.connect.Relation - 48, // 74: spark.connect.ExecutePlanResponse.Metrics.metrics:type_name -> spark.connect.ExecutePlanResponse.Metrics.MetricObject - 75, // 75: spark.connect.ExecutePlanResponse.ObservedMetrics.values:type_name -> spark.connect.Expression.Literal - 50, // 76: spark.connect.ExecutePlanResponse.Metrics.MetricObject.execution_metrics:type_name -> spark.connect.ExecutePlanResponse.Metrics.MetricObject.ExecutionMetricsEntry - 49, // 77: spark.connect.ExecutePlanResponse.Metrics.MetricObject.ExecutionMetricsEntry.value:type_name -> spark.connect.ExecutePlanResponse.Metrics.MetricValue - 52, // 78: spark.connect.ConfigRequest.Operation.set:type_name -> spark.connect.ConfigRequest.Set - 53, // 79: spark.connect.ConfigRequest.Operation.get:type_name -> spark.connect.ConfigRequest.Get - 54, // 80: spark.connect.ConfigRequest.Operation.get_with_default:type_name -> spark.connect.ConfigRequest.GetWithDefault - 55, // 81: spark.connect.ConfigRequest.Operation.get_option:type_name -> spark.connect.ConfigRequest.GetOption - 56, // 82: spark.connect.ConfigRequest.Operation.get_all:type_name -> spark.connect.ConfigRequest.GetAll - 57, // 83: spark.connect.ConfigRequest.Operation.unset:type_name -> spark.connect.ConfigRequest.Unset - 58, // 84: spark.connect.ConfigRequest.Operation.is_modifiable:type_name -> spark.connect.ConfigRequest.IsModifiable - 8, // 85: spark.connect.ConfigRequest.Set.pairs:type_name -> spark.connect.KeyValue - 8, // 86: spark.connect.ConfigRequest.GetWithDefault.pairs:type_name -> spark.connect.KeyValue - 59, // 87: spark.connect.AddArtifactsRequest.SingleChunkArtifact.data:type_name -> spark.connect.AddArtifactsRequest.ArtifactChunk - 60, // 88: spark.connect.AddArtifactsRequest.Batch.artifacts:type_name -> spark.connect.AddArtifactsRequest.SingleChunkArtifact - 59, // 89: spark.connect.AddArtifactsRequest.BeginChunkedArtifact.initial_chunk:type_name -> spark.connect.AddArtifactsRequest.ArtifactChunk - 64, // 90: spark.connect.ArtifactStatusesResponse.StatusesEntry.value:type_name -> spark.connect.ArtifactStatusesResponse.ArtifactStatus - 6, // 91: spark.connect.SparkConnectService.ExecutePlan:input_type -> spark.connect.ExecutePlanRequest - 4, // 92: spark.connect.SparkConnectService.AnalyzePlan:input_type -> spark.connect.AnalyzePlanRequest - 9, // 93: spark.connect.SparkConnectService.Config:input_type -> spark.connect.ConfigRequest - 11, // 94: spark.connect.SparkConnectService.AddArtifacts:input_type -> spark.connect.AddArtifactsRequest - 13, // 95: spark.connect.SparkConnectService.ArtifactStatus:input_type -> spark.connect.ArtifactStatusesRequest - 15, // 96: spark.connect.SparkConnectService.Interrupt:input_type -> spark.connect.InterruptRequest - 7, // 97: spark.connect.SparkConnectService.ExecutePlan:output_type -> spark.connect.ExecutePlanResponse - 5, // 98: spark.connect.SparkConnectService.AnalyzePlan:output_type -> spark.connect.AnalyzePlanResponse - 10, // 99: spark.connect.SparkConnectService.Config:output_type -> spark.connect.ConfigResponse - 12, // 100: spark.connect.SparkConnectService.AddArtifacts:output_type -> spark.connect.AddArtifactsResponse - 14, // 101: spark.connect.SparkConnectService.ArtifactStatus:output_type -> spark.connect.ArtifactStatusesResponse - 16, // 102: spark.connect.SparkConnectService.Interrupt:output_type -> spark.connect.InterruptResponse - 97, // [97:103] is the sub-list for method output_type - 91, // [91:97] is the sub-list for method input_type - 91, // [91:91] is the sub-list for extension type_name - 91, // [91:91] is the sub-list for extension extendee - 0, // [0:91] is the sub-list for field type_name + 73, // 0: spark.connect.Plan.root:type_name -> spark.connect.Relation + 74, // 1: spark.connect.Plan.command:type_name -> spark.connect.Command + 75, // 2: spark.connect.UserContext.extensions:type_name -> google.protobuf.Any + 3, // 3: spark.connect.AnalyzePlanRequest.user_context:type_name -> spark.connect.UserContext + 21, // 4: spark.connect.AnalyzePlanRequest.schema:type_name -> spark.connect.AnalyzePlanRequest.Schema + 22, // 5: spark.connect.AnalyzePlanRequest.explain:type_name -> spark.connect.AnalyzePlanRequest.Explain + 23, // 6: spark.connect.AnalyzePlanRequest.tree_string:type_name -> spark.connect.AnalyzePlanRequest.TreeString + 24, // 7: spark.connect.AnalyzePlanRequest.is_local:type_name -> spark.connect.AnalyzePlanRequest.IsLocal + 25, // 8: spark.connect.AnalyzePlanRequest.is_streaming:type_name -> spark.connect.AnalyzePlanRequest.IsStreaming + 26, // 9: spark.connect.AnalyzePlanRequest.input_files:type_name -> spark.connect.AnalyzePlanRequest.InputFiles + 27, // 10: spark.connect.AnalyzePlanRequest.spark_version:type_name -> spark.connect.AnalyzePlanRequest.SparkVersion + 28, // 11: spark.connect.AnalyzePlanRequest.ddl_parse:type_name -> spark.connect.AnalyzePlanRequest.DDLParse + 29, // 12: spark.connect.AnalyzePlanRequest.same_semantics:type_name -> spark.connect.AnalyzePlanRequest.SameSemantics + 30, // 13: spark.connect.AnalyzePlanRequest.semantic_hash:type_name -> spark.connect.AnalyzePlanRequest.SemanticHash + 31, // 14: spark.connect.AnalyzePlanRequest.persist:type_name -> spark.connect.AnalyzePlanRequest.Persist + 32, // 15: spark.connect.AnalyzePlanRequest.unpersist:type_name -> spark.connect.AnalyzePlanRequest.Unpersist + 33, // 16: spark.connect.AnalyzePlanRequest.get_storage_level:type_name -> spark.connect.AnalyzePlanRequest.GetStorageLevel + 34, // 17: spark.connect.AnalyzePlanResponse.schema:type_name -> spark.connect.AnalyzePlanResponse.Schema + 35, // 18: spark.connect.AnalyzePlanResponse.explain:type_name -> spark.connect.AnalyzePlanResponse.Explain + 36, // 19: spark.connect.AnalyzePlanResponse.tree_string:type_name -> spark.connect.AnalyzePlanResponse.TreeString + 37, // 20: spark.connect.AnalyzePlanResponse.is_local:type_name -> spark.connect.AnalyzePlanResponse.IsLocal + 38, // 21: spark.connect.AnalyzePlanResponse.is_streaming:type_name -> spark.connect.AnalyzePlanResponse.IsStreaming + 39, // 22: spark.connect.AnalyzePlanResponse.input_files:type_name -> spark.connect.AnalyzePlanResponse.InputFiles + 40, // 23: spark.connect.AnalyzePlanResponse.spark_version:type_name -> spark.connect.AnalyzePlanResponse.SparkVersion + 41, // 24: spark.connect.AnalyzePlanResponse.ddl_parse:type_name -> spark.connect.AnalyzePlanResponse.DDLParse + 42, // 25: spark.connect.AnalyzePlanResponse.same_semantics:type_name -> spark.connect.AnalyzePlanResponse.SameSemantics + 43, // 26: spark.connect.AnalyzePlanResponse.semantic_hash:type_name -> spark.connect.AnalyzePlanResponse.SemanticHash + 44, // 27: spark.connect.AnalyzePlanResponse.persist:type_name -> spark.connect.AnalyzePlanResponse.Persist + 45, // 28: spark.connect.AnalyzePlanResponse.unpersist:type_name -> spark.connect.AnalyzePlanResponse.Unpersist + 46, // 29: spark.connect.AnalyzePlanResponse.get_storage_level:type_name -> spark.connect.AnalyzePlanResponse.GetStorageLevel + 3, // 30: spark.connect.ExecutePlanRequest.user_context:type_name -> spark.connect.UserContext + 2, // 31: spark.connect.ExecutePlanRequest.plan:type_name -> spark.connect.Plan + 47, // 32: spark.connect.ExecutePlanRequest.request_options:type_name -> spark.connect.ExecutePlanRequest.RequestOption + 49, // 33: spark.connect.ExecutePlanResponse.arrow_batch:type_name -> spark.connect.ExecutePlanResponse.ArrowBatch + 48, // 34: spark.connect.ExecutePlanResponse.sql_command_result:type_name -> spark.connect.ExecutePlanResponse.SqlCommandResult + 76, // 35: spark.connect.ExecutePlanResponse.write_stream_operation_start_result:type_name -> spark.connect.WriteStreamOperationStartResult + 77, // 36: spark.connect.ExecutePlanResponse.streaming_query_command_result:type_name -> spark.connect.StreamingQueryCommandResult + 78, // 37: spark.connect.ExecutePlanResponse.get_resources_command_result:type_name -> spark.connect.GetResourcesCommandResult + 79, // 38: spark.connect.ExecutePlanResponse.streaming_query_manager_command_result:type_name -> spark.connect.StreamingQueryManagerCommandResult + 52, // 39: spark.connect.ExecutePlanResponse.result_complete:type_name -> spark.connect.ExecutePlanResponse.ResultComplete + 75, // 40: spark.connect.ExecutePlanResponse.extension:type_name -> google.protobuf.Any + 50, // 41: spark.connect.ExecutePlanResponse.metrics:type_name -> spark.connect.ExecutePlanResponse.Metrics + 51, // 42: spark.connect.ExecutePlanResponse.observed_metrics:type_name -> spark.connect.ExecutePlanResponse.ObservedMetrics + 80, // 43: spark.connect.ExecutePlanResponse.schema:type_name -> spark.connect.DataType + 3, // 44: spark.connect.ConfigRequest.user_context:type_name -> spark.connect.UserContext + 56, // 45: spark.connect.ConfigRequest.operation:type_name -> spark.connect.ConfigRequest.Operation + 8, // 46: spark.connect.ConfigResponse.pairs:type_name -> spark.connect.KeyValue + 3, // 47: spark.connect.AddArtifactsRequest.user_context:type_name -> spark.connect.UserContext + 66, // 48: spark.connect.AddArtifactsRequest.batch:type_name -> spark.connect.AddArtifactsRequest.Batch + 67, // 49: spark.connect.AddArtifactsRequest.begin_chunk:type_name -> spark.connect.AddArtifactsRequest.BeginChunkedArtifact + 64, // 50: spark.connect.AddArtifactsRequest.chunk:type_name -> spark.connect.AddArtifactsRequest.ArtifactChunk + 68, // 51: spark.connect.AddArtifactsResponse.artifacts:type_name -> spark.connect.AddArtifactsResponse.ArtifactSummary + 3, // 52: spark.connect.ArtifactStatusesRequest.user_context:type_name -> spark.connect.UserContext + 70, // 53: spark.connect.ArtifactStatusesResponse.statuses:type_name -> spark.connect.ArtifactStatusesResponse.StatusesEntry + 3, // 54: spark.connect.InterruptRequest.user_context:type_name -> spark.connect.UserContext + 1, // 55: spark.connect.InterruptRequest.interrupt_type:type_name -> spark.connect.InterruptRequest.InterruptType + 3, // 56: spark.connect.ReattachExecuteRequest.user_context:type_name -> spark.connect.UserContext + 3, // 57: spark.connect.ReleaseExecuteRequest.user_context:type_name -> spark.connect.UserContext + 71, // 58: spark.connect.ReleaseExecuteRequest.release_all:type_name -> spark.connect.ReleaseExecuteRequest.ReleaseAll + 72, // 59: spark.connect.ReleaseExecuteRequest.release_until:type_name -> spark.connect.ReleaseExecuteRequest.ReleaseUntil + 2, // 60: spark.connect.AnalyzePlanRequest.Schema.plan:type_name -> spark.connect.Plan + 2, // 61: spark.connect.AnalyzePlanRequest.Explain.plan:type_name -> spark.connect.Plan + 0, // 62: spark.connect.AnalyzePlanRequest.Explain.explain_mode:type_name -> spark.connect.AnalyzePlanRequest.Explain.ExplainMode + 2, // 63: spark.connect.AnalyzePlanRequest.TreeString.plan:type_name -> spark.connect.Plan + 2, // 64: spark.connect.AnalyzePlanRequest.IsLocal.plan:type_name -> spark.connect.Plan + 2, // 65: spark.connect.AnalyzePlanRequest.IsStreaming.plan:type_name -> spark.connect.Plan + 2, // 66: spark.connect.AnalyzePlanRequest.InputFiles.plan:type_name -> spark.connect.Plan + 2, // 67: spark.connect.AnalyzePlanRequest.SameSemantics.target_plan:type_name -> spark.connect.Plan + 2, // 68: spark.connect.AnalyzePlanRequest.SameSemantics.other_plan:type_name -> spark.connect.Plan + 2, // 69: spark.connect.AnalyzePlanRequest.SemanticHash.plan:type_name -> spark.connect.Plan + 73, // 70: spark.connect.AnalyzePlanRequest.Persist.relation:type_name -> spark.connect.Relation + 81, // 71: spark.connect.AnalyzePlanRequest.Persist.storage_level:type_name -> spark.connect.StorageLevel + 73, // 72: spark.connect.AnalyzePlanRequest.Unpersist.relation:type_name -> spark.connect.Relation + 73, // 73: spark.connect.AnalyzePlanRequest.GetStorageLevel.relation:type_name -> spark.connect.Relation + 80, // 74: spark.connect.AnalyzePlanResponse.Schema.schema:type_name -> spark.connect.DataType + 80, // 75: spark.connect.AnalyzePlanResponse.DDLParse.parsed:type_name -> spark.connect.DataType + 81, // 76: spark.connect.AnalyzePlanResponse.GetStorageLevel.storage_level:type_name -> spark.connect.StorageLevel + 17, // 77: spark.connect.ExecutePlanRequest.RequestOption.reattach_options:type_name -> spark.connect.ReattachOptions + 75, // 78: spark.connect.ExecutePlanRequest.RequestOption.extension:type_name -> google.protobuf.Any + 73, // 79: spark.connect.ExecutePlanResponse.SqlCommandResult.relation:type_name -> spark.connect.Relation + 53, // 80: spark.connect.ExecutePlanResponse.Metrics.metrics:type_name -> spark.connect.ExecutePlanResponse.Metrics.MetricObject + 82, // 81: spark.connect.ExecutePlanResponse.ObservedMetrics.values:type_name -> spark.connect.Expression.Literal + 55, // 82: spark.connect.ExecutePlanResponse.Metrics.MetricObject.execution_metrics:type_name -> spark.connect.ExecutePlanResponse.Metrics.MetricObject.ExecutionMetricsEntry + 54, // 83: spark.connect.ExecutePlanResponse.Metrics.MetricObject.ExecutionMetricsEntry.value:type_name -> spark.connect.ExecutePlanResponse.Metrics.MetricValue + 57, // 84: spark.connect.ConfigRequest.Operation.set:type_name -> spark.connect.ConfigRequest.Set + 58, // 85: spark.connect.ConfigRequest.Operation.get:type_name -> spark.connect.ConfigRequest.Get + 59, // 86: spark.connect.ConfigRequest.Operation.get_with_default:type_name -> spark.connect.ConfigRequest.GetWithDefault + 60, // 87: spark.connect.ConfigRequest.Operation.get_option:type_name -> spark.connect.ConfigRequest.GetOption + 61, // 88: spark.connect.ConfigRequest.Operation.get_all:type_name -> spark.connect.ConfigRequest.GetAll + 62, // 89: spark.connect.ConfigRequest.Operation.unset:type_name -> spark.connect.ConfigRequest.Unset + 63, // 90: spark.connect.ConfigRequest.Operation.is_modifiable:type_name -> spark.connect.ConfigRequest.IsModifiable + 8, // 91: spark.connect.ConfigRequest.Set.pairs:type_name -> spark.connect.KeyValue + 8, // 92: spark.connect.ConfigRequest.GetWithDefault.pairs:type_name -> spark.connect.KeyValue + 64, // 93: spark.connect.AddArtifactsRequest.SingleChunkArtifact.data:type_name -> spark.connect.AddArtifactsRequest.ArtifactChunk + 65, // 94: spark.connect.AddArtifactsRequest.Batch.artifacts:type_name -> spark.connect.AddArtifactsRequest.SingleChunkArtifact + 64, // 95: spark.connect.AddArtifactsRequest.BeginChunkedArtifact.initial_chunk:type_name -> spark.connect.AddArtifactsRequest.ArtifactChunk + 69, // 96: spark.connect.ArtifactStatusesResponse.StatusesEntry.value:type_name -> spark.connect.ArtifactStatusesResponse.ArtifactStatus + 6, // 97: spark.connect.SparkConnectService.ExecutePlan:input_type -> spark.connect.ExecutePlanRequest + 4, // 98: spark.connect.SparkConnectService.AnalyzePlan:input_type -> spark.connect.AnalyzePlanRequest + 9, // 99: spark.connect.SparkConnectService.Config:input_type -> spark.connect.ConfigRequest + 11, // 100: spark.connect.SparkConnectService.AddArtifacts:input_type -> spark.connect.AddArtifactsRequest + 13, // 101: spark.connect.SparkConnectService.ArtifactStatus:input_type -> spark.connect.ArtifactStatusesRequest + 15, // 102: spark.connect.SparkConnectService.Interrupt:input_type -> spark.connect.InterruptRequest + 18, // 103: spark.connect.SparkConnectService.ReattachExecute:input_type -> spark.connect.ReattachExecuteRequest + 19, // 104: spark.connect.SparkConnectService.ReleaseExecute:input_type -> spark.connect.ReleaseExecuteRequest + 7, // 105: spark.connect.SparkConnectService.ExecutePlan:output_type -> spark.connect.ExecutePlanResponse + 5, // 106: spark.connect.SparkConnectService.AnalyzePlan:output_type -> spark.connect.AnalyzePlanResponse + 10, // 107: spark.connect.SparkConnectService.Config:output_type -> spark.connect.ConfigResponse + 12, // 108: spark.connect.SparkConnectService.AddArtifacts:output_type -> spark.connect.AddArtifactsResponse + 14, // 109: spark.connect.SparkConnectService.ArtifactStatus:output_type -> spark.connect.ArtifactStatusesResponse + 16, // 110: spark.connect.SparkConnectService.Interrupt:output_type -> spark.connect.InterruptResponse + 7, // 111: spark.connect.SparkConnectService.ReattachExecute:output_type -> spark.connect.ExecutePlanResponse + 20, // 112: spark.connect.SparkConnectService.ReleaseExecute:output_type -> spark.connect.ReleaseExecuteResponse + 105, // [105:113] is the sub-list for method output_type + 97, // [97:105] is the sub-list for method input_type + 97, // [97:97] is the sub-list for extension type_name + 97, // [97:97] is the sub-list for extension extendee + 0, // [0:97] is the sub-list for field type_name } func init() { file_spark_connect_base_proto_init() } @@ -5339,7 +6072,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_Schema); i { + switch v := v.(*ReattachOptions); i { case 0: return &v.state case 1: @@ -5351,7 +6084,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_Explain); i { + switch v := v.(*ReattachExecuteRequest); i { case 0: return &v.state case 1: @@ -5363,7 +6096,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_TreeString); i { + switch v := v.(*ReleaseExecuteRequest); i { case 0: return &v.state case 1: @@ -5375,7 +6108,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_IsLocal); i { + switch v := v.(*ReleaseExecuteResponse); i { case 0: return &v.state case 1: @@ -5387,7 +6120,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_IsStreaming); i { + switch v := v.(*AnalyzePlanRequest_Schema); i { case 0: return &v.state case 1: @@ -5399,7 +6132,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_InputFiles); i { + switch v := v.(*AnalyzePlanRequest_Explain); i { case 0: return &v.state case 1: @@ -5411,7 +6144,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_SparkVersion); i { + switch v := v.(*AnalyzePlanRequest_TreeString); i { case 0: return &v.state case 1: @@ -5423,7 +6156,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_DDLParse); i { + switch v := v.(*AnalyzePlanRequest_IsLocal); i { case 0: return &v.state case 1: @@ -5435,7 +6168,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_SameSemantics); i { + switch v := v.(*AnalyzePlanRequest_IsStreaming); i { case 0: return &v.state case 1: @@ -5447,7 +6180,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_SemanticHash); i { + switch v := v.(*AnalyzePlanRequest_InputFiles); i { case 0: return &v.state case 1: @@ -5459,7 +6192,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_Persist); i { + switch v := v.(*AnalyzePlanRequest_SparkVersion); i { case 0: return &v.state case 1: @@ -5471,7 +6204,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_Unpersist); i { + switch v := v.(*AnalyzePlanRequest_DDLParse); i { case 0: return &v.state case 1: @@ -5483,7 +6216,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanRequest_GetStorageLevel); i { + switch v := v.(*AnalyzePlanRequest_SameSemantics); i { case 0: return &v.state case 1: @@ -5495,7 +6228,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_Schema); i { + switch v := v.(*AnalyzePlanRequest_SemanticHash); i { case 0: return &v.state case 1: @@ -5507,7 +6240,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_Explain); i { + switch v := v.(*AnalyzePlanRequest_Persist); i { case 0: return &v.state case 1: @@ -5519,7 +6252,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_TreeString); i { + switch v := v.(*AnalyzePlanRequest_Unpersist); i { case 0: return &v.state case 1: @@ -5531,7 +6264,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_IsLocal); i { + switch v := v.(*AnalyzePlanRequest_GetStorageLevel); i { case 0: return &v.state case 1: @@ -5543,7 +6276,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_IsStreaming); i { + switch v := v.(*AnalyzePlanResponse_Schema); i { case 0: return &v.state case 1: @@ -5555,7 +6288,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_InputFiles); i { + switch v := v.(*AnalyzePlanResponse_Explain); i { case 0: return &v.state case 1: @@ -5567,7 +6300,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_SparkVersion); i { + switch v := v.(*AnalyzePlanResponse_TreeString); i { case 0: return &v.state case 1: @@ -5579,7 +6312,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_DDLParse); i { + switch v := v.(*AnalyzePlanResponse_IsLocal); i { case 0: return &v.state case 1: @@ -5591,7 +6324,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_SameSemantics); i { + switch v := v.(*AnalyzePlanResponse_IsStreaming); i { case 0: return &v.state case 1: @@ -5603,7 +6336,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_SemanticHash); i { + switch v := v.(*AnalyzePlanResponse_InputFiles); i { case 0: return &v.state case 1: @@ -5615,7 +6348,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_Persist); i { + switch v := v.(*AnalyzePlanResponse_SparkVersion); i { case 0: return &v.state case 1: @@ -5627,7 +6360,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_Unpersist); i { + switch v := v.(*AnalyzePlanResponse_DDLParse); i { case 0: return &v.state case 1: @@ -5639,7 +6372,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AnalyzePlanResponse_GetStorageLevel); i { + switch v := v.(*AnalyzePlanResponse_SameSemantics); i { case 0: return &v.state case 1: @@ -5651,7 +6384,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutePlanRequest_RequestOption); i { + switch v := v.(*AnalyzePlanResponse_SemanticHash); i { case 0: return &v.state case 1: @@ -5663,7 +6396,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutePlanResponse_SqlCommandResult); i { + switch v := v.(*AnalyzePlanResponse_Persist); i { case 0: return &v.state case 1: @@ -5675,7 +6408,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutePlanResponse_ArrowBatch); i { + switch v := v.(*AnalyzePlanResponse_Unpersist); i { case 0: return &v.state case 1: @@ -5687,7 +6420,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutePlanResponse_Metrics); i { + switch v := v.(*AnalyzePlanResponse_GetStorageLevel); i { case 0: return &v.state case 1: @@ -5699,7 +6432,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutePlanResponse_ObservedMetrics); i { + switch v := v.(*ExecutePlanRequest_RequestOption); i { case 0: return &v.state case 1: @@ -5711,7 +6444,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutePlanResponse_Metrics_MetricObject); i { + switch v := v.(*ExecutePlanResponse_SqlCommandResult); i { case 0: return &v.state case 1: @@ -5723,7 +6456,19 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExecutePlanResponse_Metrics_MetricValue); i { + switch v := v.(*ExecutePlanResponse_ArrowBatch); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spark_connect_base_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExecutePlanResponse_Metrics); i { case 0: return &v.state case 1: @@ -5735,7 +6480,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConfigRequest_Operation); i { + switch v := v.(*ExecutePlanResponse_ObservedMetrics); i { case 0: return &v.state case 1: @@ -5747,7 +6492,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConfigRequest_Set); i { + switch v := v.(*ExecutePlanResponse_ResultComplete); i { case 0: return &v.state case 1: @@ -5759,7 +6504,7 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConfigRequest_Get); i { + switch v := v.(*ExecutePlanResponse_Metrics_MetricObject); i { case 0: return &v.state case 1: @@ -5771,6 +6516,54 @@ func file_spark_connect_base_proto_init() { } } file_spark_connect_base_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExecutePlanResponse_Metrics_MetricValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spark_connect_base_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConfigRequest_Operation); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spark_connect_base_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConfigRequest_Set); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spark_connect_base_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConfigRequest_Get); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spark_connect_base_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigRequest_GetWithDefault); i { case 0: return &v.state @@ -5782,7 +6575,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigRequest_GetOption); i { case 0: return &v.state @@ -5794,7 +6587,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigRequest_GetAll); i { case 0: return &v.state @@ -5806,7 +6599,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigRequest_Unset); i { case 0: return &v.state @@ -5818,7 +6611,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigRequest_IsModifiable); i { case 0: return &v.state @@ -5830,7 +6623,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddArtifactsRequest_ArtifactChunk); i { case 0: return &v.state @@ -5842,7 +6635,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddArtifactsRequest_SingleChunkArtifact); i { case 0: return &v.state @@ -5854,7 +6647,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddArtifactsRequest_Batch); i { case 0: return &v.state @@ -5866,7 +6659,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddArtifactsRequest_BeginChunkedArtifact); i { case 0: return &v.state @@ -5878,7 +6671,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddArtifactsResponse_ArtifactSummary); i { case 0: return &v.state @@ -5890,7 +6683,7 @@ func file_spark_connect_base_proto_init() { return nil } } - file_spark_connect_base_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_base_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ArtifactStatusesResponse_ArtifactStatus); i { case 0: return &v.state @@ -5902,6 +6695,30 @@ func file_spark_connect_base_proto_init() { return nil } } + file_spark_connect_base_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReleaseExecuteRequest_ReleaseAll); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spark_connect_base_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ReleaseExecuteRequest_ReleaseUntil); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_spark_connect_base_proto_msgTypes[0].OneofWrappers = []interface{}{ (*Plan_Root)(nil), @@ -5945,6 +6762,7 @@ func file_spark_connect_base_proto_init() { (*ExecutePlanResponse_StreamingQueryCommandResult)(nil), (*ExecutePlanResponse_GetResourcesCommandResult)(nil), (*ExecutePlanResponse_StreamingQueryManagerCommandResult)(nil), + (*ExecutePlanResponse_ResultComplete_)(nil), (*ExecutePlanResponse_Extension)(nil), } file_spark_connect_base_proto_msgTypes[6].OneofWrappers = []interface{}{} @@ -5955,14 +6773,24 @@ func file_spark_connect_base_proto_init() { (*AddArtifactsRequest_Chunk)(nil), } file_spark_connect_base_proto_msgTypes[11].OneofWrappers = []interface{}{} - file_spark_connect_base_proto_msgTypes[13].OneofWrappers = []interface{}{} - file_spark_connect_base_proto_msgTypes[17].OneofWrappers = []interface{}{} - file_spark_connect_base_proto_msgTypes[25].OneofWrappers = []interface{}{} - file_spark_connect_base_proto_msgTypes[26].OneofWrappers = []interface{}{} - file_spark_connect_base_proto_msgTypes[41].OneofWrappers = []interface{}{ + file_spark_connect_base_proto_msgTypes[13].OneofWrappers = []interface{}{ + (*InterruptRequest_OperationTag)(nil), + (*InterruptRequest_OperationId)(nil), + } + file_spark_connect_base_proto_msgTypes[16].OneofWrappers = []interface{}{} + file_spark_connect_base_proto_msgTypes[17].OneofWrappers = []interface{}{ + (*ReleaseExecuteRequest_ReleaseAll_)(nil), + (*ReleaseExecuteRequest_ReleaseUntil_)(nil), + } + file_spark_connect_base_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_spark_connect_base_proto_msgTypes[21].OneofWrappers = []interface{}{} + file_spark_connect_base_proto_msgTypes[29].OneofWrappers = []interface{}{} + file_spark_connect_base_proto_msgTypes[30].OneofWrappers = []interface{}{} + file_spark_connect_base_proto_msgTypes[45].OneofWrappers = []interface{}{ + (*ExecutePlanRequest_RequestOption_ReattachOptions)(nil), (*ExecutePlanRequest_RequestOption_Extension)(nil), } - file_spark_connect_base_proto_msgTypes[49].OneofWrappers = []interface{}{ + file_spark_connect_base_proto_msgTypes[54].OneofWrappers = []interface{}{ (*ConfigRequest_Operation_Set)(nil), (*ConfigRequest_Operation_Get)(nil), (*ConfigRequest_Operation_GetWithDefault)(nil), @@ -5971,14 +6799,14 @@ func file_spark_connect_base_proto_init() { (*ConfigRequest_Operation_Unset)(nil), (*ConfigRequest_Operation_IsModifiable)(nil), } - file_spark_connect_base_proto_msgTypes[54].OneofWrappers = []interface{}{} + file_spark_connect_base_proto_msgTypes[59].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_spark_connect_base_proto_rawDesc, NumEnums: 2, - NumMessages: 64, + NumMessages: 71, NumExtensions: 0, NumServices: 1, }, diff --git a/internal/generated/base_grpc.pb.go b/internal/generated/base_grpc.pb.go index 28abf35..a46e106 100644 --- a/internal/generated/base_grpc.pb.go +++ b/internal/generated/base_grpc.pb.go @@ -35,12 +35,14 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - SparkConnectService_ExecutePlan_FullMethodName = "/spark.connect.SparkConnectService/ExecutePlan" - SparkConnectService_AnalyzePlan_FullMethodName = "/spark.connect.SparkConnectService/AnalyzePlan" - SparkConnectService_Config_FullMethodName = "/spark.connect.SparkConnectService/Config" - SparkConnectService_AddArtifacts_FullMethodName = "/spark.connect.SparkConnectService/AddArtifacts" - SparkConnectService_ArtifactStatus_FullMethodName = "/spark.connect.SparkConnectService/ArtifactStatus" - SparkConnectService_Interrupt_FullMethodName = "/spark.connect.SparkConnectService/Interrupt" + SparkConnectService_ExecutePlan_FullMethodName = "/spark.connect.SparkConnectService/ExecutePlan" + SparkConnectService_AnalyzePlan_FullMethodName = "/spark.connect.SparkConnectService/AnalyzePlan" + SparkConnectService_Config_FullMethodName = "/spark.connect.SparkConnectService/Config" + SparkConnectService_AddArtifacts_FullMethodName = "/spark.connect.SparkConnectService/AddArtifacts" + SparkConnectService_ArtifactStatus_FullMethodName = "/spark.connect.SparkConnectService/ArtifactStatus" + SparkConnectService_Interrupt_FullMethodName = "/spark.connect.SparkConnectService/Interrupt" + SparkConnectService_ReattachExecute_FullMethodName = "/spark.connect.SparkConnectService/ReattachExecute" + SparkConnectService_ReleaseExecute_FullMethodName = "/spark.connect.SparkConnectService/ReleaseExecute" ) // SparkConnectServiceClient is the client API for SparkConnectService service. @@ -62,6 +64,16 @@ type SparkConnectServiceClient interface { ArtifactStatus(ctx context.Context, in *ArtifactStatusesRequest, opts ...grpc.CallOption) (*ArtifactStatusesResponse, error) // Interrupts running executions Interrupt(ctx context.Context, in *InterruptRequest, opts ...grpc.CallOption) (*InterruptResponse, error) + // Reattach to an existing reattachable execution. + // The ExecutePlan must have been started with ReattachOptions.reattachable=true. + // If the ExecutePlanResponse stream ends without a ResultComplete message, there is more to + // continue. If there is a ResultComplete, the client should use ReleaseExecute with + ReattachExecute(ctx context.Context, in *ReattachExecuteRequest, opts ...grpc.CallOption) (SparkConnectService_ReattachExecuteClient, error) + // Release an reattachable execution, or parts thereof. + // The ExecutePlan must have been started with ReattachOptions.reattachable=true. + // Non reattachable executions are released automatically and immediately after the ExecutePlan + // RPC and ReleaseExecute may not be used. + ReleaseExecute(ctx context.Context, in *ReleaseExecuteRequest, opts ...grpc.CallOption) (*ReleaseExecuteResponse, error) } type sparkConnectServiceClient struct { @@ -174,6 +186,47 @@ func (c *sparkConnectServiceClient) Interrupt(ctx context.Context, in *Interrupt return out, nil } +func (c *sparkConnectServiceClient) ReattachExecute(ctx context.Context, in *ReattachExecuteRequest, opts ...grpc.CallOption) (SparkConnectService_ReattachExecuteClient, error) { + stream, err := c.cc.NewStream(ctx, &SparkConnectService_ServiceDesc.Streams[2], SparkConnectService_ReattachExecute_FullMethodName, opts...) + if err != nil { + return nil, err + } + x := &sparkConnectServiceReattachExecuteClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type SparkConnectService_ReattachExecuteClient interface { + Recv() (*ExecutePlanResponse, error) + grpc.ClientStream +} + +type sparkConnectServiceReattachExecuteClient struct { + grpc.ClientStream +} + +func (x *sparkConnectServiceReattachExecuteClient) Recv() (*ExecutePlanResponse, error) { + m := new(ExecutePlanResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *sparkConnectServiceClient) ReleaseExecute(ctx context.Context, in *ReleaseExecuteRequest, opts ...grpc.CallOption) (*ReleaseExecuteResponse, error) { + out := new(ReleaseExecuteResponse) + err := c.cc.Invoke(ctx, SparkConnectService_ReleaseExecute_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // SparkConnectServiceServer is the server API for SparkConnectService service. // All implementations must embed UnimplementedSparkConnectServiceServer // for forward compatibility @@ -193,6 +246,16 @@ type SparkConnectServiceServer interface { ArtifactStatus(context.Context, *ArtifactStatusesRequest) (*ArtifactStatusesResponse, error) // Interrupts running executions Interrupt(context.Context, *InterruptRequest) (*InterruptResponse, error) + // Reattach to an existing reattachable execution. + // The ExecutePlan must have been started with ReattachOptions.reattachable=true. + // If the ExecutePlanResponse stream ends without a ResultComplete message, there is more to + // continue. If there is a ResultComplete, the client should use ReleaseExecute with + ReattachExecute(*ReattachExecuteRequest, SparkConnectService_ReattachExecuteServer) error + // Release an reattachable execution, or parts thereof. + // The ExecutePlan must have been started with ReattachOptions.reattachable=true. + // Non reattachable executions are released automatically and immediately after the ExecutePlan + // RPC and ReleaseExecute may not be used. + ReleaseExecute(context.Context, *ReleaseExecuteRequest) (*ReleaseExecuteResponse, error) mustEmbedUnimplementedSparkConnectServiceServer() } @@ -218,6 +281,12 @@ func (UnimplementedSparkConnectServiceServer) ArtifactStatus(context.Context, *A func (UnimplementedSparkConnectServiceServer) Interrupt(context.Context, *InterruptRequest) (*InterruptResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Interrupt not implemented") } +func (UnimplementedSparkConnectServiceServer) ReattachExecute(*ReattachExecuteRequest, SparkConnectService_ReattachExecuteServer) error { + return status.Errorf(codes.Unimplemented, "method ReattachExecute not implemented") +} +func (UnimplementedSparkConnectServiceServer) ReleaseExecute(context.Context, *ReleaseExecuteRequest) (*ReleaseExecuteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReleaseExecute not implemented") +} func (UnimplementedSparkConnectServiceServer) mustEmbedUnimplementedSparkConnectServiceServer() {} // UnsafeSparkConnectServiceServer may be embedded to opt out of forward compatibility for this service. @@ -350,6 +419,45 @@ func _SparkConnectService_Interrupt_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } +func _SparkConnectService_ReattachExecute_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(ReattachExecuteRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(SparkConnectServiceServer).ReattachExecute(m, &sparkConnectServiceReattachExecuteServer{stream}) +} + +type SparkConnectService_ReattachExecuteServer interface { + Send(*ExecutePlanResponse) error + grpc.ServerStream +} + +type sparkConnectServiceReattachExecuteServer struct { + grpc.ServerStream +} + +func (x *sparkConnectServiceReattachExecuteServer) Send(m *ExecutePlanResponse) error { + return x.ServerStream.SendMsg(m) +} + +func _SparkConnectService_ReleaseExecute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReleaseExecuteRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(SparkConnectServiceServer).ReleaseExecute(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: SparkConnectService_ReleaseExecute_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(SparkConnectServiceServer).ReleaseExecute(ctx, req.(*ReleaseExecuteRequest)) + } + return interceptor(ctx, in, info, handler) +} + // SparkConnectService_ServiceDesc is the grpc.ServiceDesc for SparkConnectService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -373,6 +481,10 @@ var SparkConnectService_ServiceDesc = grpc.ServiceDesc{ MethodName: "Interrupt", Handler: _SparkConnectService_Interrupt_Handler, }, + { + MethodName: "ReleaseExecute", + Handler: _SparkConnectService_ReleaseExecute_Handler, + }, }, Streams: []grpc.StreamDesc{ { @@ -385,6 +497,11 @@ var SparkConnectService_ServiceDesc = grpc.ServiceDesc{ Handler: _SparkConnectService_AddArtifacts_Handler, ClientStreams: true, }, + { + StreamName: "ReattachExecute", + Handler: _SparkConnectService_ReattachExecute_Handler, + ServerStreams: true, + }, }, Metadata: "spark/connect/base.proto", } diff --git a/internal/generated/catalog.pb.go b/internal/generated/catalog.pb.go index 3f3ea4c..60cf2d0 100644 --- a/internal/generated/catalog.pb.go +++ b/internal/generated/catalog.pb.go @@ -547,6 +547,9 @@ type ListDatabases struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // (Optional) The pattern that the database name needs to match + Pattern *string `protobuf:"bytes,1,opt,name=pattern,proto3,oneof" json:"pattern,omitempty"` } func (x *ListDatabases) Reset() { @@ -581,6 +584,13 @@ func (*ListDatabases) Descriptor() ([]byte, []int) { return file_spark_connect_catalog_proto_rawDescGZIP(), []int{3} } +func (x *ListDatabases) GetPattern() string { + if x != nil && x.Pattern != nil { + return *x.Pattern + } + return "" +} + // See `spark.catalog.listTables` type ListTables struct { state protoimpl.MessageState @@ -589,6 +599,8 @@ type ListTables struct { // (Optional) DbName *string `protobuf:"bytes,1,opt,name=db_name,json=dbName,proto3,oneof" json:"db_name,omitempty"` + // (Optional) The pattern that the table name needs to match + Pattern *string `protobuf:"bytes,2,opt,name=pattern,proto3,oneof" json:"pattern,omitempty"` } func (x *ListTables) Reset() { @@ -630,6 +642,13 @@ func (x *ListTables) GetDbName() string { return "" } +func (x *ListTables) GetPattern() string { + if x != nil && x.Pattern != nil { + return *x.Pattern + } + return "" +} + // See `spark.catalog.listFunctions` type ListFunctions struct { state protoimpl.MessageState @@ -638,6 +657,8 @@ type ListFunctions struct { // (Optional) DbName *string `protobuf:"bytes,1,opt,name=db_name,json=dbName,proto3,oneof" json:"db_name,omitempty"` + // (Optional) The pattern that the function name needs to match + Pattern *string `protobuf:"bytes,2,opt,name=pattern,proto3,oneof" json:"pattern,omitempty"` } func (x *ListFunctions) Reset() { @@ -679,6 +700,13 @@ func (x *ListFunctions) GetDbName() string { return "" } +func (x *ListFunctions) GetPattern() string { + if x != nil && x.Pattern != nil { + return *x.Pattern + } + return "" +} + // See `spark.catalog.listColumns` type ListColumns struct { state protoimpl.MessageState @@ -1954,134 +1982,142 @@ var file_spark_connect_catalog_proto_rawDesc = []byte{ 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x22, 0x2d, 0x0a, 0x12, 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x0f, - 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x22, - 0x36, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1c, 0x0a, - 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3a, + 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x73, 0x12, + 0x1d, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x61, 0x0a, 0x0a, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x62, 0x4e, - 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x56, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, - 0x0a, 0x08, 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0b, 0x47, 0x65, - 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x62, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x0b, 0x47, 0x65, 0x74, 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, 0x1c, 0x0a, 0x07, 0x64, - 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, - 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x64, 0x62, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x29, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, - 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x56, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, + 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, + 0x72, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22, 0x64, 0x0a, + 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, + 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1d, 0x0a, 0x07, + 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, + 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x74, + 0x65, 0x72, 0x6e, 0x22, 0x56, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x0a, 0x0a, 0x08, 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x26, 0x0a, 0x0b, 0x47, + 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x62, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x53, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, - 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x0e, 0x46, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 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, + 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5c, 0x0a, 0x0b, 0x47, 0x65, 0x74, 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, 0x1c, 0x0a, 0x07, + 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x64, + 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x29, 0x0a, 0x0e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, + 0x73, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x56, 0x0a, 0x0b, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, - 0x08, 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc6, 0x02, 0x0a, 0x13, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x18, 0x04, 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, - 0x02, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 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, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x22, 0xed, 0x02, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, + 0x08, 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5f, 0x0a, 0x0e, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 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, 0x1c, 0x0a, 0x07, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, 0x62, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0a, + 0x0a, 0x08, 0x5f, 0x64, 0x62, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xc6, 0x02, 0x0a, 0x13, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0b, - 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x34, - 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 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, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x09, 0x0a, 0x07, - 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x22, 0x2b, 0x0a, 0x0c, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x56, 0x69, - 0x65, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x22, - 0x31, 0x0a, 0x12, 0x44, 0x72, 0x6f, 0x70, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x65, 0x6d, - 0x70, 0x56, 0x69, 0x65, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x61, - 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x29, 0x0a, 0x08, 0x49, 0x73, 0x43, 0x61, 0x63, 0x68, - 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x45, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x2d, 0x0a, 0x0c, 0x55, 0x6e, 0x63, 0x61, - 0x63, 0x68, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, + 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x18, 0x04, 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, 0x02, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x88, 0x01, 0x01, 0x12, 0x49, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 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, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x22, 0xed, 0x02, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, + 0x34, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 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, 0x06, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 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, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x22, 0x2b, 0x0a, 0x0c, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x65, 0x6d, 0x70, 0x56, + 0x69, 0x65, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x31, 0x0a, 0x12, 0x44, 0x72, 0x6f, 0x70, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x54, 0x65, + 0x6d, 0x70, 0x56, 0x69, 0x65, 0x77, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x76, 0x69, 0x65, 0x77, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x32, 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x50, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x6c, 0x65, 0x61, 0x72, - 0x43, 0x61, 0x63, 0x68, 0x65, 0x22, 0x2d, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x23, 0x0a, 0x0d, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x42, - 0x79, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x22, 0x36, 0x0a, 0x11, 0x53, - 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, - 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, - 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x88, - 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 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, + 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x29, 0x0a, 0x08, 0x49, 0x73, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0x84, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x45, 0x0a, 0x0d, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x2d, 0x0a, 0x0c, 0x55, 0x6e, 0x63, + 0x61, 0x63, 0x68, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x6c, 0x65, 0x61, + 0x72, 0x43, 0x61, 0x63, 0x68, 0x65, 0x22, 0x2d, 0x0a, 0x0c, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x23, 0x0a, 0x0d, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x42, 0x79, 0x50, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x10, 0x0a, 0x0e, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x22, 0x36, 0x0a, 0x11, + 0x53, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, + 0x67, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x39, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x1d, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, + 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 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 ( @@ -2530,6 +2566,7 @@ func file_spark_connect_catalog_proto_init() { (*Catalog_SetCurrentCatalog)(nil), (*Catalog_ListCatalogs)(nil), } + file_spark_connect_catalog_proto_msgTypes[3].OneofWrappers = []interface{}{} file_spark_connect_catalog_proto_msgTypes[4].OneofWrappers = []interface{}{} file_spark_connect_catalog_proto_msgTypes[5].OneofWrappers = []interface{}{} file_spark_connect_catalog_proto_msgTypes[6].OneofWrappers = []interface{}{} diff --git a/internal/generated/commands.pb.go b/internal/generated/commands.pb.go index 4f162b3..ad35743 100644 --- a/internal/generated/commands.pb.go +++ b/internal/generated/commands.pb.go @@ -220,6 +220,7 @@ type Command struct { // *Command_StreamingQueryCommand // *Command_GetResourcesCommand // *Command_StreamingQueryManagerCommand + // *Command_RegisterTableFunction // *Command_Extension CommandType isCommand_CommandType `protobuf_oneof:"command_type"` } @@ -326,6 +327,13 @@ func (x *Command) GetStreamingQueryManagerCommand() *StreamingQueryManagerComman return nil } +func (x *Command) GetRegisterTableFunction() *CommonInlineUserDefinedTableFunction { + if x, ok := x.GetCommandType().(*Command_RegisterTableFunction); ok { + return x.RegisterTableFunction + } + return nil +} + func (x *Command) GetExtension() *anypb.Any { if x, ok := x.GetCommandType().(*Command_Extension); ok { return x.Extension @@ -373,6 +381,10 @@ type Command_StreamingQueryManagerCommand struct { StreamingQueryManagerCommand *StreamingQueryManagerCommand `protobuf:"bytes,9,opt,name=streaming_query_manager_command,json=streamingQueryManagerCommand,proto3,oneof"` } +type Command_RegisterTableFunction struct { + RegisterTableFunction *CommonInlineUserDefinedTableFunction `protobuf:"bytes,10,opt,name=register_table_function,json=registerTableFunction,proto3,oneof"` +} + type Command_Extension struct { // This field is used to mark extensions to the protocol. When plugins generate arbitrary // Commands they can add them here. During the planning the correct resolution is done. @@ -397,6 +409,8 @@ func (*Command_GetResourcesCommand) isCommand_CommandType() {} func (*Command_StreamingQueryManagerCommand) isCommand_CommandType() {} +func (*Command_RegisterTableFunction) isCommand_CommandType() {} + func (*Command_Extension) isCommand_CommandType() {} // A SQL Command is used to trigger the eager evaluation of SQL commands in Spark. @@ -414,6 +428,8 @@ type SqlCommand struct { Sql string `protobuf:"bytes,1,opt,name=sql,proto3" json:"sql,omitempty"` // (Optional) A map of parameter names to literal expressions. 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. + PosArgs []*Expression_Literal `protobuf:"bytes,3,rep,name=pos_args,json=posArgs,proto3" json:"pos_args,omitempty"` } func (x *SqlCommand) Reset() { @@ -462,6 +478,13 @@ func (x *SqlCommand) GetArgs() map[string]*Expression_Literal { return nil } +func (x *SqlCommand) GetPosArgs() []*Expression_Literal { + if x != nil { + return x.PosArgs + } + return nil +} + // A command that can create DataFrame global temp view or local temp view. type CreateDataFrameViewCommand struct { state protoimpl.MessageState @@ -835,7 +858,8 @@ type WriteStreamOperationStart struct { // *WriteStreamOperationStart_Path // *WriteStreamOperationStart_TableName SinkDestination isWriteStreamOperationStart_SinkDestination `protobuf_oneof:"sink_destination"` - ForeachWriter *StreamingForeachWriter `protobuf:"bytes,13,opt,name=foreach_writer,json=foreachWriter,proto3" json:"foreach_writer,omitempty"` + ForeachWriter *StreamingForeachFunction `protobuf:"bytes,13,opt,name=foreach_writer,json=foreachWriter,proto3" json:"foreach_writer,omitempty"` + ForeachBatch *StreamingForeachFunction `protobuf:"bytes,14,opt,name=foreach_batch,json=foreachBatch,proto3" json:"foreach_batch,omitempty"` } func (x *WriteStreamOperationStart) Reset() { @@ -968,13 +992,20 @@ func (x *WriteStreamOperationStart) GetTableName() string { return "" } -func (x *WriteStreamOperationStart) GetForeachWriter() *StreamingForeachWriter { +func (x *WriteStreamOperationStart) GetForeachWriter() *StreamingForeachFunction { if x != nil { return x.ForeachWriter } return nil } +func (x *WriteStreamOperationStart) GetForeachBatch() *StreamingForeachFunction { + if x != nil { + return x.ForeachBatch + } + return nil +} + type isWriteStreamOperationStart_Trigger interface { isWriteStreamOperationStart_Trigger() } @@ -1020,19 +1051,20 @@ func (*WriteStreamOperationStart_Path) isWriteStreamOperationStart_SinkDestinati func (*WriteStreamOperationStart_TableName) isWriteStreamOperationStart_SinkDestination() {} -type StreamingForeachWriter struct { +type StreamingForeachFunction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Types that are assignable to Writer: + // Types that are assignable to Function: // - // *StreamingForeachWriter_PythonWriter - Writer isStreamingForeachWriter_Writer `protobuf_oneof:"writer"` + // *StreamingForeachFunction_PythonFunction + // *StreamingForeachFunction_ScalaFunction + Function isStreamingForeachFunction_Function `protobuf_oneof:"function"` } -func (x *StreamingForeachWriter) Reset() { - *x = StreamingForeachWriter{} +func (x *StreamingForeachFunction) Reset() { + *x = StreamingForeachFunction{} if protoimpl.UnsafeEnabled { mi := &file_spark_connect_commands_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1040,13 +1072,13 @@ func (x *StreamingForeachWriter) Reset() { } } -func (x *StreamingForeachWriter) String() string { +func (x *StreamingForeachFunction) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StreamingForeachWriter) ProtoMessage() {} +func (*StreamingForeachFunction) ProtoMessage() {} -func (x *StreamingForeachWriter) ProtoReflect() protoreflect.Message { +func (x *StreamingForeachFunction) ProtoReflect() protoreflect.Message { mi := &file_spark_connect_commands_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1058,34 +1090,47 @@ func (x *StreamingForeachWriter) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StreamingForeachWriter.ProtoReflect.Descriptor instead. -func (*StreamingForeachWriter) Descriptor() ([]byte, []int) { +// Deprecated: Use StreamingForeachFunction.ProtoReflect.Descriptor instead. +func (*StreamingForeachFunction) Descriptor() ([]byte, []int) { return file_spark_connect_commands_proto_rawDescGZIP(), []int{6} } -func (m *StreamingForeachWriter) GetWriter() isStreamingForeachWriter_Writer { +func (m *StreamingForeachFunction) GetFunction() isStreamingForeachFunction_Function { if m != nil { - return m.Writer + return m.Function + } + return nil +} + +func (x *StreamingForeachFunction) GetPythonFunction() *PythonUDF { + if x, ok := x.GetFunction().(*StreamingForeachFunction_PythonFunction); ok { + return x.PythonFunction } return nil } -func (x *StreamingForeachWriter) GetPythonWriter() *PythonUDF { - if x, ok := x.GetWriter().(*StreamingForeachWriter_PythonWriter); ok { - return x.PythonWriter +func (x *StreamingForeachFunction) GetScalaFunction() *ScalarScalaUDF { + if x, ok := x.GetFunction().(*StreamingForeachFunction_ScalaFunction); ok { + return x.ScalaFunction } return nil } -type isStreamingForeachWriter_Writer interface { - isStreamingForeachWriter_Writer() +type isStreamingForeachFunction_Function interface { + isStreamingForeachFunction_Function() +} + +type StreamingForeachFunction_PythonFunction struct { + PythonFunction *PythonUDF `protobuf:"bytes,1,opt,name=python_function,json=pythonFunction,proto3,oneof"` } -type StreamingForeachWriter_PythonWriter struct { - PythonWriter *PythonUDF `protobuf:"bytes,1,opt,name=python_writer,json=pythonWriter,proto3,oneof"` +type StreamingForeachFunction_ScalaFunction struct { + ScalaFunction *ScalarScalaUDF `protobuf:"bytes,2,opt,name=scala_function,json=scalaFunction,proto3,oneof"` } -func (*StreamingForeachWriter_PythonWriter) isStreamingForeachWriter_Writer() {} +func (*StreamingForeachFunction_PythonFunction) isStreamingForeachFunction_Function() {} + +func (*StreamingForeachFunction_ScalaFunction) isStreamingForeachFunction_Function() {} type WriteStreamOperationStartResult struct { state protoimpl.MessageState @@ -1540,6 +1585,9 @@ type StreamingQueryManagerCommand struct { // *StreamingQueryManagerCommand_GetQuery // *StreamingQueryManagerCommand_AwaitAnyTermination // *StreamingQueryManagerCommand_ResetTerminated + // *StreamingQueryManagerCommand_AddListener + // *StreamingQueryManagerCommand_RemoveListener + // *StreamingQueryManagerCommand_ListListeners Command isStreamingQueryManagerCommand_Command `protobuf_oneof:"command"` } @@ -1610,6 +1658,27 @@ func (x *StreamingQueryManagerCommand) GetResetTerminated() bool { return false } +func (x *StreamingQueryManagerCommand) GetAddListener() *StreamingQueryManagerCommand_StreamingQueryListenerCommand { + if x, ok := x.GetCommand().(*StreamingQueryManagerCommand_AddListener); ok { + return x.AddListener + } + return nil +} + +func (x *StreamingQueryManagerCommand) GetRemoveListener() *StreamingQueryManagerCommand_StreamingQueryListenerCommand { + if x, ok := x.GetCommand().(*StreamingQueryManagerCommand_RemoveListener); ok { + return x.RemoveListener + } + return nil +} + +func (x *StreamingQueryManagerCommand) GetListListeners() bool { + if x, ok := x.GetCommand().(*StreamingQueryManagerCommand_ListListeners); ok { + return x.ListListeners + } + return false +} + type isStreamingQueryManagerCommand_Command interface { isStreamingQueryManagerCommand_Command() } @@ -1634,6 +1703,21 @@ type StreamingQueryManagerCommand_ResetTerminated struct { ResetTerminated bool `protobuf:"varint,4,opt,name=reset_terminated,json=resetTerminated,proto3,oneof"` } +type StreamingQueryManagerCommand_AddListener struct { + // addListener API. + AddListener *StreamingQueryManagerCommand_StreamingQueryListenerCommand `protobuf:"bytes,5,opt,name=add_listener,json=addListener,proto3,oneof"` +} + +type StreamingQueryManagerCommand_RemoveListener struct { + // removeListener API. + RemoveListener *StreamingQueryManagerCommand_StreamingQueryListenerCommand `protobuf:"bytes,6,opt,name=remove_listener,json=removeListener,proto3,oneof"` +} + +type StreamingQueryManagerCommand_ListListeners struct { + // listListeners() API, returns a list of streaming query listeners. + ListListeners bool `protobuf:"varint,7,opt,name=list_listeners,json=listListeners,proto3,oneof"` +} + func (*StreamingQueryManagerCommand_Active) isStreamingQueryManagerCommand_Command() {} func (*StreamingQueryManagerCommand_GetQuery) isStreamingQueryManagerCommand_Command() {} @@ -1642,6 +1726,12 @@ func (*StreamingQueryManagerCommand_AwaitAnyTermination) isStreamingQueryManager func (*StreamingQueryManagerCommand_ResetTerminated) isStreamingQueryManagerCommand_Command() {} +func (*StreamingQueryManagerCommand_AddListener) isStreamingQueryManagerCommand_Command() {} + +func (*StreamingQueryManagerCommand_RemoveListener) isStreamingQueryManagerCommand_Command() {} + +func (*StreamingQueryManagerCommand_ListListeners) isStreamingQueryManagerCommand_Command() {} + // Response for commands on the streaming query manager. type StreamingQueryManagerCommandResult struct { state protoimpl.MessageState @@ -1654,6 +1744,9 @@ type StreamingQueryManagerCommandResult struct { // *StreamingQueryManagerCommandResult_Query // *StreamingQueryManagerCommandResult_AwaitAnyTermination // *StreamingQueryManagerCommandResult_ResetTerminated + // *StreamingQueryManagerCommandResult_AddListener + // *StreamingQueryManagerCommandResult_RemoveListener + // *StreamingQueryManagerCommandResult_ListListeners ResultType isStreamingQueryManagerCommandResult_ResultType `protobuf_oneof:"result_type"` } @@ -1724,6 +1817,27 @@ func (x *StreamingQueryManagerCommandResult) GetResetTerminated() bool { return false } +func (x *StreamingQueryManagerCommandResult) GetAddListener() bool { + if x, ok := x.GetResultType().(*StreamingQueryManagerCommandResult_AddListener); ok { + return x.AddListener + } + return false +} + +func (x *StreamingQueryManagerCommandResult) GetRemoveListener() bool { + if x, ok := x.GetResultType().(*StreamingQueryManagerCommandResult_RemoveListener); ok { + return x.RemoveListener + } + return false +} + +func (x *StreamingQueryManagerCommandResult) GetListListeners() *StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult { + if x, ok := x.GetResultType().(*StreamingQueryManagerCommandResult_ListListeners); ok { + return x.ListListeners + } + return nil +} + type isStreamingQueryManagerCommandResult_ResultType interface { isStreamingQueryManagerCommandResult_ResultType() } @@ -1744,6 +1858,18 @@ type StreamingQueryManagerCommandResult_ResetTerminated struct { ResetTerminated bool `protobuf:"varint,4,opt,name=reset_terminated,json=resetTerminated,proto3,oneof"` } +type StreamingQueryManagerCommandResult_AddListener struct { + AddListener bool `protobuf:"varint,5,opt,name=add_listener,json=addListener,proto3,oneof"` +} + +type StreamingQueryManagerCommandResult_RemoveListener struct { + RemoveListener bool `protobuf:"varint,6,opt,name=remove_listener,json=removeListener,proto3,oneof"` +} + +type StreamingQueryManagerCommandResult_ListListeners struct { + ListListeners *StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult `protobuf:"bytes,7,opt,name=list_listeners,json=listListeners,proto3,oneof"` +} + func (*StreamingQueryManagerCommandResult_Active) isStreamingQueryManagerCommandResult_ResultType() {} func (*StreamingQueryManagerCommandResult_Query) isStreamingQueryManagerCommandResult_ResultType() {} @@ -1754,6 +1880,15 @@ func (*StreamingQueryManagerCommandResult_AwaitAnyTermination) isStreamingQueryM func (*StreamingQueryManagerCommandResult_ResetTerminated) isStreamingQueryManagerCommandResult_ResultType() { } +func (*StreamingQueryManagerCommandResult_AddListener) isStreamingQueryManagerCommandResult_ResultType() { +} + +func (*StreamingQueryManagerCommandResult_RemoveListener) isStreamingQueryManagerCommandResult_ResultType() { +} + +func (*StreamingQueryManagerCommandResult_ListListeners) isStreamingQueryManagerCommandResult_ResultType() { +} + // Command to get the output of 'SparkContext.resources' type GetResourcesCommand struct { state protoimpl.MessageState @@ -2380,6 +2515,69 @@ func (x *StreamingQueryManagerCommand_AwaitAnyTerminationCommand) GetTimeoutMs() return 0 } +type StreamingQueryManagerCommand_StreamingQueryListenerCommand struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ListenerPayload []byte `protobuf:"bytes,1,opt,name=listener_payload,json=listenerPayload,proto3" json:"listener_payload,omitempty"` + PythonListenerPayload *PythonUDF `protobuf:"bytes,2,opt,name=python_listener_payload,json=pythonListenerPayload,proto3,oneof" json:"python_listener_payload,omitempty"` + Id string `protobuf:"bytes,3,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *StreamingQueryManagerCommand_StreamingQueryListenerCommand) Reset() { + *x = StreamingQueryManagerCommand_StreamingQueryListenerCommand{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_commands_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamingQueryManagerCommand_StreamingQueryListenerCommand) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamingQueryManagerCommand_StreamingQueryListenerCommand) ProtoMessage() {} + +func (x *StreamingQueryManagerCommand_StreamingQueryListenerCommand) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_commands_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 StreamingQueryManagerCommand_StreamingQueryListenerCommand.ProtoReflect.Descriptor instead. +func (*StreamingQueryManagerCommand_StreamingQueryListenerCommand) Descriptor() ([]byte, []int) { + return file_spark_connect_commands_proto_rawDescGZIP(), []int{11, 1} +} + +func (x *StreamingQueryManagerCommand_StreamingQueryListenerCommand) GetListenerPayload() []byte { + if x != nil { + return x.ListenerPayload + } + return nil +} + +func (x *StreamingQueryManagerCommand_StreamingQueryListenerCommand) GetPythonListenerPayload() *PythonUDF { + if x != nil { + return x.PythonListenerPayload + } + return nil +} + +func (x *StreamingQueryManagerCommand_StreamingQueryListenerCommand) GetId() string { + if x != nil { + return x.Id + } + return "" +} + type StreamingQueryManagerCommandResult_ActiveResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2391,7 +2589,7 @@ type StreamingQueryManagerCommandResult_ActiveResult struct { func (x *StreamingQueryManagerCommandResult_ActiveResult) Reset() { *x = StreamingQueryManagerCommandResult_ActiveResult{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_commands_proto_msgTypes[30] + mi := &file_spark_connect_commands_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2404,7 +2602,7 @@ func (x *StreamingQueryManagerCommandResult_ActiveResult) String() string { func (*StreamingQueryManagerCommandResult_ActiveResult) ProtoMessage() {} func (x *StreamingQueryManagerCommandResult_ActiveResult) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_commands_proto_msgTypes[30] + mi := &file_spark_connect_commands_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2441,7 +2639,7 @@ type StreamingQueryManagerCommandResult_StreamingQueryInstance struct { func (x *StreamingQueryManagerCommandResult_StreamingQueryInstance) Reset() { *x = StreamingQueryManagerCommandResult_StreamingQueryInstance{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_commands_proto_msgTypes[31] + mi := &file_spark_connect_commands_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2454,7 +2652,7 @@ func (x *StreamingQueryManagerCommandResult_StreamingQueryInstance) String() str func (*StreamingQueryManagerCommandResult_StreamingQueryInstance) ProtoMessage() {} func (x *StreamingQueryManagerCommandResult_StreamingQueryInstance) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_commands_proto_msgTypes[31] + mi := &file_spark_connect_commands_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2495,7 +2693,7 @@ type StreamingQueryManagerCommandResult_AwaitAnyTerminationResult struct { func (x *StreamingQueryManagerCommandResult_AwaitAnyTerminationResult) Reset() { *x = StreamingQueryManagerCommandResult_AwaitAnyTerminationResult{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_commands_proto_msgTypes[32] + mi := &file_spark_connect_commands_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2508,7 +2706,7 @@ func (x *StreamingQueryManagerCommandResult_AwaitAnyTerminationResult) String() func (*StreamingQueryManagerCommandResult_AwaitAnyTerminationResult) ProtoMessage() {} func (x *StreamingQueryManagerCommandResult_AwaitAnyTerminationResult) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_commands_proto_msgTypes[32] + mi := &file_spark_connect_commands_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2531,6 +2729,101 @@ func (x *StreamingQueryManagerCommandResult_AwaitAnyTerminationResult) GetTermin return false } +type StreamingQueryManagerCommandResult_StreamingQueryListenerInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ListenerPayload []byte `protobuf:"bytes,1,opt,name=listener_payload,json=listenerPayload,proto3" json:"listener_payload,omitempty"` +} + +func (x *StreamingQueryManagerCommandResult_StreamingQueryListenerInstance) Reset() { + *x = StreamingQueryManagerCommandResult_StreamingQueryListenerInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_commands_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamingQueryManagerCommandResult_StreamingQueryListenerInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamingQueryManagerCommandResult_StreamingQueryListenerInstance) ProtoMessage() {} + +func (x *StreamingQueryManagerCommandResult_StreamingQueryListenerInstance) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_commands_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 StreamingQueryManagerCommandResult_StreamingQueryListenerInstance.ProtoReflect.Descriptor instead. +func (*StreamingQueryManagerCommandResult_StreamingQueryListenerInstance) Descriptor() ([]byte, []int) { + return file_spark_connect_commands_proto_rawDescGZIP(), []int{12, 3} +} + +func (x *StreamingQueryManagerCommandResult_StreamingQueryListenerInstance) GetListenerPayload() []byte { + if x != nil { + return x.ListenerPayload + } + return nil +} + +type StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // (Required) Reference IDs of listener instances. + ListenerIds []string `protobuf:"bytes,1,rep,name=listener_ids,json=listenerIds,proto3" json:"listener_ids,omitempty"` +} + +func (x *StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult) Reset() { + *x = StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_commands_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult) ProtoMessage() {} + +func (x *StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_commands_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 StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult.ProtoReflect.Descriptor instead. +func (*StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult) Descriptor() ([]byte, []int) { + return file_spark_connect_commands_proto_rawDescGZIP(), []int{12, 4} +} + +func (x *StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult) GetListenerIds() []string { + if x != nil { + return x.ListenerIds + } + return nil +} + var File_spark_connect_commands_proto protoreflect.FileDescriptor var file_spark_connect_commands_proto_rawDesc = []byte{ @@ -2544,7 +2837,7 @@ var file_spark_connect_commands_proto_rawDesc = []byte{ 0x65, 0x63, 0x74, 0x2f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 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, 0x22, 0x86, 0x07, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf5, 0x07, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x5d, 0x0a, 0x11, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 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, @@ -2596,410 +2889,483 @@ var file_spark_connect_commands_proto_rawDesc = []byte{ 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x1c, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x35, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0xe7, 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, 0x42, 0x0e, 0x0a, - 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xb3, 0x01, - 0x0a, 0x0a, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x73, 0x71, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x37, - 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, - 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x71, 0x6c, - 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x72, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x04, 0x61, 0x72, 0x67, 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, 0x22, 0x96, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, - 0x74, 0x61, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 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, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x67, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x47, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x22, 0x9b, 0x08, 0x0a, - 0x0e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x6d, 0x0a, 0x17, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x65, 0x72, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0a, 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, 0x15, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0xe7, 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, 0x42, 0x0e, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xf1, 0x01, 0x0a, + 0x0a, 0x53, 0x71, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, + 0x71, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x37, 0x0a, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x70, + 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x71, 0x6c, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x72, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x3c, 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, 0x52, 0x07, 0x70, 0x6f, 0x73, + 0x41, 0x72, 0x67, 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, + 0x22, 0x96, 0x01, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x46, + 0x72, 0x61, 0x6d, 0x65, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 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, 0x1b, - 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, - 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x3f, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x53, 0x61, 0x76, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x26, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x53, 0x61, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2a, - 0x0a, 0x11, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x72, 0x74, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, - 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x43, 0x0a, - 0x09, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 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, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x22, 0x9b, 0x08, 0x0a, 0x0e, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 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, 0x1b, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x3f, + 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x61, 0x76, + 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x48, 0x00, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x3a, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x61, 0x76, + 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, + 0x6f, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, + 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x62, 0x75, + 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x42, 0x75, 0x63, + 0x6b, 0x65, 0x74, 0x42, 0x79, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x79, 0x12, + 0x44, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x79, 0x52, 0x08, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x42, 0x79, 0x12, 0x44, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, + 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, 0x82, 0x02, 0x0a, 0x09, 0x53, 0x61, 0x76, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x58, + 0x0a, 0x0b, 0x73, 0x61, 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 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, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x61, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, 0x0a, 0x73, 0x61, + 0x76, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x7c, 0x0a, 0x0f, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x53, 0x61, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x21, 0x0a, 0x1d, 0x54, + 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, + 0x0a, 0x1f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x45, 0x54, + 0x48, 0x4f, 0x44, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x41, 0x53, 0x5f, 0x54, 0x41, 0x42, 0x4c, + 0x45, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x41, 0x56, + 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x49, 0x4e, 0x53, 0x45, 0x52, 0x54, 0x5f, + 0x49, 0x4e, 0x54, 0x4f, 0x10, 0x02, 0x1a, 0x5b, 0x0a, 0x08, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x42, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x11, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x08, 0x53, 0x61, 0x76, 0x65, 0x4d, 0x6f, 0x64, 0x65, + 0x12, 0x19, 0x0a, 0x15, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, + 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x45, 0x4e, 0x44, 0x10, + 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, + 0x56, 0x45, 0x52, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x41, + 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x46, + 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x41, 0x56, + 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, 0x10, 0x04, 0x42, + 0x0b, 0x0a, 0x09, 0x73, 0x61, 0x76, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x09, 0x0a, 0x07, + 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xad, 0x06, 0x0a, 0x10, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 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, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4c, 0x0a, 0x14, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 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, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x70, 0x61, + 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x2e, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x73, 0x70, + 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x2e, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x24, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, + 0x32, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x4a, 0x0a, 0x13, + 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 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, 0x12, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x82, 0x02, 0x0a, 0x09, 0x53, 0x61, 0x76, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x73, 0x61, 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x37, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x52, - 0x0a, 0x73, 0x61, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0x7c, 0x0a, 0x0f, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x53, 0x61, 0x76, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x21, - 0x0a, 0x1d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x45, 0x54, - 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, - 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x41, 0x53, 0x5f, 0x54, - 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, - 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x49, 0x4e, 0x53, 0x45, - 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x4f, 0x10, 0x02, 0x1a, 0x5b, 0x0a, 0x08, 0x42, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x42, 0x79, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x11, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x73, 0x22, 0x89, 0x01, 0x0a, 0x08, 0x53, 0x61, 0x76, 0x65, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, - 0x0a, 0x10, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x45, - 0x4e, 0x44, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, - 0x45, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1d, 0x0a, - 0x19, 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, - 0x5f, 0x49, 0x46, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, - 0x53, 0x41, 0x56, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x47, 0x4e, 0x4f, 0x52, 0x45, - 0x10, 0x04, 0x42, 0x0b, 0x0a, 0x09, 0x73, 0x61, 0x76, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, - 0x09, 0x0a, 0x07, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0xad, 0x06, 0x0a, 0x10, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 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, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x4c, - 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 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, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x07, - 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 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, 0x9f, 0x01, 0x0a, 0x04, 0x4d, 0x6f, 0x64, + 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12, 0x1d, 0x0a, 0x19, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x50, + 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, + 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x45, 0x4e, 0x44, 0x10, 0x04, 0x12, 0x10, 0x0a, 0x0c, + 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x05, 0x12, 0x1a, + 0x0a, 0x16, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x52, + 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x06, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xa0, 0x06, 0x0a, 0x19, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x53, 0x74, 0x61, 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, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x4f, 0x0a, 0x07, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x2e, 0x4f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, - 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x32, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x56, 0x32, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, - 0x4a, 0x0a, 0x13, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, - 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x12, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x42, 0x0a, 0x14, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, + 0x19, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x17, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x70, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x16, 0x70, + 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x25, 0x0a, 0x0d, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6e, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, + 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x12, 0x14, 0x0a, 0x04, + 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x6f, 0x6e, + 0x63, 0x65, 0x12, 0x46, 0x0a, 0x1e, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, + 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x1c, 0x63, 0x6f, + 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x04, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x12, 0x1f, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0c, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x5f, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, + 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x72, 0x12, 0x4c, 0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x5f, 0x62, 0x61, 0x74, + 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, + 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, + 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x0c, 0x66, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x42, 0x61, 0x74, 0x63, 0x68, 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, 0x9f, 0x01, 0x0a, 0x04, - 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4d, - 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12, - 0x1d, 0x0a, 0x19, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x57, 0x52, 0x49, 0x54, - 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x03, 0x12, 0x0f, - 0x0a, 0x0b, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x45, 0x4e, 0x44, 0x10, 0x04, 0x12, - 0x10, 0x0a, 0x0c, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, - 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, - 0x5f, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x06, 0x42, 0x0b, 0x0a, - 0x09, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xd0, 0x05, 0x0a, 0x19, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 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, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, - 0x4f, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x35, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x3a, 0x0a, 0x19, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, - 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x17, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x18, - 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x16, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x25, 0x0a, 0x0d, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x00, 0x52, 0x0c, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x12, - 0x14, 0x0a, 0x04, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, - 0x04, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x46, 0x0a, 0x1e, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x6f, 0x75, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x1c, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1f, 0x0a, - 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x04, 0x70, - 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x4c, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x5f, - 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, - 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x72, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x72, 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, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x69, 0x6e, - 0x6b, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, - 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x61, 0x63, - 0x68, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0d, 0x70, 0x79, 0x74, 0x68, 0x6f, - 0x6e, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x50, - 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x55, 0x44, 0x46, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x79, 0x74, 0x68, - 0x6f, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x42, 0x08, 0x0a, 0x06, 0x77, 0x72, 0x69, 0x74, - 0x65, 0x72, 0x22, 0x79, 0x0a, 0x1f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x41, 0x0a, - 0x18, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x72, 0x75, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, - 0x22, 0xf8, 0x04, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x42, 0x0a, 0x08, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, - 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x49, 0x64, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, - 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x00, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, - 0x29, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x65, - 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x74, - 0x6f, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, - 0x12, 0x34, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, - 0x00, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4f, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, - 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x45, 0x78, - 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x07, - 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x65, 0x78, - 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6b, 0x0a, 0x11, 0x61, 0x77, 0x61, 0x69, 0x74, - 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x54, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x48, 0x00, 0x52, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x2c, 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, - 0x65, 0x64, 0x1a, 0x4c, 0x0a, 0x17, 0x41, 0x77, 0x61, 0x69, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, 0x0a, - 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x88, 0x01, - 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x73, - 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0xf5, 0x08, 0x0a, 0x1b, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x08, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, - 0x51, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x37, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x12, 0x6a, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x70, - 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0e, - 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x54, - 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x38, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x6c, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x07, 0x65, 0x78, 0x70, - 0x6c, 0x61, 0x69, 0x6e, 0x12, 0x5a, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x70, 0x0a, 0x11, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x73, 0x70, - 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x54, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x09, 0x0a, 0x07, 0x74, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x6b, 0x5f, 0x64, + 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb3, 0x01, 0x0a, 0x18, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x46, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0f, 0x70, 0x79, 0x74, 0x68, 0x6f, + 0x6e, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x55, 0x44, 0x46, 0x48, 0x00, 0x52, 0x0e, 0x70, 0x79, + 0x74, 0x68, 0x6f, 0x6e, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x0e, + 0x73, 0x63, 0x61, 0x6c, 0x61, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x61, + 0x55, 0x44, 0x46, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x46, 0x75, 0x6e, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x79, 0x0a, 0x1f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4f, + 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x52, 0x07, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x41, 0x0a, 0x18, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x72, 0x75, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75, 0x6e, 0x49, 0x64, 0x22, 0xf8, + 0x04, 0x0a, 0x15, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x42, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, + 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, + 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x12, 0x34, + 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, + 0x13, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x41, 0x6c, 0x6c, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x4f, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x45, 0x78, 0x70, 0x6c, + 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x07, 0x65, 0x78, + 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x12, 0x1e, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x6b, 0x0a, 0x11, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, + 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x54, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x10, 0x61, 0x77, 0x61, 0x69, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x1a, 0xaa, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, - 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x61, 0x74, 0x61, 0x41, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x69, 0x73, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x1a, - 0x48, 0x0a, 0x14, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x63, 0x65, 0x6e, - 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x65, 0x73, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x1a, 0x27, 0x0a, 0x0d, 0x45, 0x78, 0x70, - 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x1a, 0xc5, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x10, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x24, - 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, - 0x65, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, - 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x1a, 0x38, 0x0a, 0x16, 0x41, 0x77, - 0x61, 0x69, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, - 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x61, 0x74, 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x74, - 0x79, 0x70, 0x65, 0x22, 0xde, 0x02, 0x0a, 0x1c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1d, - 0x0a, 0x09, 0x67, 0x65, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x48, 0x00, 0x52, 0x08, 0x67, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x7c, 0x0a, - 0x15, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x73, + 0x6f, 0x6e, 0x1a, 0x2c, 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, + 0x1a, 0x4c, 0x0a, 0x17, 0x41, 0x77, 0x61, 0x69, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x42, + 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x73, 0x42, 0x09, + 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0xf5, 0x08, 0x0a, 0x1b, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x42, 0x0a, 0x08, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, + 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x52, 0x07, 0x71, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x51, 0x0a, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x6a, 0x0a, 0x0f, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x73, 0x70, 0x61, 0x72, + 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, + 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x54, 0x0a, 0x07, + 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x07, 0x65, 0x78, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x12, 0x5a, 0x0a, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x2e, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x48, 0x00, 0x52, 0x09, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x70, + 0x0a, 0x11, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x41, 0x2e, 0x73, 0x70, 0x61, 0x72, + 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x10, + 0x61, 0x77, 0x61, 0x69, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x1a, 0xaa, 0x01, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x73, 0x44, 0x61, 0x74, 0x61, 0x41, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x69, 0x73, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67, + 0x65, 0x72, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x69, 0x73, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x1a, 0x48, 0x0a, + 0x14, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x5f, + 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x4a, 0x73, 0x6f, 0x6e, 0x1a, 0x27, 0x0a, 0x0d, 0x45, 0x78, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x1a, 0xc5, 0x01, 0x0a, 0x0f, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x30, 0x0a, 0x11, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x10, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0a, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, + 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x48, 0x02, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x54, 0x72, 0x61, 0x63, 0x65, 0x88, + 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, + 0x63, 0x6b, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x1a, 0x38, 0x0a, 0x16, 0x41, 0x77, 0x61, 0x69, + 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, + 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x22, 0xbd, 0x06, 0x0a, 0x1c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1d, 0x0a, 0x09, + 0x67, 0x65, 0x74, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, + 0x00, 0x52, 0x08, 0x67, 0x65, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x7c, 0x0a, 0x15, 0x61, + 0x77, 0x61, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x73, 0x70, 0x61, + 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x41, 0x6e, 0x79, + 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x48, 0x00, 0x52, 0x13, 0x61, 0x77, 0x61, 0x69, 0x74, 0x41, 0x6e, 0x79, 0x54, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x10, 0x72, 0x65, 0x73, + 0x65, 0x74, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x12, 0x6e, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x49, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x41, - 0x6e, 0x79, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x13, 0x61, 0x77, 0x61, 0x69, 0x74, 0x41, 0x6e, 0x79, - 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x10, 0x72, - 0x65, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x1a, 0x4f, 0x0a, 0x1a, 0x41, 0x77, 0x61, 0x69, - 0x74, 0x41, 0x6e, 0x79, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x22, 0xd3, 0x05, 0x0a, 0x22, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, + 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x74, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x49, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, + 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0e, + 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x73, 0x1a, 0x4f, 0x0a, 0x1a, 0x41, 0x77, 0x61, 0x69, 0x74, 0x41, 0x6e, + 0x79, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x12, 0x22, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x6d, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x4d, 0x73, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x73, 0x1a, 0xcd, 0x01, 0x0a, 0x1d, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, + 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x12, 0x55, 0x0a, 0x17, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x55, 0x44, 0x46, 0x48, 0x00, + 0x52, 0x15, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x88, 0x01, 0x01, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x70, + 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x5f, 0x70, + 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x09, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, + 0x64, 0x22, 0xb4, 0x08, 0x0a, 0x22, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, + 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x58, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, + 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x58, 0x0a, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x73, 0x70, - 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x60, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, + 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x12, 0x60, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x48, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x05, 0x71, + 0x75, 0x65, 0x72, 0x79, 0x12, 0x81, 0x01, 0x0a, 0x15, 0x61, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x61, + 0x6e, 0x79, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x00, - 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x81, 0x01, 0x0a, 0x15, 0x61, 0x77, 0x61, 0x69, - 0x74, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, - 0x41, 0x6e, 0x79, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x13, 0x61, 0x77, 0x61, 0x69, 0x74, 0x41, 0x6e, 0x79, - 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x10, 0x72, - 0x65, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x1a, 0x7f, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x6f, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x48, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x73, 0x0a, 0x16, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x37, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, - 0x0a, 0x19, 0x41, 0x77, 0x61, 0x69, 0x74, 0x41, 0x6e, 0x79, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x72, - 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x22, 0xd4, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x55, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x1a, 0x60, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, - 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 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, + 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x41, 0x77, 0x61, 0x69, 0x74, 0x41, 0x6e, 0x79, + 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x48, 0x00, 0x52, 0x13, 0x61, 0x77, 0x61, 0x69, 0x74, 0x41, 0x6e, 0x79, 0x54, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x65, + 0x74, 0x5f, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x5f, 0x6c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x61, + 0x64, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x0f, 0x72, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4c, 0x69, 0x73, + 0x74, 0x65, 0x6e, 0x65, 0x72, 0x12, 0x7b, 0x0a, 0x0e, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x52, 0x2e, + 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x48, 0x00, 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, + 0x72, 0x73, 0x1a, 0x7f, 0x0a, 0x0c, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x6f, 0x0a, 0x0e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x71, 0x75, 0x65, + 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x73, 0x70, 0x61, + 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x51, 0x75, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x1a, 0x73, 0x0a, 0x16, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x37, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, + 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x49, 0x64, 0x52, 0x02, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, + 0x07, 0x0a, 0x05, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x19, 0x41, 0x77, 0x61, 0x69, + 0x74, 0x41, 0x6e, 0x79, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x61, 0x74, 0x65, 0x64, 0x1a, 0x4b, 0x0a, 0x1e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, + 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x50, 0x61, 0x79, 0x6c, 0x6f, + 0x61, 0x64, 0x1a, 0x45, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x69, + 0x73, 0x74, 0x65, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x72, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, + 0xd4, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x55, 0x0a, + 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x43, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x1a, 0x60, 0x0a, 0x0e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 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 ( @@ -3015,7 +3381,7 @@ func file_spark_connect_commands_proto_rawDescGZIP() []byte { } var file_spark_connect_commands_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_spark_connect_commands_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_spark_connect_commands_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_spark_connect_commands_proto_goTypes = []interface{}{ (WriteOperation_SaveMode)(0), // 0: spark.connect.WriteOperation.SaveMode (WriteOperation_SaveTable_TableSaveMethod)(0), // 1: spark.connect.WriteOperation.SaveTable.TableSaveMethod @@ -3026,7 +3392,7 @@ var file_spark_connect_commands_proto_goTypes = []interface{}{ (*WriteOperation)(nil), // 6: spark.connect.WriteOperation (*WriteOperationV2)(nil), // 7: spark.connect.WriteOperationV2 (*WriteStreamOperationStart)(nil), // 8: spark.connect.WriteStreamOperationStart - (*StreamingForeachWriter)(nil), // 9: spark.connect.StreamingForeachWriter + (*StreamingForeachFunction)(nil), // 9: spark.connect.StreamingForeachFunction (*WriteStreamOperationStartResult)(nil), // 10: spark.connect.WriteStreamOperationStartResult (*StreamingQueryInstanceId)(nil), // 11: spark.connect.StreamingQueryInstanceId (*StreamingQueryCommand)(nil), // 12: spark.connect.StreamingQueryCommand @@ -3043,27 +3409,32 @@ var file_spark_connect_commands_proto_goTypes = []interface{}{ nil, // 23: spark.connect.WriteOperationV2.TablePropertiesEntry nil, // 24: spark.connect.WriteStreamOperationStart.OptionsEntry (*StreamingQueryCommand_ExplainCommand)(nil), // 25: spark.connect.StreamingQueryCommand.ExplainCommand - (*StreamingQueryCommand_AwaitTerminationCommand)(nil), // 26: spark.connect.StreamingQueryCommand.AwaitTerminationCommand - (*StreamingQueryCommandResult_StatusResult)(nil), // 27: spark.connect.StreamingQueryCommandResult.StatusResult - (*StreamingQueryCommandResult_RecentProgressResult)(nil), // 28: spark.connect.StreamingQueryCommandResult.RecentProgressResult - (*StreamingQueryCommandResult_ExplainResult)(nil), // 29: spark.connect.StreamingQueryCommandResult.ExplainResult - (*StreamingQueryCommandResult_ExceptionResult)(nil), // 30: spark.connect.StreamingQueryCommandResult.ExceptionResult - (*StreamingQueryCommandResult_AwaitTerminationResult)(nil), // 31: spark.connect.StreamingQueryCommandResult.AwaitTerminationResult - (*StreamingQueryManagerCommand_AwaitAnyTerminationCommand)(nil), // 32: spark.connect.StreamingQueryManagerCommand.AwaitAnyTerminationCommand - (*StreamingQueryManagerCommandResult_ActiveResult)(nil), // 33: spark.connect.StreamingQueryManagerCommandResult.ActiveResult - (*StreamingQueryManagerCommandResult_StreamingQueryInstance)(nil), // 34: spark.connect.StreamingQueryManagerCommandResult.StreamingQueryInstance - (*StreamingQueryManagerCommandResult_AwaitAnyTerminationResult)(nil), // 35: spark.connect.StreamingQueryManagerCommandResult.AwaitAnyTerminationResult - nil, // 36: spark.connect.GetResourcesCommandResult.ResourcesEntry - (*CommonInlineUserDefinedFunction)(nil), // 37: spark.connect.CommonInlineUserDefinedFunction - (*anypb.Any)(nil), // 38: google.protobuf.Any - (*Relation)(nil), // 39: spark.connect.Relation - (*Expression)(nil), // 40: spark.connect.Expression - (*PythonUDF)(nil), // 41: spark.connect.PythonUDF - (*Expression_Literal)(nil), // 42: spark.connect.Expression.Literal - (*ResourceInformation)(nil), // 43: spark.connect.ResourceInformation + (*StreamingQueryCommand_AwaitTerminationCommand)(nil), // 26: spark.connect.StreamingQueryCommand.AwaitTerminationCommand + (*StreamingQueryCommandResult_StatusResult)(nil), // 27: spark.connect.StreamingQueryCommandResult.StatusResult + (*StreamingQueryCommandResult_RecentProgressResult)(nil), // 28: spark.connect.StreamingQueryCommandResult.RecentProgressResult + (*StreamingQueryCommandResult_ExplainResult)(nil), // 29: spark.connect.StreamingQueryCommandResult.ExplainResult + (*StreamingQueryCommandResult_ExceptionResult)(nil), // 30: spark.connect.StreamingQueryCommandResult.ExceptionResult + (*StreamingQueryCommandResult_AwaitTerminationResult)(nil), // 31: spark.connect.StreamingQueryCommandResult.AwaitTerminationResult + (*StreamingQueryManagerCommand_AwaitAnyTerminationCommand)(nil), // 32: spark.connect.StreamingQueryManagerCommand.AwaitAnyTerminationCommand + (*StreamingQueryManagerCommand_StreamingQueryListenerCommand)(nil), // 33: spark.connect.StreamingQueryManagerCommand.StreamingQueryListenerCommand + (*StreamingQueryManagerCommandResult_ActiveResult)(nil), // 34: spark.connect.StreamingQueryManagerCommandResult.ActiveResult + (*StreamingQueryManagerCommandResult_StreamingQueryInstance)(nil), // 35: spark.connect.StreamingQueryManagerCommandResult.StreamingQueryInstance + (*StreamingQueryManagerCommandResult_AwaitAnyTerminationResult)(nil), // 36: spark.connect.StreamingQueryManagerCommandResult.AwaitAnyTerminationResult + (*StreamingQueryManagerCommandResult_StreamingQueryListenerInstance)(nil), // 37: spark.connect.StreamingQueryManagerCommandResult.StreamingQueryListenerInstance + (*StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult)(nil), // 38: spark.connect.StreamingQueryManagerCommandResult.ListStreamingQueryListenerResult + nil, // 39: spark.connect.GetResourcesCommandResult.ResourcesEntry + (*CommonInlineUserDefinedFunction)(nil), // 40: spark.connect.CommonInlineUserDefinedFunction + (*CommonInlineUserDefinedTableFunction)(nil), // 41: spark.connect.CommonInlineUserDefinedTableFunction + (*anypb.Any)(nil), // 42: google.protobuf.Any + (*Expression_Literal)(nil), // 43: spark.connect.Expression.Literal + (*Relation)(nil), // 44: spark.connect.Relation + (*Expression)(nil), // 45: spark.connect.Expression + (*PythonUDF)(nil), // 46: spark.connect.PythonUDF + (*ScalarScalaUDF)(nil), // 47: spark.connect.ScalarScalaUDF + (*ResourceInformation)(nil), // 48: spark.connect.ResourceInformation } var file_spark_connect_commands_proto_depIdxs = []int32{ - 37, // 0: spark.connect.Command.register_function:type_name -> spark.connect.CommonInlineUserDefinedFunction + 40, // 0: spark.connect.Command.register_function:type_name -> spark.connect.CommonInlineUserDefinedFunction 6, // 1: spark.connect.Command.write_operation:type_name -> spark.connect.WriteOperation 5, // 2: spark.connect.Command.create_dataframe_view:type_name -> spark.connect.CreateDataFrameViewCommand 7, // 3: spark.connect.Command.write_operation_v2:type_name -> spark.connect.WriteOperationV2 @@ -3072,49 +3443,57 @@ var file_spark_connect_commands_proto_depIdxs = []int32{ 12, // 6: spark.connect.Command.streaming_query_command:type_name -> spark.connect.StreamingQueryCommand 16, // 7: spark.connect.Command.get_resources_command:type_name -> spark.connect.GetResourcesCommand 14, // 8: spark.connect.Command.streaming_query_manager_command:type_name -> spark.connect.StreamingQueryManagerCommand - 38, // 9: spark.connect.Command.extension:type_name -> google.protobuf.Any - 18, // 10: spark.connect.SqlCommand.args:type_name -> spark.connect.SqlCommand.ArgsEntry - 39, // 11: spark.connect.CreateDataFrameViewCommand.input:type_name -> spark.connect.Relation - 39, // 12: spark.connect.WriteOperation.input:type_name -> spark.connect.Relation - 20, // 13: spark.connect.WriteOperation.table:type_name -> spark.connect.WriteOperation.SaveTable - 0, // 14: spark.connect.WriteOperation.mode:type_name -> spark.connect.WriteOperation.SaveMode - 21, // 15: spark.connect.WriteOperation.bucket_by:type_name -> spark.connect.WriteOperation.BucketBy - 19, // 16: spark.connect.WriteOperation.options:type_name -> spark.connect.WriteOperation.OptionsEntry - 39, // 17: spark.connect.WriteOperationV2.input:type_name -> spark.connect.Relation - 40, // 18: spark.connect.WriteOperationV2.partitioning_columns:type_name -> spark.connect.Expression - 22, // 19: spark.connect.WriteOperationV2.options:type_name -> spark.connect.WriteOperationV2.OptionsEntry - 23, // 20: spark.connect.WriteOperationV2.table_properties:type_name -> spark.connect.WriteOperationV2.TablePropertiesEntry - 2, // 21: spark.connect.WriteOperationV2.mode:type_name -> spark.connect.WriteOperationV2.Mode - 40, // 22: spark.connect.WriteOperationV2.overwrite_condition:type_name -> spark.connect.Expression - 39, // 23: spark.connect.WriteStreamOperationStart.input:type_name -> spark.connect.Relation - 24, // 24: spark.connect.WriteStreamOperationStart.options:type_name -> spark.connect.WriteStreamOperationStart.OptionsEntry - 9, // 25: spark.connect.WriteStreamOperationStart.foreach_writer:type_name -> spark.connect.StreamingForeachWriter - 41, // 26: spark.connect.StreamingForeachWriter.python_writer:type_name -> spark.connect.PythonUDF - 11, // 27: spark.connect.WriteStreamOperationStartResult.query_id:type_name -> spark.connect.StreamingQueryInstanceId - 11, // 28: spark.connect.StreamingQueryCommand.query_id:type_name -> spark.connect.StreamingQueryInstanceId - 25, // 29: spark.connect.StreamingQueryCommand.explain:type_name -> spark.connect.StreamingQueryCommand.ExplainCommand - 26, // 30: spark.connect.StreamingQueryCommand.await_termination:type_name -> spark.connect.StreamingQueryCommand.AwaitTerminationCommand - 11, // 31: spark.connect.StreamingQueryCommandResult.query_id:type_name -> spark.connect.StreamingQueryInstanceId - 27, // 32: spark.connect.StreamingQueryCommandResult.status:type_name -> spark.connect.StreamingQueryCommandResult.StatusResult - 28, // 33: spark.connect.StreamingQueryCommandResult.recent_progress:type_name -> spark.connect.StreamingQueryCommandResult.RecentProgressResult - 29, // 34: spark.connect.StreamingQueryCommandResult.explain:type_name -> spark.connect.StreamingQueryCommandResult.ExplainResult - 30, // 35: spark.connect.StreamingQueryCommandResult.exception:type_name -> spark.connect.StreamingQueryCommandResult.ExceptionResult - 31, // 36: spark.connect.StreamingQueryCommandResult.await_termination:type_name -> spark.connect.StreamingQueryCommandResult.AwaitTerminationResult - 32, // 37: spark.connect.StreamingQueryManagerCommand.await_any_termination:type_name -> spark.connect.StreamingQueryManagerCommand.AwaitAnyTerminationCommand - 33, // 38: spark.connect.StreamingQueryManagerCommandResult.active:type_name -> spark.connect.StreamingQueryManagerCommandResult.ActiveResult - 34, // 39: spark.connect.StreamingQueryManagerCommandResult.query:type_name -> spark.connect.StreamingQueryManagerCommandResult.StreamingQueryInstance - 35, // 40: spark.connect.StreamingQueryManagerCommandResult.await_any_termination:type_name -> spark.connect.StreamingQueryManagerCommandResult.AwaitAnyTerminationResult - 36, // 41: spark.connect.GetResourcesCommandResult.resources:type_name -> spark.connect.GetResourcesCommandResult.ResourcesEntry - 42, // 42: spark.connect.SqlCommand.ArgsEntry.value:type_name -> spark.connect.Expression.Literal - 1, // 43: spark.connect.WriteOperation.SaveTable.save_method:type_name -> spark.connect.WriteOperation.SaveTable.TableSaveMethod - 34, // 44: spark.connect.StreamingQueryManagerCommandResult.ActiveResult.active_queries:type_name -> spark.connect.StreamingQueryManagerCommandResult.StreamingQueryInstance - 11, // 45: spark.connect.StreamingQueryManagerCommandResult.StreamingQueryInstance.id:type_name -> spark.connect.StreamingQueryInstanceId - 43, // 46: spark.connect.GetResourcesCommandResult.ResourcesEntry.value:type_name -> spark.connect.ResourceInformation - 47, // [47:47] is the sub-list for method output_type - 47, // [47:47] is the sub-list for method input_type - 47, // [47:47] is the sub-list for extension type_name - 47, // [47:47] is the sub-list for extension extendee - 0, // [0:47] is the sub-list for field type_name + 41, // 9: spark.connect.Command.register_table_function:type_name -> spark.connect.CommonInlineUserDefinedTableFunction + 42, // 10: spark.connect.Command.extension:type_name -> google.protobuf.Any + 18, // 11: spark.connect.SqlCommand.args:type_name -> spark.connect.SqlCommand.ArgsEntry + 43, // 12: spark.connect.SqlCommand.pos_args:type_name -> spark.connect.Expression.Literal + 44, // 13: spark.connect.CreateDataFrameViewCommand.input:type_name -> spark.connect.Relation + 44, // 14: spark.connect.WriteOperation.input:type_name -> spark.connect.Relation + 20, // 15: spark.connect.WriteOperation.table:type_name -> spark.connect.WriteOperation.SaveTable + 0, // 16: spark.connect.WriteOperation.mode:type_name -> spark.connect.WriteOperation.SaveMode + 21, // 17: spark.connect.WriteOperation.bucket_by:type_name -> spark.connect.WriteOperation.BucketBy + 19, // 18: spark.connect.WriteOperation.options:type_name -> spark.connect.WriteOperation.OptionsEntry + 44, // 19: spark.connect.WriteOperationV2.input:type_name -> spark.connect.Relation + 45, // 20: spark.connect.WriteOperationV2.partitioning_columns:type_name -> spark.connect.Expression + 22, // 21: spark.connect.WriteOperationV2.options:type_name -> spark.connect.WriteOperationV2.OptionsEntry + 23, // 22: spark.connect.WriteOperationV2.table_properties:type_name -> spark.connect.WriteOperationV2.TablePropertiesEntry + 2, // 23: spark.connect.WriteOperationV2.mode:type_name -> spark.connect.WriteOperationV2.Mode + 45, // 24: spark.connect.WriteOperationV2.overwrite_condition:type_name -> spark.connect.Expression + 44, // 25: spark.connect.WriteStreamOperationStart.input:type_name -> spark.connect.Relation + 24, // 26: spark.connect.WriteStreamOperationStart.options:type_name -> spark.connect.WriteStreamOperationStart.OptionsEntry + 9, // 27: spark.connect.WriteStreamOperationStart.foreach_writer:type_name -> spark.connect.StreamingForeachFunction + 9, // 28: spark.connect.WriteStreamOperationStart.foreach_batch:type_name -> spark.connect.StreamingForeachFunction + 46, // 29: spark.connect.StreamingForeachFunction.python_function:type_name -> spark.connect.PythonUDF + 47, // 30: spark.connect.StreamingForeachFunction.scala_function:type_name -> spark.connect.ScalarScalaUDF + 11, // 31: spark.connect.WriteStreamOperationStartResult.query_id:type_name -> spark.connect.StreamingQueryInstanceId + 11, // 32: spark.connect.StreamingQueryCommand.query_id:type_name -> spark.connect.StreamingQueryInstanceId + 25, // 33: spark.connect.StreamingQueryCommand.explain:type_name -> spark.connect.StreamingQueryCommand.ExplainCommand + 26, // 34: spark.connect.StreamingQueryCommand.await_termination:type_name -> spark.connect.StreamingQueryCommand.AwaitTerminationCommand + 11, // 35: spark.connect.StreamingQueryCommandResult.query_id:type_name -> spark.connect.StreamingQueryInstanceId + 27, // 36: spark.connect.StreamingQueryCommandResult.status:type_name -> spark.connect.StreamingQueryCommandResult.StatusResult + 28, // 37: spark.connect.StreamingQueryCommandResult.recent_progress:type_name -> spark.connect.StreamingQueryCommandResult.RecentProgressResult + 29, // 38: spark.connect.StreamingQueryCommandResult.explain:type_name -> spark.connect.StreamingQueryCommandResult.ExplainResult + 30, // 39: spark.connect.StreamingQueryCommandResult.exception:type_name -> spark.connect.StreamingQueryCommandResult.ExceptionResult + 31, // 40: spark.connect.StreamingQueryCommandResult.await_termination:type_name -> spark.connect.StreamingQueryCommandResult.AwaitTerminationResult + 32, // 41: spark.connect.StreamingQueryManagerCommand.await_any_termination:type_name -> spark.connect.StreamingQueryManagerCommand.AwaitAnyTerminationCommand + 33, // 42: spark.connect.StreamingQueryManagerCommand.add_listener:type_name -> spark.connect.StreamingQueryManagerCommand.StreamingQueryListenerCommand + 33, // 43: spark.connect.StreamingQueryManagerCommand.remove_listener:type_name -> spark.connect.StreamingQueryManagerCommand.StreamingQueryListenerCommand + 34, // 44: spark.connect.StreamingQueryManagerCommandResult.active:type_name -> spark.connect.StreamingQueryManagerCommandResult.ActiveResult + 35, // 45: spark.connect.StreamingQueryManagerCommandResult.query:type_name -> spark.connect.StreamingQueryManagerCommandResult.StreamingQueryInstance + 36, // 46: spark.connect.StreamingQueryManagerCommandResult.await_any_termination:type_name -> spark.connect.StreamingQueryManagerCommandResult.AwaitAnyTerminationResult + 38, // 47: spark.connect.StreamingQueryManagerCommandResult.list_listeners:type_name -> spark.connect.StreamingQueryManagerCommandResult.ListStreamingQueryListenerResult + 39, // 48: spark.connect.GetResourcesCommandResult.resources:type_name -> spark.connect.GetResourcesCommandResult.ResourcesEntry + 43, // 49: spark.connect.SqlCommand.ArgsEntry.value:type_name -> spark.connect.Expression.Literal + 1, // 50: spark.connect.WriteOperation.SaveTable.save_method:type_name -> spark.connect.WriteOperation.SaveTable.TableSaveMethod + 46, // 51: spark.connect.StreamingQueryManagerCommand.StreamingQueryListenerCommand.python_listener_payload:type_name -> spark.connect.PythonUDF + 35, // 52: spark.connect.StreamingQueryManagerCommandResult.ActiveResult.active_queries:type_name -> spark.connect.StreamingQueryManagerCommandResult.StreamingQueryInstance + 11, // 53: spark.connect.StreamingQueryManagerCommandResult.StreamingQueryInstance.id:type_name -> spark.connect.StreamingQueryInstanceId + 48, // 54: spark.connect.GetResourcesCommandResult.ResourcesEntry.value:type_name -> spark.connect.ResourceInformation + 55, // [55:55] is the sub-list for method output_type + 55, // [55:55] is the sub-list for method input_type + 55, // [55:55] is the sub-list for extension type_name + 55, // [55:55] is the sub-list for extension extendee + 0, // [0:55] is the sub-list for field type_name } func init() { file_spark_connect_commands_proto_init() } @@ -3199,7 +3578,7 @@ func file_spark_connect_commands_proto_init() { } } file_spark_connect_commands_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingForeachWriter); i { + switch v := v.(*StreamingForeachFunction); i { case 0: return &v.state case 1: @@ -3427,7 +3806,7 @@ func file_spark_connect_commands_proto_init() { } } file_spark_connect_commands_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingQueryManagerCommandResult_ActiveResult); i { + switch v := v.(*StreamingQueryManagerCommand_StreamingQueryListenerCommand); i { case 0: return &v.state case 1: @@ -3439,7 +3818,7 @@ func file_spark_connect_commands_proto_init() { } } file_spark_connect_commands_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamingQueryManagerCommandResult_StreamingQueryInstance); i { + switch v := v.(*StreamingQueryManagerCommandResult_ActiveResult); i { case 0: return &v.state case 1: @@ -3451,6 +3830,18 @@ func file_spark_connect_commands_proto_init() { } } file_spark_connect_commands_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamingQueryManagerCommandResult_StreamingQueryInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spark_connect_commands_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StreamingQueryManagerCommandResult_AwaitAnyTerminationResult); i { case 0: return &v.state @@ -3462,6 +3853,30 @@ func file_spark_connect_commands_proto_init() { return nil } } + file_spark_connect_commands_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamingQueryManagerCommandResult_StreamingQueryListenerInstance); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spark_connect_commands_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StreamingQueryManagerCommandResult_ListStreamingQueryListenerResult); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_spark_connect_commands_proto_msgTypes[0].OneofWrappers = []interface{}{ (*Command_RegisterFunction)(nil), @@ -3473,6 +3888,7 @@ func file_spark_connect_commands_proto_init() { (*Command_StreamingQueryCommand)(nil), (*Command_GetResourcesCommand)(nil), (*Command_StreamingQueryManagerCommand)(nil), + (*Command_RegisterTableFunction)(nil), (*Command_Extension)(nil), } file_spark_connect_commands_proto_msgTypes[3].OneofWrappers = []interface{}{ @@ -3489,7 +3905,8 @@ func file_spark_connect_commands_proto_init() { (*WriteStreamOperationStart_TableName)(nil), } file_spark_connect_commands_proto_msgTypes[6].OneofWrappers = []interface{}{ - (*StreamingForeachWriter_PythonWriter)(nil), + (*StreamingForeachFunction_PythonFunction)(nil), + (*StreamingForeachFunction_ScalaFunction)(nil), } file_spark_connect_commands_proto_msgTypes[9].OneofWrappers = []interface{}{ (*StreamingQueryCommand_Status)(nil), @@ -3513,24 +3930,31 @@ func file_spark_connect_commands_proto_init() { (*StreamingQueryManagerCommand_GetQuery)(nil), (*StreamingQueryManagerCommand_AwaitAnyTermination)(nil), (*StreamingQueryManagerCommand_ResetTerminated)(nil), + (*StreamingQueryManagerCommand_AddListener)(nil), + (*StreamingQueryManagerCommand_RemoveListener)(nil), + (*StreamingQueryManagerCommand_ListListeners)(nil), } file_spark_connect_commands_proto_msgTypes[12].OneofWrappers = []interface{}{ (*StreamingQueryManagerCommandResult_Active)(nil), (*StreamingQueryManagerCommandResult_Query)(nil), (*StreamingQueryManagerCommandResult_AwaitAnyTermination)(nil), (*StreamingQueryManagerCommandResult_ResetTerminated)(nil), + (*StreamingQueryManagerCommandResult_AddListener)(nil), + (*StreamingQueryManagerCommandResult_RemoveListener)(nil), + (*StreamingQueryManagerCommandResult_ListListeners)(nil), } file_spark_connect_commands_proto_msgTypes[23].OneofWrappers = []interface{}{} file_spark_connect_commands_proto_msgTypes[27].OneofWrappers = []interface{}{} file_spark_connect_commands_proto_msgTypes[29].OneofWrappers = []interface{}{} - file_spark_connect_commands_proto_msgTypes[31].OneofWrappers = []interface{}{} + file_spark_connect_commands_proto_msgTypes[30].OneofWrappers = []interface{}{} + file_spark_connect_commands_proto_msgTypes[32].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_spark_connect_commands_proto_rawDesc, NumEnums: 3, - NumMessages: 34, + NumMessages: 37, NumExtensions: 0, NumServices: 0, }, diff --git a/internal/generated/expressions.pb.go b/internal/generated/expressions.pb.go index 71570d3..03836f6 100644 --- a/internal/generated/expressions.pb.go +++ b/internal/generated/expressions.pb.go @@ -211,6 +211,7 @@ type Expression struct { // *Expression_UpdateFields_ // *Expression_UnresolvedNamedLambdaVariable_ // *Expression_CommonInlineUserDefinedFunction + // *Expression_CallFunction // *Expression_Extension ExprType isExpression_ExprType `protobuf_oneof:"expr_type"` } @@ -359,6 +360,13 @@ func (x *Expression) GetCommonInlineUserDefinedFunction() *CommonInlineUserDefin return nil } +func (x *Expression) GetCallFunction() *CallFunction { + if x, ok := x.GetExprType().(*Expression_CallFunction); ok { + return x.CallFunction + } + return nil +} + func (x *Expression) GetExtension() *anypb.Any { if x, ok := x.GetExprType().(*Expression_Extension); ok { return x.Extension @@ -430,6 +438,10 @@ type Expression_CommonInlineUserDefinedFunction struct { CommonInlineUserDefinedFunction *CommonInlineUserDefinedFunction `protobuf:"bytes,15,opt,name=common_inline_user_defined_function,json=commonInlineUserDefinedFunction,proto3,oneof"` } +type Expression_CallFunction struct { + CallFunction *CallFunction `protobuf:"bytes,16,opt,name=call_function,json=callFunction,proto3,oneof"` +} + type Expression_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. @@ -466,6 +478,8 @@ func (*Expression_UnresolvedNamedLambdaVariable_) isExpression_ExprType() {} func (*Expression_CommonInlineUserDefinedFunction) isExpression_ExprType() {} +func (*Expression_CallFunction) isExpression_ExprType() {} + func (*Expression_Extension) isExpression_ExprType() {} type CommonInlineUserDefinedFunction struct { @@ -808,6 +822,63 @@ func (x *JavaUDF) GetAggregate() bool { return false } +type CallFunction struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // (Required) Unparsed name of the SQL 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 *CallFunction) Reset() { + *x = CallFunction{} + if protoimpl.UnsafeEnabled { + mi := &file_spark_connect_expressions_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CallFunction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CallFunction) ProtoMessage() {} + +func (x *CallFunction) ProtoReflect() protoreflect.Message { + mi := &file_spark_connect_expressions_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 CallFunction.ProtoReflect.Descriptor instead. +func (*CallFunction) Descriptor() ([]byte, []int) { + return file_spark_connect_expressions_proto_rawDescGZIP(), []int{5} +} + +func (x *CallFunction) GetFunctionName() string { + if x != nil { + return x.FunctionName + } + return "" +} + +func (x *CallFunction) GetArguments() []*Expression { + if x != nil { + return x.Arguments + } + return nil +} + // Expression for the OVER clause or WINDOW clause. type Expression_Window struct { state protoimpl.MessageState @@ -829,7 +900,7 @@ type Expression_Window struct { func (x *Expression_Window) Reset() { *x = Expression_Window{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[5] + mi := &file_spark_connect_expressions_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -842,7 +913,7 @@ func (x *Expression_Window) String() string { func (*Expression_Window) ProtoMessage() {} func (x *Expression_Window) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[5] + mi := &file_spark_connect_expressions_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -904,7 +975,7 @@ type Expression_SortOrder struct { func (x *Expression_SortOrder) Reset() { *x = Expression_SortOrder{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[6] + mi := &file_spark_connect_expressions_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -917,7 +988,7 @@ func (x *Expression_SortOrder) String() string { func (*Expression_SortOrder) ProtoMessage() {} func (x *Expression_SortOrder) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[6] + mi := &file_spark_connect_expressions_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -973,7 +1044,7 @@ type Expression_Cast struct { func (x *Expression_Cast) Reset() { *x = Expression_Cast{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[7] + mi := &file_spark_connect_expressions_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -986,7 +1057,7 @@ func (x *Expression_Cast) String() string { func (*Expression_Cast) ProtoMessage() {} func (x *Expression_Cast) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[7] + mi := &file_spark_connect_expressions_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1080,7 +1151,7 @@ type Expression_Literal struct { func (x *Expression_Literal) Reset() { *x = Expression_Literal{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[8] + mi := &file_spark_connect_expressions_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1093,7 +1164,7 @@ func (x *Expression_Literal) String() string { func (*Expression_Literal) ProtoMessage() {} func (x *Expression_Literal) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[8] + mi := &file_spark_connect_expressions_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1400,7 +1471,7 @@ type Expression_UnresolvedAttribute struct { func (x *Expression_UnresolvedAttribute) Reset() { *x = Expression_UnresolvedAttribute{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[9] + mi := &file_spark_connect_expressions_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1413,7 +1484,7 @@ func (x *Expression_UnresolvedAttribute) String() string { func (*Expression_UnresolvedAttribute) ProtoMessage() {} func (x *Expression_UnresolvedAttribute) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[9] + mi := &file_spark_connect_expressions_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1466,7 +1537,7 @@ type Expression_UnresolvedFunction struct { func (x *Expression_UnresolvedFunction) Reset() { *x = Expression_UnresolvedFunction{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[10] + mi := &file_spark_connect_expressions_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1479,7 +1550,7 @@ func (x *Expression_UnresolvedFunction) String() string { func (*Expression_UnresolvedFunction) ProtoMessage() {} func (x *Expression_UnresolvedFunction) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[10] + mi := &file_spark_connect_expressions_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1536,7 +1607,7 @@ type Expression_ExpressionString struct { func (x *Expression_ExpressionString) Reset() { *x = Expression_ExpressionString{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[11] + mi := &file_spark_connect_expressions_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1549,7 +1620,7 @@ func (x *Expression_ExpressionString) String() string { func (*Expression_ExpressionString) ProtoMessage() {} func (x *Expression_ExpressionString) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[11] + mi := &file_spark_connect_expressions_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1588,7 +1659,7 @@ type Expression_UnresolvedStar struct { func (x *Expression_UnresolvedStar) Reset() { *x = Expression_UnresolvedStar{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[12] + mi := &file_spark_connect_expressions_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1601,7 +1672,7 @@ func (x *Expression_UnresolvedStar) String() string { func (*Expression_UnresolvedStar) ProtoMessage() {} func (x *Expression_UnresolvedStar) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[12] + mi := &file_spark_connect_expressions_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1640,7 +1711,7 @@ type Expression_UnresolvedRegex struct { func (x *Expression_UnresolvedRegex) Reset() { *x = Expression_UnresolvedRegex{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[13] + mi := &file_spark_connect_expressions_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1653,7 +1724,7 @@ func (x *Expression_UnresolvedRegex) String() string { func (*Expression_UnresolvedRegex) ProtoMessage() {} func (x *Expression_UnresolvedRegex) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[13] + mi := &file_spark_connect_expressions_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1700,7 +1771,7 @@ type Expression_UnresolvedExtractValue struct { func (x *Expression_UnresolvedExtractValue) Reset() { *x = Expression_UnresolvedExtractValue{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[14] + mi := &file_spark_connect_expressions_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1713,7 +1784,7 @@ func (x *Expression_UnresolvedExtractValue) String() string { func (*Expression_UnresolvedExtractValue) ProtoMessage() {} func (x *Expression_UnresolvedExtractValue) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[14] + mi := &file_spark_connect_expressions_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1762,7 +1833,7 @@ type Expression_UpdateFields struct { func (x *Expression_UpdateFields) Reset() { *x = Expression_UpdateFields{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[15] + mi := &file_spark_connect_expressions_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1775,7 +1846,7 @@ func (x *Expression_UpdateFields) String() string { func (*Expression_UpdateFields) ProtoMessage() {} func (x *Expression_UpdateFields) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[15] + mi := &file_spark_connect_expressions_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1830,7 +1901,7 @@ type Expression_Alias struct { func (x *Expression_Alias) Reset() { *x = Expression_Alias{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[16] + mi := &file_spark_connect_expressions_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1843,7 +1914,7 @@ func (x *Expression_Alias) String() string { func (*Expression_Alias) ProtoMessage() {} func (x *Expression_Alias) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[16] + mi := &file_spark_connect_expressions_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1897,7 +1968,7 @@ type Expression_LambdaFunction struct { func (x *Expression_LambdaFunction) Reset() { *x = Expression_LambdaFunction{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[17] + mi := &file_spark_connect_expressions_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1910,7 +1981,7 @@ func (x *Expression_LambdaFunction) String() string { func (*Expression_LambdaFunction) ProtoMessage() {} func (x *Expression_LambdaFunction) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[17] + mi := &file_spark_connect_expressions_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1952,7 +2023,7 @@ type Expression_UnresolvedNamedLambdaVariable struct { func (x *Expression_UnresolvedNamedLambdaVariable) Reset() { *x = Expression_UnresolvedNamedLambdaVariable{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[18] + mi := &file_spark_connect_expressions_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1965,7 +2036,7 @@ func (x *Expression_UnresolvedNamedLambdaVariable) String() string { func (*Expression_UnresolvedNamedLambdaVariable) ProtoMessage() {} func (x *Expression_UnresolvedNamedLambdaVariable) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[18] + mi := &file_spark_connect_expressions_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2005,7 +2076,7 @@ type Expression_Window_WindowFrame struct { func (x *Expression_Window_WindowFrame) Reset() { *x = Expression_Window_WindowFrame{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[19] + mi := &file_spark_connect_expressions_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2018,7 +2089,7 @@ func (x *Expression_Window_WindowFrame) String() string { func (*Expression_Window_WindowFrame) ProtoMessage() {} func (x *Expression_Window_WindowFrame) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[19] + mi := &file_spark_connect_expressions_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2071,7 +2142,7 @@ type Expression_Window_WindowFrame_FrameBoundary struct { func (x *Expression_Window_WindowFrame_FrameBoundary) Reset() { *x = Expression_Window_WindowFrame_FrameBoundary{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[20] + mi := &file_spark_connect_expressions_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2084,7 +2155,7 @@ func (x *Expression_Window_WindowFrame_FrameBoundary) String() string { func (*Expression_Window_WindowFrame_FrameBoundary) ProtoMessage() {} func (x *Expression_Window_WindowFrame_FrameBoundary) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[20] + mi := &file_spark_connect_expressions_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2175,7 +2246,7 @@ type Expression_Literal_Decimal struct { func (x *Expression_Literal_Decimal) Reset() { *x = Expression_Literal_Decimal{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[21] + mi := &file_spark_connect_expressions_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2188,7 +2259,7 @@ func (x *Expression_Literal_Decimal) String() string { func (*Expression_Literal_Decimal) ProtoMessage() {} func (x *Expression_Literal_Decimal) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[21] + mi := &file_spark_connect_expressions_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2238,7 +2309,7 @@ type Expression_Literal_CalendarInterval struct { func (x *Expression_Literal_CalendarInterval) Reset() { *x = Expression_Literal_CalendarInterval{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[22] + mi := &file_spark_connect_expressions_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2251,7 +2322,7 @@ func (x *Expression_Literal_CalendarInterval) String() string { func (*Expression_Literal_CalendarInterval) ProtoMessage() {} func (x *Expression_Literal_CalendarInterval) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[22] + mi := &file_spark_connect_expressions_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2300,7 +2371,7 @@ type Expression_Literal_Array struct { func (x *Expression_Literal_Array) Reset() { *x = Expression_Literal_Array{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[23] + mi := &file_spark_connect_expressions_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2313,7 +2384,7 @@ func (x *Expression_Literal_Array) String() string { func (*Expression_Literal_Array) ProtoMessage() {} func (x *Expression_Literal_Array) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[23] + mi := &file_spark_connect_expressions_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2357,7 +2428,7 @@ type Expression_Literal_Map struct { func (x *Expression_Literal_Map) Reset() { *x = Expression_Literal_Map{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[24] + mi := &file_spark_connect_expressions_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2370,7 +2441,7 @@ func (x *Expression_Literal_Map) String() string { func (*Expression_Literal_Map) ProtoMessage() {} func (x *Expression_Literal_Map) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[24] + mi := &file_spark_connect_expressions_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2426,7 +2497,7 @@ type Expression_Literal_Struct struct { func (x *Expression_Literal_Struct) Reset() { *x = Expression_Literal_Struct{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_expressions_proto_msgTypes[25] + mi := &file_spark_connect_expressions_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2439,7 +2510,7 @@ func (x *Expression_Literal_Struct) String() string { func (*Expression_Literal_Struct) ProtoMessage() {} func (x *Expression_Literal_Struct) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_expressions_proto_msgTypes[25] + mi := &file_spark_connect_expressions_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2478,7 +2549,7 @@ var file_spark_connect_expressions_proto_rawDesc = []byte{ 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, 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, 0x22, 0x95, 0x2b, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd9, 0x2b, 0x0a, 0x0a, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x07, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 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, @@ -2560,328 +2631,339 @@ var file_spark_connect_expressions_proto_rawDesc = []byte{ 0x69, 0x6e, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x1f, 0x63, 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, 0x12, 0x35, 0x0a, 0x09, 0x65, 0x78, 0x74, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 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, - 0x1a, 0x8f, 0x06, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, 0x42, 0x0a, 0x0f, 0x77, - 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, - 0x0e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x40, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x65, - 0x63, 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, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x70, 0x65, - 0x63, 0x12, 0x42, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, - 0x03, 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, 0x09, 0x6f, 0x72, 0x64, 0x65, - 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4b, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 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, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x57, 0x69, 0x6e, 0x64, - 0x6f, 0x77, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x53, 0x70, - 0x65, 0x63, 0x1a, 0xed, 0x03, 0x0a, 0x0b, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x72, 0x61, - 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 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, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, - 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, - 0x66, 0x72, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, 0x05, 0x6c, 0x6f, 0x77, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, + 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x0d, 0x63, 0x61, 0x6c, + 0x6c, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, + 0x0c, 0x63, 0x61, 0x6c, 0x6c, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, + 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 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, 0x1a, 0x8f, 0x06, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x12, + 0x42, 0x0a, 0x0f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x5f, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 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, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, - 0x77, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x61, 0x72, 0x79, 0x52, 0x05, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x05, 0x75, - 0x70, 0x70, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x73, 0x70, 0x61, + 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x40, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x73, 0x70, 0x65, 0x63, 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, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x53, 0x70, 0x65, 0x63, 0x12, 0x42, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, + 0x70, 0x65, 0x63, 0x18, 0x03, 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, 0x09, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x70, 0x65, 0x63, 0x12, 0x4b, 0x0a, 0x0a, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 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, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, + 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x66, 0x72, 0x61, + 0x6d, 0x65, 0x53, 0x70, 0x65, 0x63, 0x1a, 0xed, 0x03, 0x0a, 0x0b, 0x57, 0x69, 0x6e, 0x64, 0x6f, + 0x77, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x0a, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x36, 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, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x57, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x42, 0x6f, - 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x52, 0x05, 0x75, 0x70, 0x70, 0x65, 0x72, 0x1a, 0x91, 0x01, - 0x0a, 0x0d, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x12, - 0x21, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x6f, 0x77, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x52, - 0x6f, 0x77, 0x12, 0x1e, 0x0a, 0x09, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x65, 0x64, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 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, 0x48, 0x00, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, - 0x79, 0x22, 0x4f, 0x0a, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, - 0x0a, 0x14, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x44, - 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x52, 0x41, 0x4d, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, - 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, - 0x10, 0x02, 0x1a, 0xa9, 0x03, 0x0a, 0x09, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, - 0x12, 0x2f, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 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, 0x05, 0x63, 0x68, 0x69, 0x6c, - 0x64, 0x12, 0x4f, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 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, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x0d, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, - 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 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, 0x2e, 0x4e, - 0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x6e, 0x75, 0x6c, - 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x6c, 0x0a, 0x0d, 0x53, 0x6f, 0x72, - 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x4f, - 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x4f, - 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x53, 0x43, - 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x4f, 0x52, 0x54, - 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x53, 0x43, 0x45, - 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x55, 0x0a, 0x0c, 0x4e, 0x75, 0x6c, 0x6c, 0x4f, - 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x4f, 0x52, 0x54, 0x5f, - 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, - 0x53, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x4f, 0x52, - 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x10, 0x02, 0x1a, 0x91, - 0x01, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 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, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 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, 0x48, 0x00, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x73, 0x74, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x53, - 0x74, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x74, 0x6f, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x1a, 0x9b, 0x0c, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12, 0x2d, - 0x0a, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 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, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 0x12, 0x18, 0x0a, - 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, - 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x07, 0x62, 0x6f, 0x6f, 0x6c, 0x65, - 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x62, 0x6f, 0x6f, 0x6c, - 0x65, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x04, 0x62, 0x79, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x48, 0x00, 0x52, 0x04, 0x62, 0x79, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x73, 0x68, 0x6f, - 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, 0x73, 0x68, 0x6f, 0x72, - 0x74, 0x12, 0x1a, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x05, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, 0x12, 0x14, 0x0a, - 0x04, 0x6c, 0x6f, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x04, 0x6c, - 0x6f, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x02, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x64, - 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x06, 0x64, - 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 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, 0x2e, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, - 0x6c, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, - 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x10, - 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x48, - 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x25, 0x0a, 0x0d, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x74, 0x7a, 0x18, 0x12, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x4e, 0x74, 0x7a, 0x12, 0x61, 0x0a, 0x11, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x5f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, + 0x64, 0x6f, 0x77, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x09, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x50, 0x0a, + 0x05, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 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, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x2e, 0x57, + 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x52, 0x05, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x12, + 0x50, 0x0a, 0x05, 0x75, 0x70, 0x70, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 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, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x48, 0x00, 0x52, 0x10, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x13, 0x79, 0x65, 0x61, 0x72, 0x5f, 0x6d, - 0x6f, 0x6e, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x11, 0x79, 0x65, 0x61, 0x72, 0x4d, 0x6f, 0x6e, 0x74, 0x68, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x11, 0x64, 0x61, 0x79, 0x5f, - 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x15, 0x20, - 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x61, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3f, 0x0a, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x18, - 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, + 0x2e, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x2e, 0x46, 0x72, 0x61, + 0x6d, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x52, 0x05, 0x75, 0x70, 0x70, 0x65, + 0x72, 0x1a, 0x91, 0x01, 0x0a, 0x0d, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x42, 0x6f, 0x75, 0x6e, 0x64, + 0x61, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, + 0x6f, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x52, 0x6f, 0x77, 0x12, 0x1e, 0x0a, 0x09, 0x75, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x75, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 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, - 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x41, 0x72, 0x72, 0x61, 0x79, 0x48, 0x00, - 0x52, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x39, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x17, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 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, 0x2e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, - 0x61, 0x70, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0x18, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 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, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x06, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x1a, 0x75, 0x0a, 0x07, 0x44, 0x65, 0x63, 0x69, 0x6d, 0x61, - 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x09, 0x70, 0x72, - 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x19, 0x0a, 0x05, 0x73, 0x63, - 0x61, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x05, 0x73, 0x63, 0x61, - 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, - 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x1a, 0x62, 0x0a, - 0x10, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x79, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x12, 0x22, 0x0a, - 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x73, 0x1a, 0x82, 0x01, 0x0a, 0x05, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, 0x3a, 0x0a, 0x0c, 0x65, - 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x52, 0x0b, 0x65, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x70, 0x61, 0x72, + 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x61, 0x72, 0x79, 0x22, 0x4f, 0x0a, 0x09, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x44, 0x45, 0x46, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, + 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x57, 0x10, 0x01, + 0x12, 0x14, 0x0a, 0x10, 0x46, 0x52, 0x41, 0x4d, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, + 0x41, 0x4e, 0x47, 0x45, 0x10, 0x02, 0x1a, 0xa9, 0x03, 0x0a, 0x09, 0x53, 0x6f, 0x72, 0x74, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x2f, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 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, 0x05, + 0x63, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x4f, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 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, 0x2e, 0x53, 0x6f, + 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x0d, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 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, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, + 0x0c, 0x6e, 0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x6c, 0x0a, + 0x0d, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, + 0x0a, 0x1a, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, + 0x0a, 0x18, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x41, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, + 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, + 0x45, 0x53, 0x43, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x22, 0x55, 0x0a, 0x0c, 0x4e, + 0x75, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x16, 0x53, + 0x4f, 0x52, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x4f, 0x52, 0x54, 0x5f, + 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x01, 0x12, 0x13, 0x0a, + 0x0f, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4e, 0x55, 0x4c, 0x4c, 0x53, 0x5f, 0x4c, 0x41, 0x53, 0x54, + 0x10, 0x02, 0x1a, 0x91, 0x01, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x65, + 0x78, 0x70, 0x72, 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, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x08, 0x65, 0x6c, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xe3, 0x01, 0x0a, 0x03, 0x4d, 0x61, 0x70, 0x12, 0x32, - 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 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, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x08, 0x74, 0x79, 0x70, + 0x65, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x74, + 0x79, 0x70, 0x65, 0x53, 0x74, 0x72, 0x42, 0x0e, 0x0a, 0x0c, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x74, + 0x6f, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x9b, 0x0c, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, + 0x61, 0x6c, 0x12, 0x2d, 0x0a, 0x04, 0x6e, 0x75, 0x6c, 0x6c, 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, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, - 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, - 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x04, 0x6b, 0x65, - 0x79, 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, 0x04, 0x6b, 0x65, 0x79, - 0x73, 0x12, 0x39, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 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, 0x81, 0x01, 0x0a, - 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 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, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, - 0x42, 0x0e, 0x0a, 0x0c, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x1a, 0x70, 0x0a, 0x13, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 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, 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, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, - 0x69, 0x64, 0x1a, 0xcc, 0x01, 0x0a, 0x12, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 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, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x64, 0x69, - 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, - 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x12, 0x37, 0x0a, 0x18, 0x69, 0x73, 0x5f, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, 0x66, 0x75, 0x6e, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x73, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x1a, 0x32, 0x0a, 0x10, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x52, 0x0a, 0x0e, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, - 0x76, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x12, 0x2c, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x72, - 0x73, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x54, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x75, 0x6e, 0x70, 0x61, 0x72, 0x73, - 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x1a, 0x56, 0x0a, 0x0f, 0x55, 0x6e, 0x72, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x52, 0x65, 0x67, 0x65, 0x78, 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, 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, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, - 0x64, 0x1a, 0x84, 0x01, 0x0a, 0x16, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, - 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x05, - 0x63, 0x68, 0x69, 0x6c, 0x64, 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, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x12, 0x39, 0x0a, - 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 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, 0x0a, 0x65, 0x78, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xbb, 0x01, 0x0a, 0x0c, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x46, 0x0a, 0x11, 0x73, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 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, - 0x10, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x44, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, + 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x75, 0x6c, + 0x6c, 0x12, 0x18, 0x0a, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x48, 0x00, 0x52, 0x06, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x07, 0x62, + 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, + 0x62, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x12, 0x14, 0x0a, 0x04, 0x62, 0x79, 0x74, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x62, 0x79, 0x74, 0x65, 0x12, 0x16, 0x0a, + 0x05, 0x73, 0x68, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x05, + 0x73, 0x68, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x07, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x65, + 0x72, 0x12, 0x14, 0x0a, 0x04, 0x6c, 0x6f, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x00, 0x52, 0x04, 0x6c, 0x6f, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, + 0x18, 0x0a, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x48, + 0x00, 0x52, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x64, 0x65, 0x63, + 0x69, 0x6d, 0x61, 0x6c, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 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, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x45, 0x78, 0x70, 0x72, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x78, 0x0a, 0x05, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, - 0x2d, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x2e, 0x44, 0x65, + 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, + 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x14, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, + 0x12, 0x1e, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x25, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x6e, 0x74, + 0x7a, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x4e, 0x74, 0x7a, 0x12, 0x61, 0x0a, 0x11, 0x63, 0x61, 0x6c, 0x65, 0x6e, + 0x64, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x13, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 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, 0x2e, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x10, 0x63, 0x61, 0x6c, 0x65, 0x6e, 0x64, + 0x61, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x30, 0x0a, 0x13, 0x79, 0x65, + 0x61, 0x72, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x11, 0x79, 0x65, 0x61, 0x72, 0x4d, + 0x6f, 0x6e, 0x74, 0x68, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2c, 0x0a, 0x11, + 0x64, 0x61, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0f, 0x64, 0x61, 0x79, 0x54, 0x69, + 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x3f, 0x0a, 0x05, 0x61, 0x72, + 0x72, 0x61, 0x79, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 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, 0x2e, 0x41, 0x72, 0x72, + 0x61, 0x79, 0x48, 0x00, 0x52, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0x12, 0x39, 0x0a, 0x03, 0x6d, + 0x61, 0x70, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 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, 0x2e, 0x4d, 0x61, 0x70, 0x48, + 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 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, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x1a, 0x75, 0x0a, 0x07, 0x44, 0x65, + 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x09, 0x70, + 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, + 0x52, 0x09, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x19, + 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, + 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x70, 0x72, + 0x65, 0x63, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x63, 0x61, 0x6c, + 0x65, 0x1a, 0x62, 0x0a, 0x10, 0x43, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x61, 0x72, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x79, + 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x65, + 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x1a, 0x82, 0x01, 0x0a, 0x05, 0x41, 0x72, 0x72, 0x61, 0x79, 0x12, + 0x3a, 0x0a, 0x0c, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x52, 0x0b, + 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x52, 0x04, 0x65, 0x78, 0x70, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x1a, 0x9e, 0x01, 0x0a, 0x0e, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x46, 0x75, 0x6e, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, + 0x52, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xe3, 0x01, 0x0a, 0x03, 0x4d, + 0x61, 0x70, 0x12, 0x32, 0x0a, 0x08, 0x6b, 0x65, 0x79, 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, 0x52, 0x07, 0x6b, + 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 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, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, + 0x0a, 0x04, 0x6b, 0x65, 0x79, 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, + 0x04, 0x6b, 0x65, 0x79, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x04, 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, - 0x52, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, 0x0a, 0x09, 0x61, 0x72, - 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 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, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, + 0x2e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x1a, 0x81, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x0b, 0x73, + 0x74, 0x72, 0x75, 0x63, 0x74, 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, 0x52, 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x08, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 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, 0x08, 0x65, 0x6c, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x1a, 0x70, 0x0a, 0x13, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x64, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 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, 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, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, + 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x1a, 0xcc, 0x01, 0x0a, 0x12, 0x55, 0x6e, 0x72, 0x65, 0x73, + 0x6f, 0x6c, 0x76, 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, 0x12, 0x1f, 0x0a, 0x0b, 0x69, + 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x69, 0x73, 0x44, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x12, 0x37, 0x0a, 0x18, + 0x69, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x5f, + 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, + 0x69, 0x73, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x65, 0x64, 0x46, 0x75, 0x6e, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x32, 0x0a, 0x10, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x52, 0x0a, 0x0e, 0x55, 0x6e, 0x72, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x53, 0x74, 0x61, 0x72, 0x12, 0x2c, 0x0a, 0x0f, 0x75, + 0x6e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, + 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x75, 0x6e, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x1a, 0x56, 0x0a, + 0x0f, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x52, 0x65, 0x67, 0x65, 0x78, + 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, 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, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6c, + 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x1a, 0x84, 0x01, 0x0a, 0x16, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, + 0x6c, 0x76, 0x65, 0x64, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x2f, 0x0a, 0x05, 0x63, 0x68, 0x69, 0x6c, 0x64, 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, 0x05, 0x63, 0x68, 0x69, 0x6c, + 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 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, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xbb, 0x01, 0x0a, + 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x46, 0x0a, + 0x11, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 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, 0x10, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x45, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x65, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 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, 0x0f, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x78, 0x0a, 0x05, 0x41, 0x6c, + 0x69, 0x61, 0x73, 0x12, 0x2d, 0x0a, 0x04, 0x65, 0x78, 0x70, 0x72, 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, 0x04, 0x65, 0x78, + 0x70, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x1a, 0x9e, 0x01, 0x0a, 0x0e, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x46, + 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 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, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x55, + 0x0a, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x37, 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, 0x55, 0x6e, 0x72, + 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x61, 0x6d, 0x62, + 0x64, 0x61, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0x3e, 0x0a, 0x1d, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x56, 0x61, - 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x09, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x1a, 0x3e, 0x0a, 0x1d, 0x55, 0x6e, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x64, 0x4e, - 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x61, 0x6d, 0x62, 0x64, 0x61, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, - 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0xec, - 0x02, 0x0a, 0x1f, 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, + 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, + 0x50, 0x61, 0x72, 0x74, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x72, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x22, 0xec, 0x02, 0x0a, 0x1f, 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, 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, 0x39, 0x0a, 0x0a, 0x70, 0x79, + 0x74, 0x68, 0x6f, 0x6e, 0x5f, 0x75, 0x64, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x50, + 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x55, 0x44, 0x46, 0x48, 0x00, 0x52, 0x09, 0x70, 0x79, 0x74, 0x68, + 0x6f, 0x6e, 0x55, 0x64, 0x66, 0x12, 0x49, 0x0a, 0x10, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, + 0x73, 0x63, 0x61, 0x6c, 0x61, 0x5f, 0x75, 0x64, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, + 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x55, 0x44, 0x46, 0x48, 0x00, + 0x52, 0x0e, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x55, 0x64, 0x66, + 0x12, 0x33, 0x0a, 0x08, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x75, 0x64, 0x66, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x2e, 0x4a, 0x61, 0x76, 0x61, 0x55, 0x44, 0x46, 0x48, 0x00, 0x52, 0x07, 0x6a, 0x61, + 0x76, 0x61, 0x55, 0x64, 0x66, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x9b, 0x01, 0x0a, 0x09, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x55, 0x44, 0x46, 0x12, + 0x38, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 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, 0x52, 0x0a, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 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, 0x22, + 0xb8, 0x01, 0x0a, 0x0e, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x55, + 0x44, 0x46, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x37, 0x0a, 0x0a, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 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, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, + 0x79, 0x70, 0x65, 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, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x07, 0x4a, + 0x61, 0x76, 0x61, 0x55, 0x44, 0x46, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 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, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x22, 0x6c, 0x0a, 0x0c, 0x43, 0x61, 0x6c, 0x6c, 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, 0x39, 0x0a, 0x0a, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, - 0x5f, 0x75, 0x64, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x70, 0x61, - 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x50, 0x79, 0x74, 0x68, 0x6f, - 0x6e, 0x55, 0x44, 0x46, 0x48, 0x00, 0x52, 0x09, 0x70, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x55, 0x64, - 0x66, 0x12, 0x49, 0x0a, 0x10, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x63, 0x61, 0x6c, - 0x61, 0x5f, 0x75, 0x64, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x73, 0x70, - 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x53, 0x63, 0x61, 0x6c, - 0x61, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x55, 0x44, 0x46, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x63, - 0x61, 0x6c, 0x61, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x55, 0x64, 0x66, 0x12, 0x33, 0x0a, 0x08, - 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x75, 0x64, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x2e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x2e, 0x4a, - 0x61, 0x76, 0x61, 0x55, 0x44, 0x46, 0x48, 0x00, 0x52, 0x07, 0x6a, 0x61, 0x76, 0x61, 0x55, 0x64, - 0x66, 0x42, 0x0a, 0x0a, 0x08, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x9b, 0x01, - 0x0a, 0x09, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x55, 0x44, 0x46, 0x12, 0x38, 0x0a, 0x0b, 0x6f, - 0x75, 0x74, 0x70, 0x75, 0x74, 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, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x54, 0x79, 0x70, 0x65, 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, 0x22, 0xb8, 0x01, 0x0a, 0x0e, - 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x55, 0x44, 0x46, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x37, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x54, 0x79, 0x70, 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, 0x44, 0x61, 0x74, - 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x73, 0x12, 0x37, 0x0a, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 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, 0x52, 0x0a, - 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, - 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x75, - 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x07, 0x4a, 0x61, 0x76, 0x61, 0x55, - 0x44, 0x46, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x3d, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, - 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, 0x48, - 0x00, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x42, 0x0e, - 0x0a, 0x0c, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 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, + 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, + 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 ( @@ -2897,7 +2979,7 @@ func file_spark_connect_expressions_proto_rawDescGZIP() []byte { } var file_spark_connect_expressions_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_spark_connect_expressions_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_spark_connect_expressions_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_spark_connect_expressions_proto_goTypes = []interface{}{ (Expression_Window_WindowFrame_FrameType)(0), // 0: spark.connect.Expression.Window.WindowFrame.FrameType (Expression_SortOrder_SortDirection)(0), // 1: spark.connect.Expression.SortOrder.SortDirection @@ -2907,95 +2989,98 @@ var file_spark_connect_expressions_proto_goTypes = []interface{}{ (*PythonUDF)(nil), // 5: spark.connect.PythonUDF (*ScalarScalaUDF)(nil), // 6: spark.connect.ScalarScalaUDF (*JavaUDF)(nil), // 7: spark.connect.JavaUDF - (*Expression_Window)(nil), // 8: spark.connect.Expression.Window - (*Expression_SortOrder)(nil), // 9: spark.connect.Expression.SortOrder - (*Expression_Cast)(nil), // 10: spark.connect.Expression.Cast - (*Expression_Literal)(nil), // 11: spark.connect.Expression.Literal - (*Expression_UnresolvedAttribute)(nil), // 12: spark.connect.Expression.UnresolvedAttribute - (*Expression_UnresolvedFunction)(nil), // 13: spark.connect.Expression.UnresolvedFunction - (*Expression_ExpressionString)(nil), // 14: spark.connect.Expression.ExpressionString - (*Expression_UnresolvedStar)(nil), // 15: spark.connect.Expression.UnresolvedStar - (*Expression_UnresolvedRegex)(nil), // 16: spark.connect.Expression.UnresolvedRegex - (*Expression_UnresolvedExtractValue)(nil), // 17: spark.connect.Expression.UnresolvedExtractValue - (*Expression_UpdateFields)(nil), // 18: spark.connect.Expression.UpdateFields - (*Expression_Alias)(nil), // 19: spark.connect.Expression.Alias - (*Expression_LambdaFunction)(nil), // 20: spark.connect.Expression.LambdaFunction - (*Expression_UnresolvedNamedLambdaVariable)(nil), // 21: spark.connect.Expression.UnresolvedNamedLambdaVariable - (*Expression_Window_WindowFrame)(nil), // 22: spark.connect.Expression.Window.WindowFrame - (*Expression_Window_WindowFrame_FrameBoundary)(nil), // 23: spark.connect.Expression.Window.WindowFrame.FrameBoundary - (*Expression_Literal_Decimal)(nil), // 24: spark.connect.Expression.Literal.Decimal - (*Expression_Literal_CalendarInterval)(nil), // 25: spark.connect.Expression.Literal.CalendarInterval - (*Expression_Literal_Array)(nil), // 26: spark.connect.Expression.Literal.Array - (*Expression_Literal_Map)(nil), // 27: spark.connect.Expression.Literal.Map - (*Expression_Literal_Struct)(nil), // 28: spark.connect.Expression.Literal.Struct - (*anypb.Any)(nil), // 29: google.protobuf.Any - (*DataType)(nil), // 30: spark.connect.DataType + (*CallFunction)(nil), // 8: spark.connect.CallFunction + (*Expression_Window)(nil), // 9: spark.connect.Expression.Window + (*Expression_SortOrder)(nil), // 10: spark.connect.Expression.SortOrder + (*Expression_Cast)(nil), // 11: spark.connect.Expression.Cast + (*Expression_Literal)(nil), // 12: spark.connect.Expression.Literal + (*Expression_UnresolvedAttribute)(nil), // 13: spark.connect.Expression.UnresolvedAttribute + (*Expression_UnresolvedFunction)(nil), // 14: spark.connect.Expression.UnresolvedFunction + (*Expression_ExpressionString)(nil), // 15: spark.connect.Expression.ExpressionString + (*Expression_UnresolvedStar)(nil), // 16: spark.connect.Expression.UnresolvedStar + (*Expression_UnresolvedRegex)(nil), // 17: spark.connect.Expression.UnresolvedRegex + (*Expression_UnresolvedExtractValue)(nil), // 18: spark.connect.Expression.UnresolvedExtractValue + (*Expression_UpdateFields)(nil), // 19: spark.connect.Expression.UpdateFields + (*Expression_Alias)(nil), // 20: spark.connect.Expression.Alias + (*Expression_LambdaFunction)(nil), // 21: spark.connect.Expression.LambdaFunction + (*Expression_UnresolvedNamedLambdaVariable)(nil), // 22: spark.connect.Expression.UnresolvedNamedLambdaVariable + (*Expression_Window_WindowFrame)(nil), // 23: spark.connect.Expression.Window.WindowFrame + (*Expression_Window_WindowFrame_FrameBoundary)(nil), // 24: spark.connect.Expression.Window.WindowFrame.FrameBoundary + (*Expression_Literal_Decimal)(nil), // 25: spark.connect.Expression.Literal.Decimal + (*Expression_Literal_CalendarInterval)(nil), // 26: spark.connect.Expression.Literal.CalendarInterval + (*Expression_Literal_Array)(nil), // 27: spark.connect.Expression.Literal.Array + (*Expression_Literal_Map)(nil), // 28: spark.connect.Expression.Literal.Map + (*Expression_Literal_Struct)(nil), // 29: spark.connect.Expression.Literal.Struct + (*anypb.Any)(nil), // 30: google.protobuf.Any + (*DataType)(nil), // 31: spark.connect.DataType } var file_spark_connect_expressions_proto_depIdxs = []int32{ - 11, // 0: spark.connect.Expression.literal:type_name -> spark.connect.Expression.Literal - 12, // 1: spark.connect.Expression.unresolved_attribute:type_name -> spark.connect.Expression.UnresolvedAttribute - 13, // 2: spark.connect.Expression.unresolved_function:type_name -> spark.connect.Expression.UnresolvedFunction - 14, // 3: spark.connect.Expression.expression_string:type_name -> spark.connect.Expression.ExpressionString - 15, // 4: spark.connect.Expression.unresolved_star:type_name -> spark.connect.Expression.UnresolvedStar - 19, // 5: spark.connect.Expression.alias:type_name -> spark.connect.Expression.Alias - 10, // 6: spark.connect.Expression.cast:type_name -> spark.connect.Expression.Cast - 16, // 7: spark.connect.Expression.unresolved_regex:type_name -> spark.connect.Expression.UnresolvedRegex - 9, // 8: spark.connect.Expression.sort_order:type_name -> spark.connect.Expression.SortOrder - 20, // 9: spark.connect.Expression.lambda_function:type_name -> spark.connect.Expression.LambdaFunction - 8, // 10: spark.connect.Expression.window:type_name -> spark.connect.Expression.Window - 17, // 11: spark.connect.Expression.unresolved_extract_value:type_name -> spark.connect.Expression.UnresolvedExtractValue - 18, // 12: spark.connect.Expression.update_fields:type_name -> spark.connect.Expression.UpdateFields - 21, // 13: spark.connect.Expression.unresolved_named_lambda_variable:type_name -> spark.connect.Expression.UnresolvedNamedLambdaVariable + 12, // 0: spark.connect.Expression.literal:type_name -> spark.connect.Expression.Literal + 13, // 1: spark.connect.Expression.unresolved_attribute:type_name -> spark.connect.Expression.UnresolvedAttribute + 14, // 2: spark.connect.Expression.unresolved_function:type_name -> spark.connect.Expression.UnresolvedFunction + 15, // 3: spark.connect.Expression.expression_string:type_name -> spark.connect.Expression.ExpressionString + 16, // 4: spark.connect.Expression.unresolved_star:type_name -> spark.connect.Expression.UnresolvedStar + 20, // 5: spark.connect.Expression.alias:type_name -> spark.connect.Expression.Alias + 11, // 6: spark.connect.Expression.cast:type_name -> spark.connect.Expression.Cast + 17, // 7: spark.connect.Expression.unresolved_regex:type_name -> spark.connect.Expression.UnresolvedRegex + 10, // 8: spark.connect.Expression.sort_order:type_name -> spark.connect.Expression.SortOrder + 21, // 9: spark.connect.Expression.lambda_function:type_name -> spark.connect.Expression.LambdaFunction + 9, // 10: spark.connect.Expression.window:type_name -> spark.connect.Expression.Window + 18, // 11: spark.connect.Expression.unresolved_extract_value:type_name -> spark.connect.Expression.UnresolvedExtractValue + 19, // 12: spark.connect.Expression.update_fields:type_name -> spark.connect.Expression.UpdateFields + 22, // 13: spark.connect.Expression.unresolved_named_lambda_variable:type_name -> spark.connect.Expression.UnresolvedNamedLambdaVariable 4, // 14: spark.connect.Expression.common_inline_user_defined_function:type_name -> spark.connect.CommonInlineUserDefinedFunction - 29, // 15: spark.connect.Expression.extension:type_name -> google.protobuf.Any - 3, // 16: spark.connect.CommonInlineUserDefinedFunction.arguments:type_name -> spark.connect.Expression - 5, // 17: spark.connect.CommonInlineUserDefinedFunction.python_udf:type_name -> spark.connect.PythonUDF - 6, // 18: spark.connect.CommonInlineUserDefinedFunction.scalar_scala_udf:type_name -> spark.connect.ScalarScalaUDF - 7, // 19: spark.connect.CommonInlineUserDefinedFunction.java_udf:type_name -> spark.connect.JavaUDF - 30, // 20: spark.connect.PythonUDF.output_type:type_name -> spark.connect.DataType - 30, // 21: spark.connect.ScalarScalaUDF.inputTypes:type_name -> spark.connect.DataType - 30, // 22: spark.connect.ScalarScalaUDF.outputType:type_name -> spark.connect.DataType - 30, // 23: spark.connect.JavaUDF.output_type:type_name -> spark.connect.DataType - 3, // 24: spark.connect.Expression.Window.window_function:type_name -> spark.connect.Expression - 3, // 25: spark.connect.Expression.Window.partition_spec:type_name -> spark.connect.Expression - 9, // 26: spark.connect.Expression.Window.order_spec:type_name -> spark.connect.Expression.SortOrder - 22, // 27: spark.connect.Expression.Window.frame_spec:type_name -> spark.connect.Expression.Window.WindowFrame - 3, // 28: spark.connect.Expression.SortOrder.child:type_name -> spark.connect.Expression - 1, // 29: spark.connect.Expression.SortOrder.direction:type_name -> spark.connect.Expression.SortOrder.SortDirection - 2, // 30: spark.connect.Expression.SortOrder.null_ordering:type_name -> spark.connect.Expression.SortOrder.NullOrdering - 3, // 31: spark.connect.Expression.Cast.expr:type_name -> spark.connect.Expression - 30, // 32: spark.connect.Expression.Cast.type:type_name -> spark.connect.DataType - 30, // 33: spark.connect.Expression.Literal.null:type_name -> spark.connect.DataType - 24, // 34: spark.connect.Expression.Literal.decimal:type_name -> spark.connect.Expression.Literal.Decimal - 25, // 35: spark.connect.Expression.Literal.calendar_interval:type_name -> spark.connect.Expression.Literal.CalendarInterval - 26, // 36: spark.connect.Expression.Literal.array:type_name -> spark.connect.Expression.Literal.Array - 27, // 37: spark.connect.Expression.Literal.map:type_name -> spark.connect.Expression.Literal.Map - 28, // 38: spark.connect.Expression.Literal.struct:type_name -> spark.connect.Expression.Literal.Struct - 3, // 39: spark.connect.Expression.UnresolvedFunction.arguments:type_name -> spark.connect.Expression - 3, // 40: spark.connect.Expression.UnresolvedExtractValue.child:type_name -> spark.connect.Expression - 3, // 41: spark.connect.Expression.UnresolvedExtractValue.extraction:type_name -> spark.connect.Expression - 3, // 42: spark.connect.Expression.UpdateFields.struct_expression:type_name -> spark.connect.Expression - 3, // 43: spark.connect.Expression.UpdateFields.value_expression:type_name -> spark.connect.Expression - 3, // 44: spark.connect.Expression.Alias.expr:type_name -> spark.connect.Expression - 3, // 45: spark.connect.Expression.LambdaFunction.function:type_name -> spark.connect.Expression - 21, // 46: spark.connect.Expression.LambdaFunction.arguments:type_name -> spark.connect.Expression.UnresolvedNamedLambdaVariable - 0, // 47: spark.connect.Expression.Window.WindowFrame.frame_type:type_name -> spark.connect.Expression.Window.WindowFrame.FrameType - 23, // 48: spark.connect.Expression.Window.WindowFrame.lower:type_name -> spark.connect.Expression.Window.WindowFrame.FrameBoundary - 23, // 49: spark.connect.Expression.Window.WindowFrame.upper:type_name -> spark.connect.Expression.Window.WindowFrame.FrameBoundary - 3, // 50: spark.connect.Expression.Window.WindowFrame.FrameBoundary.value:type_name -> spark.connect.Expression - 30, // 51: spark.connect.Expression.Literal.Array.element_type:type_name -> spark.connect.DataType - 11, // 52: spark.connect.Expression.Literal.Array.elements:type_name -> spark.connect.Expression.Literal - 30, // 53: spark.connect.Expression.Literal.Map.key_type:type_name -> spark.connect.DataType - 30, // 54: spark.connect.Expression.Literal.Map.value_type:type_name -> spark.connect.DataType - 11, // 55: spark.connect.Expression.Literal.Map.keys:type_name -> spark.connect.Expression.Literal - 11, // 56: spark.connect.Expression.Literal.Map.values:type_name -> spark.connect.Expression.Literal - 30, // 57: spark.connect.Expression.Literal.Struct.struct_type:type_name -> spark.connect.DataType - 11, // 58: spark.connect.Expression.Literal.Struct.elements:type_name -> spark.connect.Expression.Literal - 59, // [59:59] is the sub-list for method output_type - 59, // [59:59] is the sub-list for method input_type - 59, // [59:59] is the sub-list for extension type_name - 59, // [59:59] is the sub-list for extension extendee - 0, // [0:59] is the sub-list for field type_name + 8, // 15: spark.connect.Expression.call_function:type_name -> spark.connect.CallFunction + 30, // 16: spark.connect.Expression.extension:type_name -> google.protobuf.Any + 3, // 17: spark.connect.CommonInlineUserDefinedFunction.arguments:type_name -> spark.connect.Expression + 5, // 18: spark.connect.CommonInlineUserDefinedFunction.python_udf:type_name -> spark.connect.PythonUDF + 6, // 19: spark.connect.CommonInlineUserDefinedFunction.scalar_scala_udf:type_name -> spark.connect.ScalarScalaUDF + 7, // 20: spark.connect.CommonInlineUserDefinedFunction.java_udf:type_name -> spark.connect.JavaUDF + 31, // 21: spark.connect.PythonUDF.output_type:type_name -> spark.connect.DataType + 31, // 22: spark.connect.ScalarScalaUDF.inputTypes:type_name -> spark.connect.DataType + 31, // 23: spark.connect.ScalarScalaUDF.outputType:type_name -> spark.connect.DataType + 31, // 24: spark.connect.JavaUDF.output_type:type_name -> spark.connect.DataType + 3, // 25: spark.connect.CallFunction.arguments:type_name -> spark.connect.Expression + 3, // 26: spark.connect.Expression.Window.window_function:type_name -> spark.connect.Expression + 3, // 27: spark.connect.Expression.Window.partition_spec:type_name -> spark.connect.Expression + 10, // 28: spark.connect.Expression.Window.order_spec:type_name -> spark.connect.Expression.SortOrder + 23, // 29: spark.connect.Expression.Window.frame_spec:type_name -> spark.connect.Expression.Window.WindowFrame + 3, // 30: spark.connect.Expression.SortOrder.child:type_name -> spark.connect.Expression + 1, // 31: spark.connect.Expression.SortOrder.direction:type_name -> spark.connect.Expression.SortOrder.SortDirection + 2, // 32: spark.connect.Expression.SortOrder.null_ordering:type_name -> spark.connect.Expression.SortOrder.NullOrdering + 3, // 33: spark.connect.Expression.Cast.expr:type_name -> spark.connect.Expression + 31, // 34: spark.connect.Expression.Cast.type:type_name -> spark.connect.DataType + 31, // 35: spark.connect.Expression.Literal.null:type_name -> spark.connect.DataType + 25, // 36: spark.connect.Expression.Literal.decimal:type_name -> spark.connect.Expression.Literal.Decimal + 26, // 37: spark.connect.Expression.Literal.calendar_interval:type_name -> spark.connect.Expression.Literal.CalendarInterval + 27, // 38: spark.connect.Expression.Literal.array:type_name -> spark.connect.Expression.Literal.Array + 28, // 39: spark.connect.Expression.Literal.map:type_name -> spark.connect.Expression.Literal.Map + 29, // 40: spark.connect.Expression.Literal.struct:type_name -> spark.connect.Expression.Literal.Struct + 3, // 41: spark.connect.Expression.UnresolvedFunction.arguments:type_name -> spark.connect.Expression + 3, // 42: spark.connect.Expression.UnresolvedExtractValue.child:type_name -> spark.connect.Expression + 3, // 43: spark.connect.Expression.UnresolvedExtractValue.extraction:type_name -> spark.connect.Expression + 3, // 44: spark.connect.Expression.UpdateFields.struct_expression:type_name -> spark.connect.Expression + 3, // 45: spark.connect.Expression.UpdateFields.value_expression:type_name -> spark.connect.Expression + 3, // 46: spark.connect.Expression.Alias.expr:type_name -> spark.connect.Expression + 3, // 47: spark.connect.Expression.LambdaFunction.function:type_name -> spark.connect.Expression + 22, // 48: spark.connect.Expression.LambdaFunction.arguments:type_name -> spark.connect.Expression.UnresolvedNamedLambdaVariable + 0, // 49: spark.connect.Expression.Window.WindowFrame.frame_type:type_name -> spark.connect.Expression.Window.WindowFrame.FrameType + 24, // 50: spark.connect.Expression.Window.WindowFrame.lower:type_name -> spark.connect.Expression.Window.WindowFrame.FrameBoundary + 24, // 51: spark.connect.Expression.Window.WindowFrame.upper:type_name -> spark.connect.Expression.Window.WindowFrame.FrameBoundary + 3, // 52: spark.connect.Expression.Window.WindowFrame.FrameBoundary.value:type_name -> spark.connect.Expression + 31, // 53: spark.connect.Expression.Literal.Array.element_type:type_name -> spark.connect.DataType + 12, // 54: spark.connect.Expression.Literal.Array.elements:type_name -> spark.connect.Expression.Literal + 31, // 55: spark.connect.Expression.Literal.Map.key_type:type_name -> spark.connect.DataType + 31, // 56: spark.connect.Expression.Literal.Map.value_type:type_name -> spark.connect.DataType + 12, // 57: spark.connect.Expression.Literal.Map.keys:type_name -> spark.connect.Expression.Literal + 12, // 58: spark.connect.Expression.Literal.Map.values:type_name -> spark.connect.Expression.Literal + 31, // 59: spark.connect.Expression.Literal.Struct.struct_type:type_name -> spark.connect.DataType + 12, // 60: spark.connect.Expression.Literal.Struct.elements:type_name -> spark.connect.Expression.Literal + 61, // [61:61] is the sub-list for method output_type + 61, // [61:61] is the sub-list for method input_type + 61, // [61:61] is the sub-list for extension type_name + 61, // [61:61] is the sub-list for extension extendee + 0, // [0:61] is the sub-list for field type_name } func init() { file_spark_connect_expressions_proto_init() } @@ -3066,7 +3151,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Window); i { + switch v := v.(*CallFunction); i { case 0: return &v.state case 1: @@ -3078,7 +3163,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_SortOrder); i { + switch v := v.(*Expression_Window); i { case 0: return &v.state case 1: @@ -3090,7 +3175,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Cast); i { + switch v := v.(*Expression_SortOrder); i { case 0: return &v.state case 1: @@ -3102,7 +3187,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Literal); i { + switch v := v.(*Expression_Cast); i { case 0: return &v.state case 1: @@ -3114,7 +3199,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_UnresolvedAttribute); i { + switch v := v.(*Expression_Literal); i { case 0: return &v.state case 1: @@ -3126,7 +3211,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_UnresolvedFunction); i { + switch v := v.(*Expression_UnresolvedAttribute); i { case 0: return &v.state case 1: @@ -3138,7 +3223,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_ExpressionString); i { + switch v := v.(*Expression_UnresolvedFunction); i { case 0: return &v.state case 1: @@ -3150,7 +3235,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_UnresolvedStar); i { + switch v := v.(*Expression_ExpressionString); i { case 0: return &v.state case 1: @@ -3162,7 +3247,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_UnresolvedRegex); i { + switch v := v.(*Expression_UnresolvedStar); i { case 0: return &v.state case 1: @@ -3174,7 +3259,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_UnresolvedExtractValue); i { + switch v := v.(*Expression_UnresolvedRegex); i { case 0: return &v.state case 1: @@ -3186,7 +3271,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_UpdateFields); i { + switch v := v.(*Expression_UnresolvedExtractValue); i { case 0: return &v.state case 1: @@ -3198,7 +3283,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Alias); i { + switch v := v.(*Expression_UpdateFields); i { case 0: return &v.state case 1: @@ -3210,7 +3295,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_LambdaFunction); i { + switch v := v.(*Expression_Alias); i { case 0: return &v.state case 1: @@ -3222,7 +3307,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_UnresolvedNamedLambdaVariable); i { + switch v := v.(*Expression_LambdaFunction); i { case 0: return &v.state case 1: @@ -3234,7 +3319,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Window_WindowFrame); i { + switch v := v.(*Expression_UnresolvedNamedLambdaVariable); i { case 0: return &v.state case 1: @@ -3246,7 +3331,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Window_WindowFrame_FrameBoundary); i { + switch v := v.(*Expression_Window_WindowFrame); i { case 0: return &v.state case 1: @@ -3258,7 +3343,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Literal_Decimal); i { + switch v := v.(*Expression_Window_WindowFrame_FrameBoundary); i { case 0: return &v.state case 1: @@ -3270,7 +3355,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Literal_CalendarInterval); i { + switch v := v.(*Expression_Literal_Decimal); i { case 0: return &v.state case 1: @@ -3282,7 +3367,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Literal_Array); i { + switch v := v.(*Expression_Literal_CalendarInterval); i { case 0: return &v.state case 1: @@ -3294,7 +3379,7 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Expression_Literal_Map); i { + switch v := v.(*Expression_Literal_Array); i { case 0: return &v.state case 1: @@ -3306,6 +3391,18 @@ func file_spark_connect_expressions_proto_init() { } } file_spark_connect_expressions_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Expression_Literal_Map); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_spark_connect_expressions_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Expression_Literal_Struct); i { case 0: return &v.state @@ -3334,6 +3431,7 @@ func file_spark_connect_expressions_proto_init() { (*Expression_UpdateFields_)(nil), (*Expression_UnresolvedNamedLambdaVariable_)(nil), (*Expression_CommonInlineUserDefinedFunction)(nil), + (*Expression_CallFunction)(nil), (*Expression_Extension)(nil), } file_spark_connect_expressions_proto_msgTypes[1].OneofWrappers = []interface{}{ @@ -3342,11 +3440,11 @@ func file_spark_connect_expressions_proto_init() { (*CommonInlineUserDefinedFunction_JavaUdf)(nil), } file_spark_connect_expressions_proto_msgTypes[4].OneofWrappers = []interface{}{} - file_spark_connect_expressions_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_spark_connect_expressions_proto_msgTypes[8].OneofWrappers = []interface{}{ (*Expression_Cast_Type)(nil), (*Expression_Cast_TypeStr)(nil), } - file_spark_connect_expressions_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_spark_connect_expressions_proto_msgTypes[9].OneofWrappers = []interface{}{ (*Expression_Literal_Null)(nil), (*Expression_Literal_Binary)(nil), (*Expression_Literal_Boolean)(nil), @@ -3368,23 +3466,23 @@ func file_spark_connect_expressions_proto_init() { (*Expression_Literal_Map_)(nil), (*Expression_Literal_Struct_)(nil), } - file_spark_connect_expressions_proto_msgTypes[9].OneofWrappers = []interface{}{} - file_spark_connect_expressions_proto_msgTypes[12].OneofWrappers = []interface{}{} + file_spark_connect_expressions_proto_msgTypes[10].OneofWrappers = []interface{}{} file_spark_connect_expressions_proto_msgTypes[13].OneofWrappers = []interface{}{} - file_spark_connect_expressions_proto_msgTypes[16].OneofWrappers = []interface{}{} - file_spark_connect_expressions_proto_msgTypes[20].OneofWrappers = []interface{}{ + file_spark_connect_expressions_proto_msgTypes[14].OneofWrappers = []interface{}{} + file_spark_connect_expressions_proto_msgTypes[17].OneofWrappers = []interface{}{} + file_spark_connect_expressions_proto_msgTypes[21].OneofWrappers = []interface{}{ (*Expression_Window_WindowFrame_FrameBoundary_CurrentRow)(nil), (*Expression_Window_WindowFrame_FrameBoundary_Unbounded)(nil), (*Expression_Window_WindowFrame_FrameBoundary_Value)(nil), } - file_spark_connect_expressions_proto_msgTypes[21].OneofWrappers = []interface{}{} + file_spark_connect_expressions_proto_msgTypes[22].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_spark_connect_expressions_proto_rawDesc, NumEnums: 3, - NumMessages: 26, + NumMessages: 27, NumExtensions: 0, NumServices: 0, }, diff --git a/internal/generated/relations.pb.go b/internal/generated/relations.pb.go index fb2db27..2cc41d6 100644 --- a/internal/generated/relations.pb.go +++ b/internal/generated/relations.pb.go @@ -254,7 +254,7 @@ func (x Parse_ParseFormat) Number() protoreflect.EnumNumber { // Deprecated: Use Parse_ParseFormat.Descriptor instead. func (Parse_ParseFormat) EnumDescriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{48, 0} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{51, 0} } // The main [[Relation]] type. Fundamentally, a relation is a typed container @@ -304,6 +304,8 @@ type Relation struct { // *Relation_ApplyInPandasWithState // *Relation_HtmlString // *Relation_CachedLocalRelation + // *Relation_CachedRemoteRelation + // *Relation_CommonInlineUserDefinedTableFunction // *Relation_FillNa // *Relation_DropNa // *Relation_Replace @@ -612,6 +614,20 @@ func (x *Relation) GetCachedLocalRelation() *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) GetFillNa() *NAFill { if x, ok := x.GetRelType().(*Relation_FillNa); ok { return x.FillNa @@ -854,6 +870,14 @@ 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_FillNa struct { // NA functions FillNa *NAFill `protobuf:"bytes,90,opt,name=fill_na,json=fillNa,proto3,oneof"` @@ -985,6 +1009,10 @@ func (*Relation_HtmlString) isRelation_RelType() {} func (*Relation_CachedLocalRelation) isRelation_RelType() {} +func (*Relation_CachedRemoteRelation) isRelation_RelType() {} + +func (*Relation_CommonInlineUserDefinedTableFunction) isRelation_RelType() {} + func (*Relation_FillNa) isRelation_RelType() {} func (*Relation_DropNa) isRelation_RelType() {} @@ -1120,6 +1148,8 @@ type SQL struct { Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` // (Optional) A map of parameter names to literal expressions. 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. + PosArgs []*Expression_Literal `protobuf:"bytes,3,rep,name=pos_args,json=posArgs,proto3" json:"pos_args,omitempty"` } func (x *SQL) Reset() { @@ -1168,6 +1198,13 @@ func (x *SQL) GetArgs() map[string]*Expression_Literal { return nil } +func (x *SQL) GetPosArgs() []*Expression_Literal { + if x != nil { + return x.PosArgs + } + return nil +} + // Relation that reads from a file / table or other data source. Does not have additional // inputs. type Read struct { @@ -1406,6 +1443,8 @@ type Join struct { // // 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() { @@ -1475,6 +1514,13 @@ func (x *Join) GetUsingColumns() []string { 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 @@ -2120,10 +2166,6 @@ type CachedLocalRelation struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // (Required) An identifier of the user which created the local relation - UserId string `protobuf:"bytes,1,opt,name=userId,proto3" json:"userId,omitempty"` - // (Required) An identifier of the Spark SQL session in which the user created the local relation. - SessionId string `protobuf:"bytes,2,opt,name=sessionId,proto3" json:"sessionId,omitempty"` // (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"` } @@ -2160,23 +2202,58 @@ func (*CachedLocalRelation) Descriptor() ([]byte, []int) { return file_spark_connect_relations_proto_rawDescGZIP(), []int{17} } -func (x *CachedLocalRelation) GetUserId() string { +func (x *CachedLocalRelation) GetHash() string { if x != nil { - return x.UserId + return x.Hash } return "" } -func (x *CachedLocalRelation) GetSessionId() string { - if x != nil { - return x.SessionId +// 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[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } - return "" } -func (x *CachedLocalRelation) GetHash() string { +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[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 CachedRemoteRelation.ProtoReflect.Descriptor instead. +func (*CachedRemoteRelation) Descriptor() ([]byte, []int) { + return file_spark_connect_relations_proto_rawDescGZIP(), []int{18} +} + +func (x *CachedRemoteRelation) GetRelationId() string { if x != nil { - return x.Hash + return x.RelationId } return "" } @@ -2206,7 +2283,7 @@ type Sample struct { func (x *Sample) Reset() { *x = Sample{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[18] + mi := &file_spark_connect_relations_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2219,7 +2296,7 @@ func (x *Sample) String() string { func (*Sample) ProtoMessage() {} func (x *Sample) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[18] + mi := &file_spark_connect_relations_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2232,7 +2309,7 @@ func (x *Sample) ProtoReflect() protoreflect.Message { // Deprecated: Use Sample.ProtoReflect.Descriptor instead. func (*Sample) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{18} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{19} } func (x *Sample) GetInput() *Relation { @@ -2297,7 +2374,7 @@ type Range struct { func (x *Range) Reset() { *x = Range{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[19] + mi := &file_spark_connect_relations_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2310,7 +2387,7 @@ func (x *Range) String() string { func (*Range) ProtoMessage() {} func (x *Range) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[19] + mi := &file_spark_connect_relations_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2323,7 +2400,7 @@ func (x *Range) ProtoReflect() protoreflect.Message { // Deprecated: Use Range.ProtoReflect.Descriptor instead. func (*Range) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{19} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{20} } func (x *Range) GetStart() int64 { @@ -2371,7 +2448,7 @@ type SubqueryAlias struct { func (x *SubqueryAlias) Reset() { *x = SubqueryAlias{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[20] + mi := &file_spark_connect_relations_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2384,7 +2461,7 @@ func (x *SubqueryAlias) String() string { func (*SubqueryAlias) ProtoMessage() {} func (x *SubqueryAlias) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[20] + mi := &file_spark_connect_relations_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2397,7 +2474,7 @@ func (x *SubqueryAlias) ProtoReflect() protoreflect.Message { // Deprecated: Use SubqueryAlias.ProtoReflect.Descriptor instead. func (*SubqueryAlias) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{20} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{21} } func (x *SubqueryAlias) GetInput() *Relation { @@ -2438,7 +2515,7 @@ type Repartition struct { func (x *Repartition) Reset() { *x = Repartition{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[21] + mi := &file_spark_connect_relations_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2451,7 +2528,7 @@ func (x *Repartition) String() string { func (*Repartition) ProtoMessage() {} func (x *Repartition) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[21] + mi := &file_spark_connect_relations_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2464,7 +2541,7 @@ func (x *Repartition) ProtoReflect() protoreflect.Message { // Deprecated: Use Repartition.ProtoReflect.Descriptor instead. func (*Repartition) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{21} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{22} } func (x *Repartition) GetInput() *Relation { @@ -2509,7 +2586,7 @@ type ShowString struct { func (x *ShowString) Reset() { *x = ShowString{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[22] + mi := &file_spark_connect_relations_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2522,7 +2599,7 @@ func (x *ShowString) String() string { func (*ShowString) ProtoMessage() {} func (x *ShowString) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[22] + mi := &file_spark_connect_relations_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2535,7 +2612,7 @@ func (x *ShowString) ProtoReflect() protoreflect.Message { // Deprecated: Use ShowString.ProtoReflect.Descriptor instead. func (*ShowString) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{22} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{23} } func (x *ShowString) GetInput() *Relation { @@ -2585,7 +2662,7 @@ type HtmlString struct { func (x *HtmlString) Reset() { *x = HtmlString{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[23] + mi := &file_spark_connect_relations_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2598,7 +2675,7 @@ func (x *HtmlString) String() string { func (*HtmlString) ProtoMessage() {} func (x *HtmlString) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[23] + mi := &file_spark_connect_relations_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2611,7 +2688,7 @@ func (x *HtmlString) ProtoReflect() protoreflect.Message { // Deprecated: Use HtmlString.ProtoReflect.Descriptor instead. func (*HtmlString) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{23} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{24} } func (x *HtmlString) GetInput() *Relation { @@ -2666,7 +2743,7 @@ type StatSummary struct { func (x *StatSummary) Reset() { *x = StatSummary{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[24] + mi := &file_spark_connect_relations_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2679,7 +2756,7 @@ func (x *StatSummary) String() string { func (*StatSummary) ProtoMessage() {} func (x *StatSummary) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[24] + mi := &file_spark_connect_relations_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2692,7 +2769,7 @@ func (x *StatSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use StatSummary.ProtoReflect.Descriptor instead. func (*StatSummary) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{24} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{25} } func (x *StatSummary) GetInput() *Relation { @@ -2726,7 +2803,7 @@ type StatDescribe struct { func (x *StatDescribe) Reset() { *x = StatDescribe{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[25] + mi := &file_spark_connect_relations_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2739,7 +2816,7 @@ func (x *StatDescribe) String() string { func (*StatDescribe) ProtoMessage() {} func (x *StatDescribe) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[25] + mi := &file_spark_connect_relations_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2752,7 +2829,7 @@ func (x *StatDescribe) ProtoReflect() protoreflect.Message { // Deprecated: Use StatDescribe.ProtoReflect.Descriptor instead. func (*StatDescribe) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{25} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{26} } func (x *StatDescribe) GetInput() *Relation { @@ -2792,7 +2869,7 @@ type StatCrosstab struct { func (x *StatCrosstab) Reset() { *x = StatCrosstab{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[26] + mi := &file_spark_connect_relations_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2805,7 +2882,7 @@ func (x *StatCrosstab) String() string { func (*StatCrosstab) ProtoMessage() {} func (x *StatCrosstab) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[26] + mi := &file_spark_connect_relations_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2818,7 +2895,7 @@ func (x *StatCrosstab) ProtoReflect() protoreflect.Message { // Deprecated: Use StatCrosstab.ProtoReflect.Descriptor instead. func (*StatCrosstab) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{26} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{27} } func (x *StatCrosstab) GetInput() *Relation { @@ -2860,7 +2937,7 @@ type StatCov struct { func (x *StatCov) Reset() { *x = StatCov{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[27] + mi := &file_spark_connect_relations_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2873,7 +2950,7 @@ func (x *StatCov) String() string { func (*StatCov) ProtoMessage() {} func (x *StatCov) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[27] + mi := &file_spark_connect_relations_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2886,7 +2963,7 @@ func (x *StatCov) ProtoReflect() protoreflect.Message { // Deprecated: Use StatCov.ProtoReflect.Descriptor instead. func (*StatCov) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{27} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{28} } func (x *StatCov) GetInput() *Relation { @@ -2933,7 +3010,7 @@ type StatCorr struct { func (x *StatCorr) Reset() { *x = StatCorr{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[28] + mi := &file_spark_connect_relations_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2946,7 +3023,7 @@ func (x *StatCorr) String() string { func (*StatCorr) ProtoMessage() {} func (x *StatCorr) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[28] + mi := &file_spark_connect_relations_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2959,7 +3036,7 @@ func (x *StatCorr) ProtoReflect() protoreflect.Message { // Deprecated: Use StatCorr.ProtoReflect.Descriptor instead. func (*StatCorr) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{28} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{29} } func (x *StatCorr) GetInput() *Relation { @@ -3017,7 +3094,7 @@ type StatApproxQuantile struct { func (x *StatApproxQuantile) Reset() { *x = StatApproxQuantile{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[29] + mi := &file_spark_connect_relations_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3030,7 +3107,7 @@ func (x *StatApproxQuantile) String() string { func (*StatApproxQuantile) ProtoMessage() {} func (x *StatApproxQuantile) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[29] + mi := &file_spark_connect_relations_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3043,7 +3120,7 @@ func (x *StatApproxQuantile) ProtoReflect() protoreflect.Message { // Deprecated: Use StatApproxQuantile.ProtoReflect.Descriptor instead. func (*StatApproxQuantile) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{29} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{30} } func (x *StatApproxQuantile) GetInput() *Relation { @@ -3094,7 +3171,7 @@ type StatFreqItems struct { func (x *StatFreqItems) Reset() { *x = StatFreqItems{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[30] + mi := &file_spark_connect_relations_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3107,7 +3184,7 @@ func (x *StatFreqItems) String() string { func (*StatFreqItems) ProtoMessage() {} func (x *StatFreqItems) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[30] + mi := &file_spark_connect_relations_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3120,7 +3197,7 @@ func (x *StatFreqItems) ProtoReflect() protoreflect.Message { // Deprecated: Use StatFreqItems.ProtoReflect.Descriptor instead. func (*StatFreqItems) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{30} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{31} } func (x *StatFreqItems) GetInput() *Relation { @@ -3168,7 +3245,7 @@ type StatSampleBy struct { func (x *StatSampleBy) Reset() { *x = StatSampleBy{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[31] + mi := &file_spark_connect_relations_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3181,7 +3258,7 @@ func (x *StatSampleBy) String() string { func (*StatSampleBy) ProtoMessage() {} func (x *StatSampleBy) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[31] + mi := &file_spark_connect_relations_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3194,7 +3271,7 @@ func (x *StatSampleBy) ProtoReflect() protoreflect.Message { // Deprecated: Use StatSampleBy.ProtoReflect.Descriptor instead. func (*StatSampleBy) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{31} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{32} } func (x *StatSampleBy) GetInput() *Relation { @@ -3254,7 +3331,7 @@ type NAFill struct { func (x *NAFill) Reset() { *x = NAFill{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[32] + mi := &file_spark_connect_relations_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3267,7 +3344,7 @@ func (x *NAFill) String() string { func (*NAFill) ProtoMessage() {} func (x *NAFill) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[32] + mi := &file_spark_connect_relations_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3280,7 +3357,7 @@ func (x *NAFill) ProtoReflect() protoreflect.Message { // Deprecated: Use NAFill.ProtoReflect.Descriptor instead. func (*NAFill) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{32} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{33} } func (x *NAFill) GetInput() *Relation { @@ -3331,7 +3408,7 @@ type NADrop struct { func (x *NADrop) Reset() { *x = NADrop{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[33] + mi := &file_spark_connect_relations_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3344,7 +3421,7 @@ func (x *NADrop) String() string { func (*NADrop) ProtoMessage() {} func (x *NADrop) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[33] + mi := &file_spark_connect_relations_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3357,7 +3434,7 @@ func (x *NADrop) ProtoReflect() protoreflect.Message { // Deprecated: Use NADrop.ProtoReflect.Descriptor instead. func (*NADrop) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{33} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{34} } func (x *NADrop) GetInput() *Relation { @@ -3402,7 +3479,7 @@ type NAReplace struct { func (x *NAReplace) Reset() { *x = NAReplace{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[34] + mi := &file_spark_connect_relations_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3415,7 +3492,7 @@ func (x *NAReplace) String() string { func (*NAReplace) ProtoMessage() {} func (x *NAReplace) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[34] + mi := &file_spark_connect_relations_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3428,7 +3505,7 @@ func (x *NAReplace) ProtoReflect() protoreflect.Message { // Deprecated: Use NAReplace.ProtoReflect.Descriptor instead. func (*NAReplace) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{34} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{35} } func (x *NAReplace) GetInput() *Relation { @@ -3470,7 +3547,7 @@ type ToDF struct { func (x *ToDF) Reset() { *x = ToDF{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[35] + mi := &file_spark_connect_relations_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3483,7 +3560,7 @@ func (x *ToDF) String() string { func (*ToDF) ProtoMessage() {} func (x *ToDF) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[35] + mi := &file_spark_connect_relations_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3496,7 +3573,7 @@ func (x *ToDF) ProtoReflect() protoreflect.Message { // Deprecated: Use ToDF.ProtoReflect.Descriptor instead. func (*ToDF) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{35} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{36} } func (x *ToDF) GetInput() *Relation { @@ -3533,7 +3610,7 @@ type WithColumnsRenamed struct { func (x *WithColumnsRenamed) Reset() { *x = WithColumnsRenamed{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[36] + mi := &file_spark_connect_relations_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3546,7 +3623,7 @@ func (x *WithColumnsRenamed) String() string { func (*WithColumnsRenamed) ProtoMessage() {} func (x *WithColumnsRenamed) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[36] + mi := &file_spark_connect_relations_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3559,7 +3636,7 @@ func (x *WithColumnsRenamed) ProtoReflect() protoreflect.Message { // Deprecated: Use WithColumnsRenamed.ProtoReflect.Descriptor instead. func (*WithColumnsRenamed) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{36} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{37} } func (x *WithColumnsRenamed) GetInput() *Relation { @@ -3599,7 +3676,7 @@ type WithColumns struct { func (x *WithColumns) Reset() { *x = WithColumns{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[37] + mi := &file_spark_connect_relations_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3612,7 +3689,7 @@ func (x *WithColumns) String() string { func (*WithColumns) ProtoMessage() {} func (x *WithColumns) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[37] + mi := &file_spark_connect_relations_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3625,7 +3702,7 @@ func (x *WithColumns) ProtoReflect() protoreflect.Message { // Deprecated: Use WithColumns.ProtoReflect.Descriptor instead. func (*WithColumns) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{37} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{38} } func (x *WithColumns) GetInput() *Relation { @@ -3658,7 +3735,7 @@ type WithWatermark struct { func (x *WithWatermark) Reset() { *x = WithWatermark{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[38] + mi := &file_spark_connect_relations_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3671,7 +3748,7 @@ func (x *WithWatermark) String() string { func (*WithWatermark) ProtoMessage() {} func (x *WithWatermark) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[38] + mi := &file_spark_connect_relations_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3684,7 +3761,7 @@ func (x *WithWatermark) ProtoReflect() protoreflect.Message { // Deprecated: Use WithWatermark.ProtoReflect.Descriptor instead. func (*WithWatermark) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{38} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{39} } func (x *WithWatermark) GetInput() *Relation { @@ -3729,7 +3806,7 @@ type Hint struct { func (x *Hint) Reset() { *x = Hint{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[39] + mi := &file_spark_connect_relations_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3742,7 +3819,7 @@ func (x *Hint) String() string { func (*Hint) ProtoMessage() {} func (x *Hint) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[39] + mi := &file_spark_connect_relations_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3755,7 +3832,7 @@ func (x *Hint) ProtoReflect() protoreflect.Message { // Deprecated: Use Hint.ProtoReflect.Descriptor instead. func (*Hint) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{39} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{40} } func (x *Hint) GetInput() *Relation { @@ -3800,7 +3877,7 @@ type Unpivot struct { func (x *Unpivot) Reset() { *x = Unpivot{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[40] + mi := &file_spark_connect_relations_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3813,7 +3890,7 @@ func (x *Unpivot) String() string { func (*Unpivot) ProtoMessage() {} func (x *Unpivot) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[40] + mi := &file_spark_connect_relations_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3826,7 +3903,7 @@ func (x *Unpivot) ProtoReflect() protoreflect.Message { // Deprecated: Use Unpivot.ProtoReflect.Descriptor instead. func (*Unpivot) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{40} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{41} } func (x *Unpivot) GetInput() *Relation { @@ -3880,7 +3957,7 @@ type ToSchema struct { func (x *ToSchema) Reset() { *x = ToSchema{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[41] + mi := &file_spark_connect_relations_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3893,7 +3970,7 @@ func (x *ToSchema) String() string { func (*ToSchema) ProtoMessage() {} func (x *ToSchema) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[41] + mi := &file_spark_connect_relations_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3906,7 +3983,7 @@ func (x *ToSchema) ProtoReflect() protoreflect.Message { // Deprecated: Use ToSchema.ProtoReflect.Descriptor instead. func (*ToSchema) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{41} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{42} } func (x *ToSchema) GetInput() *Relation { @@ -3939,7 +4016,7 @@ type RepartitionByExpression struct { func (x *RepartitionByExpression) Reset() { *x = RepartitionByExpression{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[42] + mi := &file_spark_connect_relations_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3952,7 +4029,7 @@ func (x *RepartitionByExpression) String() string { func (*RepartitionByExpression) ProtoMessage() {} func (x *RepartitionByExpression) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[42] + mi := &file_spark_connect_relations_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3965,7 +4042,7 @@ func (x *RepartitionByExpression) ProtoReflect() protoreflect.Message { // Deprecated: Use RepartitionByExpression.ProtoReflect.Descriptor instead. func (*RepartitionByExpression) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{42} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{43} } func (x *RepartitionByExpression) GetInput() *Relation { @@ -4005,7 +4082,7 @@ type MapPartitions struct { func (x *MapPartitions) Reset() { *x = MapPartitions{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[43] + mi := &file_spark_connect_relations_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4018,7 +4095,7 @@ func (x *MapPartitions) String() string { func (*MapPartitions) ProtoMessage() {} func (x *MapPartitions) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[43] + mi := &file_spark_connect_relations_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4031,7 +4108,7 @@ func (x *MapPartitions) ProtoReflect() protoreflect.Message { // Deprecated: Use MapPartitions.ProtoReflect.Descriptor instead. func (*MapPartitions) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{43} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{44} } func (x *MapPartitions) GetInput() *Relation { @@ -4068,12 +4145,23 @@ type GroupMap struct { 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"` } func (x *GroupMap) Reset() { *x = GroupMap{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[44] + mi := &file_spark_connect_relations_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4086,7 +4174,7 @@ func (x *GroupMap) String() string { func (*GroupMap) ProtoMessage() {} func (x *GroupMap) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[44] + mi := &file_spark_connect_relations_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4099,7 +4187,7 @@ func (x *GroupMap) ProtoReflect() protoreflect.Message { // Deprecated: Use GroupMap.ProtoReflect.Descriptor instead. func (*GroupMap) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{44} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{45} } func (x *GroupMap) GetInput() *Relation { @@ -4130,6 +4218,41 @@ func (x *GroupMap) GetSortingExpressions() []*Expression { 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 "" +} + type CoGroupMap struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4154,7 +4277,7 @@ type CoGroupMap struct { func (x *CoGroupMap) Reset() { *x = CoGroupMap{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[45] + mi := &file_spark_connect_relations_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4167,7 +4290,7 @@ func (x *CoGroupMap) String() string { func (*CoGroupMap) ProtoMessage() {} func (x *CoGroupMap) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[45] + mi := &file_spark_connect_relations_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4180,7 +4303,7 @@ func (x *CoGroupMap) ProtoReflect() protoreflect.Message { // Deprecated: Use CoGroupMap.ProtoReflect.Descriptor instead. func (*CoGroupMap) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{45} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{46} } func (x *CoGroupMap) GetInput() *Relation { @@ -4256,7 +4379,7 @@ type ApplyInPandasWithState struct { func (x *ApplyInPandasWithState) Reset() { *x = ApplyInPandasWithState{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[46] + mi := &file_spark_connect_relations_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4269,7 +4392,7 @@ func (x *ApplyInPandasWithState) String() string { func (*ApplyInPandasWithState) ProtoMessage() {} func (x *ApplyInPandasWithState) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[46] + mi := &file_spark_connect_relations_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4282,7 +4405,7 @@ func (x *ApplyInPandasWithState) ProtoReflect() protoreflect.Message { // Deprecated: Use ApplyInPandasWithState.ProtoReflect.Descriptor instead. func (*ApplyInPandasWithState) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{46} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{47} } func (x *ApplyInPandasWithState) GetInput() *Relation { @@ -4334,8 +4457,180 @@ func (x *ApplyInPandasWithState) GetTimeoutConf() string { return "" } -// Collect arbitrary (named) metrics from a dataset. -type CollectMetrics struct { +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[48] + 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[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 CommonInlineUserDefinedTableFunction.ProtoReflect.Descriptor instead. +func (*CommonInlineUserDefinedTableFunction) Descriptor() ([]byte, []int) { + return file_spark_connect_relations_proto_rawDescGZIP(), []int{48} +} + +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[49] + 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[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 PythonUDTF.ProtoReflect.Descriptor instead. +func (*PythonUDTF) Descriptor() ([]byte, []int) { + return file_spark_connect_relations_proto_rawDescGZIP(), []int{49} +} + +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 "" +} + +// Collect arbitrary (named) metrics from a dataset. +type CollectMetrics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -4351,7 +4646,7 @@ type CollectMetrics struct { func (x *CollectMetrics) Reset() { *x = CollectMetrics{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[47] + mi := &file_spark_connect_relations_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4364,7 +4659,7 @@ func (x *CollectMetrics) String() string { func (*CollectMetrics) ProtoMessage() {} func (x *CollectMetrics) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[47] + mi := &file_spark_connect_relations_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4377,7 +4672,7 @@ func (x *CollectMetrics) ProtoReflect() protoreflect.Message { // Deprecated: Use CollectMetrics.ProtoReflect.Descriptor instead. func (*CollectMetrics) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{47} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{50} } func (x *CollectMetrics) GetInput() *Relation { @@ -4419,7 +4714,7 @@ type Parse struct { func (x *Parse) Reset() { *x = Parse{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[48] + mi := &file_spark_connect_relations_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4432,7 +4727,7 @@ func (x *Parse) String() string { func (*Parse) ProtoMessage() {} func (x *Parse) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[48] + mi := &file_spark_connect_relations_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4445,7 +4740,7 @@ func (x *Parse) ProtoReflect() protoreflect.Message { // Deprecated: Use Parse.ProtoReflect.Descriptor instead. func (*Parse) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{48} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{51} } func (x *Parse) GetInput() *Relation { @@ -4490,7 +4785,7 @@ type Read_NamedTable struct { func (x *Read_NamedTable) Reset() { *x = Read_NamedTable{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[50] + mi := &file_spark_connect_relations_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4503,7 +4798,7 @@ func (x *Read_NamedTable) String() string { func (*Read_NamedTable) ProtoMessage() {} func (x *Read_NamedTable) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[50] + mi := &file_spark_connect_relations_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4561,7 +4856,7 @@ type Read_DataSource struct { func (x *Read_DataSource) Reset() { *x = Read_DataSource{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[51] + mi := &file_spark_connect_relations_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4574,7 +4869,7 @@ func (x *Read_DataSource) String() string { func (*Read_DataSource) ProtoMessage() {} func (x *Read_DataSource) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[51] + mi := &file_spark_connect_relations_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4625,6 +4920,63 @@ func (x *Read_DataSource) GetPredicates() []string { 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[57] + 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[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 Join_JoinDataType.ProtoReflect.Descriptor instead. +func (*Join_JoinDataType) Descriptor() ([]byte, []int) { + return file_spark_connect_relations_proto_rawDescGZIP(), []int{7, 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 @@ -4642,7 +4994,7 @@ type Aggregate_Pivot struct { func (x *Aggregate_Pivot) Reset() { *x = Aggregate_Pivot{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[54] + mi := &file_spark_connect_relations_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4655,7 +5007,7 @@ func (x *Aggregate_Pivot) String() string { func (*Aggregate_Pivot) ProtoMessage() {} func (x *Aggregate_Pivot) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[54] + mi := &file_spark_connect_relations_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4699,7 +5051,7 @@ type StatSampleBy_Fraction struct { func (x *StatSampleBy_Fraction) Reset() { *x = StatSampleBy_Fraction{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[55] + mi := &file_spark_connect_relations_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4712,7 +5064,7 @@ func (x *StatSampleBy_Fraction) String() string { func (*StatSampleBy_Fraction) ProtoMessage() {} func (x *StatSampleBy_Fraction) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[55] + mi := &file_spark_connect_relations_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4725,7 +5077,7 @@ func (x *StatSampleBy_Fraction) ProtoReflect() protoreflect.Message { // Deprecated: Use StatSampleBy_Fraction.ProtoReflect.Descriptor instead. func (*StatSampleBy_Fraction) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{31, 0} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{32, 0} } func (x *StatSampleBy_Fraction) GetStratum() *Expression_Literal { @@ -4760,7 +5112,7 @@ type NAReplace_Replacement struct { func (x *NAReplace_Replacement) Reset() { *x = NAReplace_Replacement{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[56] + mi := &file_spark_connect_relations_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4773,7 +5125,7 @@ func (x *NAReplace_Replacement) String() string { func (*NAReplace_Replacement) ProtoMessage() {} func (x *NAReplace_Replacement) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[56] + mi := &file_spark_connect_relations_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4786,7 +5138,7 @@ func (x *NAReplace_Replacement) ProtoReflect() protoreflect.Message { // Deprecated: Use NAReplace_Replacement.ProtoReflect.Descriptor instead. func (*NAReplace_Replacement) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{34, 0} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{35, 0} } func (x *NAReplace_Replacement) GetOldValue() *Expression_Literal { @@ -4814,7 +5166,7 @@ type Unpivot_Values struct { func (x *Unpivot_Values) Reset() { *x = Unpivot_Values{} if protoimpl.UnsafeEnabled { - mi := &file_spark_connect_relations_proto_msgTypes[58] + mi := &file_spark_connect_relations_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4827,7 +5179,7 @@ func (x *Unpivot_Values) String() string { func (*Unpivot_Values) ProtoMessage() {} func (x *Unpivot_Values) ProtoReflect() protoreflect.Message { - mi := &file_spark_connect_relations_proto_msgTypes[58] + mi := &file_spark_connect_relations_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4840,7 +5192,7 @@ func (x *Unpivot_Values) ProtoReflect() protoreflect.Message { // Deprecated: Use Unpivot_Values.ProtoReflect.Descriptor instead. func (*Unpivot_Values) Descriptor() ([]byte, []int) { - return file_spark_connect_relations_proto_rawDescGZIP(), []int{40, 0} + return file_spark_connect_relations_proto_rawDescGZIP(), []int{41, 0} } func (x *Unpivot_Values) GetValues() []*Expression { @@ -4863,7 +5215,7 @@ var file_spark_connect_relations_proto_rawDesc = []byte{ 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, 0x22, 0xf3, 0x16, 0x0a, 0x08, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x74, 0x6f, 0x22, 0xe1, 0x18, 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, @@ -4997,566 +5349,621 @@ var file_spark_connect_relations_proto_rawDesc = []byte{ 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, - 0x30, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x6c, 0x5f, 0x6e, 0x61, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0b, + 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, 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, 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, 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, 0x09, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, - 0x6f, 0x77, 0x6e, 0x22, 0x5b, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 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, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, - 0x22, 0xa9, 0x01, 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, 0x30, - 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, 0x52, 0x04, 0x61, 0x72, 0x67, 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, 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, + 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, 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, 0x09, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x22, 0x5b, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 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, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x70, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x22, 0xe7, + 0x01, 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, 0x30, 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, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x3c, + 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, 0x52, 0x07, 0x70, 0x6f, 0x73, 0x41, 0x72, 0x67, 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, 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, 0x44, 0x61, 0x74, 0x61, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x4f, 0x70, 0x74, 0x69, + 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, 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, - 0xd7, 0x03, 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, 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, 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, + 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, 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, 0xc6, 0x04, 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, + 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, 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, 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, 0x22, 0x81, 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, - 0x22, 0xa0, 0x01, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x69, 0x6e, 0x70, + 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, 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, + 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, 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, + 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, 0xc6, 0x04, 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, 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, 0x22, 0x81, 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, 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, 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, 0x5f, 0x0a, 0x13, 0x43, 0x61, 0x63, 0x68, 0x65, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, - 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, - 0x73, 0x68, 0x22, 0x91, 0x02, 0x0a, 0x06, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x2d, 0x0a, + 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, 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, + 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, - 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, + 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, 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, + 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, 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, + 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, 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, + 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, 0xef, 0x01, 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, 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, + 0x74, 0x12, 0x65, 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, 0x52, 0x10, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x4d, 0x61, 0x70, 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, 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, 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, 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, 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, - 0xef, 0x01, 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, 0x65, 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, 0x52, 0x10, 0x72, 0x65, 0x6e, 0x61, - 0x6d, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x4d, 0x61, 0x70, 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, 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, + 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, 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, 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, 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, + 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, 0xb5, 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, 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, 0xb5, - 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, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x73, 0x5f, 0x62, - 0x61, 0x72, 0x72, 0x69, 0x65, 0x72, 0x22, 0x97, 0x02, 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, + 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, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x69, 0x73, 0x5f, 0x62, 0x61, 0x72, 0x72, 0x69, + 0x65, 0x72, 0x22, 0xfb, 0x04, 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, 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, + 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, 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, 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, @@ -5612,44 +6019,71 @@ var file_spark_connect_relations_proto_rawDesc = []byte{ 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, 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, + 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, 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, 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, + 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, 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, 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 ( @@ -5665,80 +6099,84 @@ func file_spark_connect_relations_proto_rawDescGZIP() []byte { } var file_spark_connect_relations_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_spark_connect_relations_proto_msgTypes = make([]protoimpl.MessageInfo, 60) +var file_spark_connect_relations_proto_msgTypes = make([]protoimpl.MessageInfo, 64) 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 - (*Unknown)(nil), // 5: spark.connect.Unknown - (*RelationCommon)(nil), // 6: spark.connect.RelationCommon - (*SQL)(nil), // 7: spark.connect.SQL - (*Read)(nil), // 8: spark.connect.Read - (*Project)(nil), // 9: spark.connect.Project - (*Filter)(nil), // 10: spark.connect.Filter - (*Join)(nil), // 11: spark.connect.Join - (*SetOperation)(nil), // 12: spark.connect.SetOperation - (*Limit)(nil), // 13: spark.connect.Limit - (*Offset)(nil), // 14: spark.connect.Offset - (*Tail)(nil), // 15: spark.connect.Tail - (*Aggregate)(nil), // 16: spark.connect.Aggregate - (*Sort)(nil), // 17: spark.connect.Sort - (*Drop)(nil), // 18: spark.connect.Drop - (*Deduplicate)(nil), // 19: spark.connect.Deduplicate - (*LocalRelation)(nil), // 20: spark.connect.LocalRelation - (*CachedLocalRelation)(nil), // 21: spark.connect.CachedLocalRelation - (*Sample)(nil), // 22: spark.connect.Sample - (*Range)(nil), // 23: spark.connect.Range - (*SubqueryAlias)(nil), // 24: spark.connect.SubqueryAlias - (*Repartition)(nil), // 25: spark.connect.Repartition - (*ShowString)(nil), // 26: spark.connect.ShowString - (*HtmlString)(nil), // 27: spark.connect.HtmlString - (*StatSummary)(nil), // 28: spark.connect.StatSummary - (*StatDescribe)(nil), // 29: spark.connect.StatDescribe - (*StatCrosstab)(nil), // 30: spark.connect.StatCrosstab - (*StatCov)(nil), // 31: spark.connect.StatCov - (*StatCorr)(nil), // 32: spark.connect.StatCorr - (*StatApproxQuantile)(nil), // 33: spark.connect.StatApproxQuantile - (*StatFreqItems)(nil), // 34: spark.connect.StatFreqItems - (*StatSampleBy)(nil), // 35: spark.connect.StatSampleBy - (*NAFill)(nil), // 36: spark.connect.NAFill - (*NADrop)(nil), // 37: spark.connect.NADrop - (*NAReplace)(nil), // 38: spark.connect.NAReplace - (*ToDF)(nil), // 39: spark.connect.ToDF - (*WithColumnsRenamed)(nil), // 40: spark.connect.WithColumnsRenamed - (*WithColumns)(nil), // 41: spark.connect.WithColumns - (*WithWatermark)(nil), // 42: spark.connect.WithWatermark - (*Hint)(nil), // 43: spark.connect.Hint - (*Unpivot)(nil), // 44: spark.connect.Unpivot - (*ToSchema)(nil), // 45: spark.connect.ToSchema - (*RepartitionByExpression)(nil), // 46: spark.connect.RepartitionByExpression - (*MapPartitions)(nil), // 47: spark.connect.MapPartitions - (*GroupMap)(nil), // 48: spark.connect.GroupMap - (*CoGroupMap)(nil), // 49: spark.connect.CoGroupMap - (*ApplyInPandasWithState)(nil), // 50: spark.connect.ApplyInPandasWithState - (*CollectMetrics)(nil), // 51: spark.connect.CollectMetrics - (*Parse)(nil), // 52: spark.connect.Parse - nil, // 53: spark.connect.SQL.ArgsEntry - (*Read_NamedTable)(nil), // 54: spark.connect.Read.NamedTable - (*Read_DataSource)(nil), // 55: spark.connect.Read.DataSource - nil, // 56: spark.connect.Read.NamedTable.OptionsEntry - nil, // 57: spark.connect.Read.DataSource.OptionsEntry - (*Aggregate_Pivot)(nil), // 58: spark.connect.Aggregate.Pivot - (*StatSampleBy_Fraction)(nil), // 59: spark.connect.StatSampleBy.Fraction - (*NAReplace_Replacement)(nil), // 60: spark.connect.NAReplace.Replacement - nil, // 61: spark.connect.WithColumnsRenamed.RenameColumnsMapEntry - (*Unpivot_Values)(nil), // 62: spark.connect.Unpivot.Values - nil, // 63: spark.connect.Parse.OptionsEntry - (*Catalog)(nil), // 64: spark.connect.Catalog - (*anypb.Any)(nil), // 65: google.protobuf.Any - (*Expression)(nil), // 66: spark.connect.Expression - (*Expression_SortOrder)(nil), // 67: spark.connect.Expression.SortOrder - (*Expression_Literal)(nil), // 68: spark.connect.Expression.Literal - (*Expression_Alias)(nil), // 69: spark.connect.Expression.Alias - (*DataType)(nil), // 70: spark.connect.DataType - (*CommonInlineUserDefinedFunction)(nil), // 71: spark.connect.CommonInlineUserDefinedFunction + (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 + (*Unknown)(nil), // 5: spark.connect.Unknown + (*RelationCommon)(nil), // 6: spark.connect.RelationCommon + (*SQL)(nil), // 7: spark.connect.SQL + (*Read)(nil), // 8: spark.connect.Read + (*Project)(nil), // 9: spark.connect.Project + (*Filter)(nil), // 10: spark.connect.Filter + (*Join)(nil), // 11: spark.connect.Join + (*SetOperation)(nil), // 12: spark.connect.SetOperation + (*Limit)(nil), // 13: spark.connect.Limit + (*Offset)(nil), // 14: spark.connect.Offset + (*Tail)(nil), // 15: spark.connect.Tail + (*Aggregate)(nil), // 16: spark.connect.Aggregate + (*Sort)(nil), // 17: spark.connect.Sort + (*Drop)(nil), // 18: spark.connect.Drop + (*Deduplicate)(nil), // 19: spark.connect.Deduplicate + (*LocalRelation)(nil), // 20: spark.connect.LocalRelation + (*CachedLocalRelation)(nil), // 21: spark.connect.CachedLocalRelation + (*CachedRemoteRelation)(nil), // 22: spark.connect.CachedRemoteRelation + (*Sample)(nil), // 23: spark.connect.Sample + (*Range)(nil), // 24: spark.connect.Range + (*SubqueryAlias)(nil), // 25: spark.connect.SubqueryAlias + (*Repartition)(nil), // 26: spark.connect.Repartition + (*ShowString)(nil), // 27: spark.connect.ShowString + (*HtmlString)(nil), // 28: spark.connect.HtmlString + (*StatSummary)(nil), // 29: spark.connect.StatSummary + (*StatDescribe)(nil), // 30: spark.connect.StatDescribe + (*StatCrosstab)(nil), // 31: spark.connect.StatCrosstab + (*StatCov)(nil), // 32: spark.connect.StatCov + (*StatCorr)(nil), // 33: spark.connect.StatCorr + (*StatApproxQuantile)(nil), // 34: spark.connect.StatApproxQuantile + (*StatFreqItems)(nil), // 35: spark.connect.StatFreqItems + (*StatSampleBy)(nil), // 36: spark.connect.StatSampleBy + (*NAFill)(nil), // 37: spark.connect.NAFill + (*NADrop)(nil), // 38: spark.connect.NADrop + (*NAReplace)(nil), // 39: spark.connect.NAReplace + (*ToDF)(nil), // 40: spark.connect.ToDF + (*WithColumnsRenamed)(nil), // 41: spark.connect.WithColumnsRenamed + (*WithColumns)(nil), // 42: spark.connect.WithColumns + (*WithWatermark)(nil), // 43: spark.connect.WithWatermark + (*Hint)(nil), // 44: spark.connect.Hint + (*Unpivot)(nil), // 45: spark.connect.Unpivot + (*ToSchema)(nil), // 46: spark.connect.ToSchema + (*RepartitionByExpression)(nil), // 47: spark.connect.RepartitionByExpression + (*MapPartitions)(nil), // 48: spark.connect.MapPartitions + (*GroupMap)(nil), // 49: spark.connect.GroupMap + (*CoGroupMap)(nil), // 50: spark.connect.CoGroupMap + (*ApplyInPandasWithState)(nil), // 51: spark.connect.ApplyInPandasWithState + (*CommonInlineUserDefinedTableFunction)(nil), // 52: spark.connect.CommonInlineUserDefinedTableFunction + (*PythonUDTF)(nil), // 53: spark.connect.PythonUDTF + (*CollectMetrics)(nil), // 54: spark.connect.CollectMetrics + (*Parse)(nil), // 55: spark.connect.Parse + nil, // 56: spark.connect.SQL.ArgsEntry + (*Read_NamedTable)(nil), // 57: spark.connect.Read.NamedTable + (*Read_DataSource)(nil), // 58: spark.connect.Read.DataSource + nil, // 59: spark.connect.Read.NamedTable.OptionsEntry + nil, // 60: spark.connect.Read.DataSource.OptionsEntry + (*Join_JoinDataType)(nil), // 61: spark.connect.Join.JoinDataType + (*Aggregate_Pivot)(nil), // 62: spark.connect.Aggregate.Pivot + (*StatSampleBy_Fraction)(nil), // 63: spark.connect.StatSampleBy.Fraction + (*NAReplace_Replacement)(nil), // 64: spark.connect.NAReplace.Replacement + nil, // 65: spark.connect.WithColumnsRenamed.RenameColumnsMapEntry + (*Unpivot_Values)(nil), // 66: spark.connect.Unpivot.Values + nil, // 67: spark.connect.Parse.OptionsEntry + (*Catalog)(nil), // 68: spark.connect.Catalog + (*anypb.Any)(nil), // 69: google.protobuf.Any + (*Expression_Literal)(nil), // 70: spark.connect.Expression.Literal + (*Expression)(nil), // 71: spark.connect.Expression + (*Expression_SortOrder)(nil), // 72: spark.connect.Expression.SortOrder + (*Expression_Alias)(nil), // 73: spark.connect.Expression.Alias + (*DataType)(nil), // 74: spark.connect.DataType + (*CommonInlineUserDefinedFunction)(nil), // 75: spark.connect.CommonInlineUserDefinedFunction } var file_spark_connect_relations_proto_depIdxs = []int32{ 6, // 0: spark.connect.Relation.common:type_name -> spark.connect.RelationCommon @@ -5752,143 +6190,152 @@ var file_spark_connect_relations_proto_depIdxs = []int32{ 16, // 8: spark.connect.Relation.aggregate:type_name -> spark.connect.Aggregate 7, // 9: spark.connect.Relation.sql:type_name -> spark.connect.SQL 20, // 10: spark.connect.Relation.local_relation:type_name -> spark.connect.LocalRelation - 22, // 11: spark.connect.Relation.sample:type_name -> spark.connect.Sample + 23, // 11: spark.connect.Relation.sample:type_name -> spark.connect.Sample 14, // 12: spark.connect.Relation.offset:type_name -> spark.connect.Offset 19, // 13: spark.connect.Relation.deduplicate:type_name -> spark.connect.Deduplicate - 23, // 14: spark.connect.Relation.range:type_name -> spark.connect.Range - 24, // 15: spark.connect.Relation.subquery_alias:type_name -> spark.connect.SubqueryAlias - 25, // 16: spark.connect.Relation.repartition:type_name -> spark.connect.Repartition - 39, // 17: spark.connect.Relation.to_df:type_name -> spark.connect.ToDF - 40, // 18: spark.connect.Relation.with_columns_renamed:type_name -> spark.connect.WithColumnsRenamed - 26, // 19: spark.connect.Relation.show_string:type_name -> spark.connect.ShowString + 24, // 14: spark.connect.Relation.range:type_name -> spark.connect.Range + 25, // 15: spark.connect.Relation.subquery_alias:type_name -> spark.connect.SubqueryAlias + 26, // 16: spark.connect.Relation.repartition:type_name -> spark.connect.Repartition + 40, // 17: spark.connect.Relation.to_df:type_name -> spark.connect.ToDF + 41, // 18: spark.connect.Relation.with_columns_renamed:type_name -> spark.connect.WithColumnsRenamed + 27, // 19: spark.connect.Relation.show_string:type_name -> spark.connect.ShowString 18, // 20: spark.connect.Relation.drop:type_name -> spark.connect.Drop 15, // 21: spark.connect.Relation.tail:type_name -> spark.connect.Tail - 41, // 22: spark.connect.Relation.with_columns:type_name -> spark.connect.WithColumns - 43, // 23: spark.connect.Relation.hint:type_name -> spark.connect.Hint - 44, // 24: spark.connect.Relation.unpivot:type_name -> spark.connect.Unpivot - 45, // 25: spark.connect.Relation.to_schema:type_name -> spark.connect.ToSchema - 46, // 26: spark.connect.Relation.repartition_by_expression:type_name -> spark.connect.RepartitionByExpression - 47, // 27: spark.connect.Relation.map_partitions:type_name -> spark.connect.MapPartitions - 51, // 28: spark.connect.Relation.collect_metrics:type_name -> spark.connect.CollectMetrics - 52, // 29: spark.connect.Relation.parse:type_name -> spark.connect.Parse - 48, // 30: spark.connect.Relation.group_map:type_name -> spark.connect.GroupMap - 49, // 31: spark.connect.Relation.co_group_map:type_name -> spark.connect.CoGroupMap - 42, // 32: spark.connect.Relation.with_watermark:type_name -> spark.connect.WithWatermark - 50, // 33: spark.connect.Relation.apply_in_pandas_with_state:type_name -> spark.connect.ApplyInPandasWithState - 27, // 34: spark.connect.Relation.html_string:type_name -> spark.connect.HtmlString + 42, // 22: spark.connect.Relation.with_columns:type_name -> spark.connect.WithColumns + 44, // 23: spark.connect.Relation.hint:type_name -> spark.connect.Hint + 45, // 24: spark.connect.Relation.unpivot:type_name -> spark.connect.Unpivot + 46, // 25: spark.connect.Relation.to_schema:type_name -> spark.connect.ToSchema + 47, // 26: spark.connect.Relation.repartition_by_expression:type_name -> spark.connect.RepartitionByExpression + 48, // 27: spark.connect.Relation.map_partitions:type_name -> spark.connect.MapPartitions + 54, // 28: spark.connect.Relation.collect_metrics:type_name -> spark.connect.CollectMetrics + 55, // 29: spark.connect.Relation.parse:type_name -> spark.connect.Parse + 49, // 30: spark.connect.Relation.group_map:type_name -> spark.connect.GroupMap + 50, // 31: spark.connect.Relation.co_group_map:type_name -> spark.connect.CoGroupMap + 43, // 32: spark.connect.Relation.with_watermark:type_name -> spark.connect.WithWatermark + 51, // 33: spark.connect.Relation.apply_in_pandas_with_state:type_name -> spark.connect.ApplyInPandasWithState + 28, // 34: spark.connect.Relation.html_string:type_name -> spark.connect.HtmlString 21, // 35: spark.connect.Relation.cached_local_relation:type_name -> spark.connect.CachedLocalRelation - 36, // 36: spark.connect.Relation.fill_na:type_name -> spark.connect.NAFill - 37, // 37: spark.connect.Relation.drop_na:type_name -> spark.connect.NADrop - 38, // 38: spark.connect.Relation.replace:type_name -> spark.connect.NAReplace - 28, // 39: spark.connect.Relation.summary:type_name -> spark.connect.StatSummary - 30, // 40: spark.connect.Relation.crosstab:type_name -> spark.connect.StatCrosstab - 29, // 41: spark.connect.Relation.describe:type_name -> spark.connect.StatDescribe - 31, // 42: spark.connect.Relation.cov:type_name -> spark.connect.StatCov - 32, // 43: spark.connect.Relation.corr:type_name -> spark.connect.StatCorr - 33, // 44: spark.connect.Relation.approx_quantile:type_name -> spark.connect.StatApproxQuantile - 34, // 45: spark.connect.Relation.freq_items:type_name -> spark.connect.StatFreqItems - 35, // 46: spark.connect.Relation.sample_by:type_name -> spark.connect.StatSampleBy - 64, // 47: spark.connect.Relation.catalog:type_name -> spark.connect.Catalog - 65, // 48: spark.connect.Relation.extension:type_name -> google.protobuf.Any - 5, // 49: spark.connect.Relation.unknown:type_name -> spark.connect.Unknown - 53, // 50: spark.connect.SQL.args:type_name -> spark.connect.SQL.ArgsEntry - 54, // 51: spark.connect.Read.named_table:type_name -> spark.connect.Read.NamedTable - 55, // 52: spark.connect.Read.data_source:type_name -> spark.connect.Read.DataSource - 4, // 53: spark.connect.Project.input:type_name -> spark.connect.Relation - 66, // 54: spark.connect.Project.expressions:type_name -> spark.connect.Expression - 4, // 55: spark.connect.Filter.input:type_name -> spark.connect.Relation - 66, // 56: spark.connect.Filter.condition:type_name -> spark.connect.Expression - 4, // 57: spark.connect.Join.left:type_name -> spark.connect.Relation - 4, // 58: spark.connect.Join.right:type_name -> spark.connect.Relation - 66, // 59: spark.connect.Join.join_condition:type_name -> spark.connect.Expression - 0, // 60: spark.connect.Join.join_type:type_name -> spark.connect.Join.JoinType - 4, // 61: spark.connect.SetOperation.left_input:type_name -> spark.connect.Relation - 4, // 62: spark.connect.SetOperation.right_input:type_name -> spark.connect.Relation - 1, // 63: spark.connect.SetOperation.set_op_type:type_name -> spark.connect.SetOperation.SetOpType - 4, // 64: spark.connect.Limit.input:type_name -> spark.connect.Relation - 4, // 65: spark.connect.Offset.input:type_name -> spark.connect.Relation - 4, // 66: spark.connect.Tail.input:type_name -> spark.connect.Relation - 4, // 67: spark.connect.Aggregate.input:type_name -> spark.connect.Relation - 2, // 68: spark.connect.Aggregate.group_type:type_name -> spark.connect.Aggregate.GroupType - 66, // 69: spark.connect.Aggregate.grouping_expressions:type_name -> spark.connect.Expression - 66, // 70: spark.connect.Aggregate.aggregate_expressions:type_name -> spark.connect.Expression - 58, // 71: spark.connect.Aggregate.pivot:type_name -> spark.connect.Aggregate.Pivot - 4, // 72: spark.connect.Sort.input:type_name -> spark.connect.Relation - 67, // 73: spark.connect.Sort.order:type_name -> spark.connect.Expression.SortOrder - 4, // 74: spark.connect.Drop.input:type_name -> spark.connect.Relation - 66, // 75: spark.connect.Drop.columns:type_name -> spark.connect.Expression - 4, // 76: spark.connect.Deduplicate.input:type_name -> spark.connect.Relation - 4, // 77: spark.connect.Sample.input:type_name -> spark.connect.Relation - 4, // 78: spark.connect.SubqueryAlias.input:type_name -> spark.connect.Relation - 4, // 79: spark.connect.Repartition.input:type_name -> spark.connect.Relation - 4, // 80: spark.connect.ShowString.input:type_name -> spark.connect.Relation - 4, // 81: spark.connect.HtmlString.input:type_name -> spark.connect.Relation - 4, // 82: spark.connect.StatSummary.input:type_name -> spark.connect.Relation - 4, // 83: spark.connect.StatDescribe.input:type_name -> spark.connect.Relation - 4, // 84: spark.connect.StatCrosstab.input:type_name -> spark.connect.Relation - 4, // 85: spark.connect.StatCov.input:type_name -> spark.connect.Relation - 4, // 86: spark.connect.StatCorr.input:type_name -> spark.connect.Relation - 4, // 87: spark.connect.StatApproxQuantile.input:type_name -> spark.connect.Relation - 4, // 88: spark.connect.StatFreqItems.input:type_name -> spark.connect.Relation - 4, // 89: spark.connect.StatSampleBy.input:type_name -> spark.connect.Relation - 66, // 90: spark.connect.StatSampleBy.col:type_name -> spark.connect.Expression - 59, // 91: spark.connect.StatSampleBy.fractions:type_name -> spark.connect.StatSampleBy.Fraction - 4, // 92: spark.connect.NAFill.input:type_name -> spark.connect.Relation - 68, // 93: spark.connect.NAFill.values:type_name -> spark.connect.Expression.Literal - 4, // 94: spark.connect.NADrop.input:type_name -> spark.connect.Relation - 4, // 95: spark.connect.NAReplace.input:type_name -> spark.connect.Relation - 60, // 96: spark.connect.NAReplace.replacements:type_name -> spark.connect.NAReplace.Replacement - 4, // 97: spark.connect.ToDF.input:type_name -> spark.connect.Relation - 4, // 98: spark.connect.WithColumnsRenamed.input:type_name -> spark.connect.Relation - 61, // 99: spark.connect.WithColumnsRenamed.rename_columns_map:type_name -> spark.connect.WithColumnsRenamed.RenameColumnsMapEntry - 4, // 100: spark.connect.WithColumns.input:type_name -> spark.connect.Relation - 69, // 101: spark.connect.WithColumns.aliases:type_name -> spark.connect.Expression.Alias - 4, // 102: spark.connect.WithWatermark.input:type_name -> spark.connect.Relation - 4, // 103: spark.connect.Hint.input:type_name -> spark.connect.Relation - 66, // 104: spark.connect.Hint.parameters:type_name -> spark.connect.Expression - 4, // 105: spark.connect.Unpivot.input:type_name -> spark.connect.Relation - 66, // 106: spark.connect.Unpivot.ids:type_name -> spark.connect.Expression - 62, // 107: spark.connect.Unpivot.values:type_name -> spark.connect.Unpivot.Values - 4, // 108: spark.connect.ToSchema.input:type_name -> spark.connect.Relation - 70, // 109: spark.connect.ToSchema.schema:type_name -> spark.connect.DataType - 4, // 110: spark.connect.RepartitionByExpression.input:type_name -> spark.connect.Relation - 66, // 111: spark.connect.RepartitionByExpression.partition_exprs:type_name -> spark.connect.Expression - 4, // 112: spark.connect.MapPartitions.input:type_name -> spark.connect.Relation - 71, // 113: spark.connect.MapPartitions.func:type_name -> spark.connect.CommonInlineUserDefinedFunction - 4, // 114: spark.connect.GroupMap.input:type_name -> spark.connect.Relation - 66, // 115: spark.connect.GroupMap.grouping_expressions:type_name -> spark.connect.Expression - 71, // 116: spark.connect.GroupMap.func:type_name -> spark.connect.CommonInlineUserDefinedFunction - 66, // 117: spark.connect.GroupMap.sorting_expressions:type_name -> spark.connect.Expression - 4, // 118: spark.connect.CoGroupMap.input:type_name -> spark.connect.Relation - 66, // 119: spark.connect.CoGroupMap.input_grouping_expressions:type_name -> spark.connect.Expression - 4, // 120: spark.connect.CoGroupMap.other:type_name -> spark.connect.Relation - 66, // 121: spark.connect.CoGroupMap.other_grouping_expressions:type_name -> spark.connect.Expression - 71, // 122: spark.connect.CoGroupMap.func:type_name -> spark.connect.CommonInlineUserDefinedFunction - 66, // 123: spark.connect.CoGroupMap.input_sorting_expressions:type_name -> spark.connect.Expression - 66, // 124: spark.connect.CoGroupMap.other_sorting_expressions:type_name -> spark.connect.Expression - 4, // 125: spark.connect.ApplyInPandasWithState.input:type_name -> spark.connect.Relation - 66, // 126: spark.connect.ApplyInPandasWithState.grouping_expressions:type_name -> spark.connect.Expression - 71, // 127: spark.connect.ApplyInPandasWithState.func:type_name -> spark.connect.CommonInlineUserDefinedFunction - 4, // 128: spark.connect.CollectMetrics.input:type_name -> spark.connect.Relation - 66, // 129: spark.connect.CollectMetrics.metrics:type_name -> spark.connect.Expression - 4, // 130: spark.connect.Parse.input:type_name -> spark.connect.Relation - 3, // 131: spark.connect.Parse.format:type_name -> spark.connect.Parse.ParseFormat - 70, // 132: spark.connect.Parse.schema:type_name -> spark.connect.DataType - 63, // 133: spark.connect.Parse.options:type_name -> spark.connect.Parse.OptionsEntry - 68, // 134: spark.connect.SQL.ArgsEntry.value:type_name -> spark.connect.Expression.Literal - 56, // 135: spark.connect.Read.NamedTable.options:type_name -> spark.connect.Read.NamedTable.OptionsEntry - 57, // 136: spark.connect.Read.DataSource.options:type_name -> spark.connect.Read.DataSource.OptionsEntry - 66, // 137: spark.connect.Aggregate.Pivot.col:type_name -> spark.connect.Expression - 68, // 138: spark.connect.Aggregate.Pivot.values:type_name -> spark.connect.Expression.Literal - 68, // 139: spark.connect.StatSampleBy.Fraction.stratum:type_name -> spark.connect.Expression.Literal - 68, // 140: spark.connect.NAReplace.Replacement.old_value:type_name -> spark.connect.Expression.Literal - 68, // 141: spark.connect.NAReplace.Replacement.new_value:type_name -> spark.connect.Expression.Literal - 66, // 142: spark.connect.Unpivot.Values.values:type_name -> spark.connect.Expression - 143, // [143:143] is the sub-list for method output_type - 143, // [143:143] is the sub-list for method input_type - 143, // [143:143] is the sub-list for extension type_name - 143, // [143:143] is the sub-list for extension extendee - 0, // [0:143] is the sub-list for field type_name + 22, // 36: spark.connect.Relation.cached_remote_relation:type_name -> spark.connect.CachedRemoteRelation + 52, // 37: spark.connect.Relation.common_inline_user_defined_table_function:type_name -> spark.connect.CommonInlineUserDefinedTableFunction + 37, // 38: spark.connect.Relation.fill_na:type_name -> spark.connect.NAFill + 38, // 39: spark.connect.Relation.drop_na:type_name -> spark.connect.NADrop + 39, // 40: spark.connect.Relation.replace:type_name -> spark.connect.NAReplace + 29, // 41: spark.connect.Relation.summary:type_name -> spark.connect.StatSummary + 31, // 42: spark.connect.Relation.crosstab:type_name -> spark.connect.StatCrosstab + 30, // 43: spark.connect.Relation.describe:type_name -> spark.connect.StatDescribe + 32, // 44: spark.connect.Relation.cov:type_name -> spark.connect.StatCov + 33, // 45: spark.connect.Relation.corr:type_name -> spark.connect.StatCorr + 34, // 46: spark.connect.Relation.approx_quantile:type_name -> spark.connect.StatApproxQuantile + 35, // 47: spark.connect.Relation.freq_items:type_name -> spark.connect.StatFreqItems + 36, // 48: spark.connect.Relation.sample_by:type_name -> spark.connect.StatSampleBy + 68, // 49: spark.connect.Relation.catalog:type_name -> spark.connect.Catalog + 69, // 50: spark.connect.Relation.extension:type_name -> google.protobuf.Any + 5, // 51: spark.connect.Relation.unknown:type_name -> spark.connect.Unknown + 56, // 52: spark.connect.SQL.args:type_name -> spark.connect.SQL.ArgsEntry + 70, // 53: spark.connect.SQL.pos_args:type_name -> spark.connect.Expression.Literal + 57, // 54: spark.connect.Read.named_table:type_name -> spark.connect.Read.NamedTable + 58, // 55: spark.connect.Read.data_source:type_name -> spark.connect.Read.DataSource + 4, // 56: spark.connect.Project.input:type_name -> spark.connect.Relation + 71, // 57: spark.connect.Project.expressions:type_name -> spark.connect.Expression + 4, // 58: spark.connect.Filter.input:type_name -> spark.connect.Relation + 71, // 59: spark.connect.Filter.condition:type_name -> spark.connect.Expression + 4, // 60: spark.connect.Join.left:type_name -> spark.connect.Relation + 4, // 61: spark.connect.Join.right:type_name -> spark.connect.Relation + 71, // 62: spark.connect.Join.join_condition:type_name -> spark.connect.Expression + 0, // 63: spark.connect.Join.join_type:type_name -> spark.connect.Join.JoinType + 61, // 64: spark.connect.Join.join_data_type:type_name -> spark.connect.Join.JoinDataType + 4, // 65: spark.connect.SetOperation.left_input:type_name -> spark.connect.Relation + 4, // 66: spark.connect.SetOperation.right_input:type_name -> spark.connect.Relation + 1, // 67: spark.connect.SetOperation.set_op_type:type_name -> spark.connect.SetOperation.SetOpType + 4, // 68: spark.connect.Limit.input:type_name -> spark.connect.Relation + 4, // 69: spark.connect.Offset.input:type_name -> spark.connect.Relation + 4, // 70: spark.connect.Tail.input:type_name -> spark.connect.Relation + 4, // 71: spark.connect.Aggregate.input:type_name -> spark.connect.Relation + 2, // 72: spark.connect.Aggregate.group_type:type_name -> spark.connect.Aggregate.GroupType + 71, // 73: spark.connect.Aggregate.grouping_expressions:type_name -> spark.connect.Expression + 71, // 74: spark.connect.Aggregate.aggregate_expressions:type_name -> spark.connect.Expression + 62, // 75: spark.connect.Aggregate.pivot:type_name -> spark.connect.Aggregate.Pivot + 4, // 76: spark.connect.Sort.input:type_name -> spark.connect.Relation + 72, // 77: spark.connect.Sort.order:type_name -> spark.connect.Expression.SortOrder + 4, // 78: spark.connect.Drop.input:type_name -> spark.connect.Relation + 71, // 79: spark.connect.Drop.columns:type_name -> spark.connect.Expression + 4, // 80: spark.connect.Deduplicate.input:type_name -> spark.connect.Relation + 4, // 81: spark.connect.Sample.input:type_name -> spark.connect.Relation + 4, // 82: spark.connect.SubqueryAlias.input:type_name -> spark.connect.Relation + 4, // 83: spark.connect.Repartition.input:type_name -> spark.connect.Relation + 4, // 84: spark.connect.ShowString.input:type_name -> spark.connect.Relation + 4, // 85: spark.connect.HtmlString.input:type_name -> spark.connect.Relation + 4, // 86: spark.connect.StatSummary.input:type_name -> spark.connect.Relation + 4, // 87: spark.connect.StatDescribe.input:type_name -> spark.connect.Relation + 4, // 88: spark.connect.StatCrosstab.input:type_name -> spark.connect.Relation + 4, // 89: spark.connect.StatCov.input:type_name -> spark.connect.Relation + 4, // 90: spark.connect.StatCorr.input:type_name -> spark.connect.Relation + 4, // 91: spark.connect.StatApproxQuantile.input:type_name -> spark.connect.Relation + 4, // 92: spark.connect.StatFreqItems.input:type_name -> spark.connect.Relation + 4, // 93: spark.connect.StatSampleBy.input:type_name -> spark.connect.Relation + 71, // 94: spark.connect.StatSampleBy.col:type_name -> spark.connect.Expression + 63, // 95: spark.connect.StatSampleBy.fractions:type_name -> spark.connect.StatSampleBy.Fraction + 4, // 96: spark.connect.NAFill.input:type_name -> spark.connect.Relation + 70, // 97: spark.connect.NAFill.values:type_name -> spark.connect.Expression.Literal + 4, // 98: spark.connect.NADrop.input:type_name -> spark.connect.Relation + 4, // 99: spark.connect.NAReplace.input:type_name -> spark.connect.Relation + 64, // 100: spark.connect.NAReplace.replacements:type_name -> spark.connect.NAReplace.Replacement + 4, // 101: spark.connect.ToDF.input:type_name -> spark.connect.Relation + 4, // 102: spark.connect.WithColumnsRenamed.input:type_name -> spark.connect.Relation + 65, // 103: spark.connect.WithColumnsRenamed.rename_columns_map:type_name -> spark.connect.WithColumnsRenamed.RenameColumnsMapEntry + 4, // 104: spark.connect.WithColumns.input:type_name -> spark.connect.Relation + 73, // 105: spark.connect.WithColumns.aliases:type_name -> spark.connect.Expression.Alias + 4, // 106: spark.connect.WithWatermark.input:type_name -> spark.connect.Relation + 4, // 107: spark.connect.Hint.input:type_name -> spark.connect.Relation + 71, // 108: spark.connect.Hint.parameters:type_name -> spark.connect.Expression + 4, // 109: spark.connect.Unpivot.input:type_name -> spark.connect.Relation + 71, // 110: spark.connect.Unpivot.ids:type_name -> spark.connect.Expression + 66, // 111: spark.connect.Unpivot.values:type_name -> spark.connect.Unpivot.Values + 4, // 112: spark.connect.ToSchema.input:type_name -> spark.connect.Relation + 74, // 113: spark.connect.ToSchema.schema:type_name -> spark.connect.DataType + 4, // 114: spark.connect.RepartitionByExpression.input:type_name -> spark.connect.Relation + 71, // 115: spark.connect.RepartitionByExpression.partition_exprs:type_name -> spark.connect.Expression + 4, // 116: spark.connect.MapPartitions.input:type_name -> spark.connect.Relation + 75, // 117: spark.connect.MapPartitions.func:type_name -> spark.connect.CommonInlineUserDefinedFunction + 4, // 118: spark.connect.GroupMap.input:type_name -> spark.connect.Relation + 71, // 119: spark.connect.GroupMap.grouping_expressions:type_name -> spark.connect.Expression + 75, // 120: spark.connect.GroupMap.func:type_name -> spark.connect.CommonInlineUserDefinedFunction + 71, // 121: spark.connect.GroupMap.sorting_expressions:type_name -> spark.connect.Expression + 4, // 122: spark.connect.GroupMap.initial_input:type_name -> spark.connect.Relation + 71, // 123: spark.connect.GroupMap.initial_grouping_expressions:type_name -> spark.connect.Expression + 4, // 124: spark.connect.CoGroupMap.input:type_name -> spark.connect.Relation + 71, // 125: spark.connect.CoGroupMap.input_grouping_expressions:type_name -> spark.connect.Expression + 4, // 126: spark.connect.CoGroupMap.other:type_name -> spark.connect.Relation + 71, // 127: spark.connect.CoGroupMap.other_grouping_expressions:type_name -> spark.connect.Expression + 75, // 128: spark.connect.CoGroupMap.func:type_name -> spark.connect.CommonInlineUserDefinedFunction + 71, // 129: spark.connect.CoGroupMap.input_sorting_expressions:type_name -> spark.connect.Expression + 71, // 130: spark.connect.CoGroupMap.other_sorting_expressions:type_name -> spark.connect.Expression + 4, // 131: spark.connect.ApplyInPandasWithState.input:type_name -> spark.connect.Relation + 71, // 132: spark.connect.ApplyInPandasWithState.grouping_expressions:type_name -> spark.connect.Expression + 75, // 133: spark.connect.ApplyInPandasWithState.func:type_name -> spark.connect.CommonInlineUserDefinedFunction + 71, // 134: spark.connect.CommonInlineUserDefinedTableFunction.arguments:type_name -> spark.connect.Expression + 53, // 135: spark.connect.CommonInlineUserDefinedTableFunction.python_udtf:type_name -> spark.connect.PythonUDTF + 74, // 136: spark.connect.PythonUDTF.return_type:type_name -> spark.connect.DataType + 4, // 137: spark.connect.CollectMetrics.input:type_name -> spark.connect.Relation + 71, // 138: spark.connect.CollectMetrics.metrics:type_name -> spark.connect.Expression + 4, // 139: spark.connect.Parse.input:type_name -> spark.connect.Relation + 3, // 140: spark.connect.Parse.format:type_name -> spark.connect.Parse.ParseFormat + 74, // 141: spark.connect.Parse.schema:type_name -> spark.connect.DataType + 67, // 142: spark.connect.Parse.options:type_name -> spark.connect.Parse.OptionsEntry + 70, // 143: spark.connect.SQL.ArgsEntry.value:type_name -> spark.connect.Expression.Literal + 59, // 144: spark.connect.Read.NamedTable.options:type_name -> spark.connect.Read.NamedTable.OptionsEntry + 60, // 145: spark.connect.Read.DataSource.options:type_name -> spark.connect.Read.DataSource.OptionsEntry + 71, // 146: spark.connect.Aggregate.Pivot.col:type_name -> spark.connect.Expression + 70, // 147: spark.connect.Aggregate.Pivot.values:type_name -> spark.connect.Expression.Literal + 70, // 148: spark.connect.StatSampleBy.Fraction.stratum:type_name -> spark.connect.Expression.Literal + 70, // 149: spark.connect.NAReplace.Replacement.old_value:type_name -> spark.connect.Expression.Literal + 70, // 150: spark.connect.NAReplace.Replacement.new_value:type_name -> spark.connect.Expression.Literal + 71, // 151: spark.connect.Unpivot.Values.values:type_name -> spark.connect.Expression + 152, // [152:152] is the sub-list for method output_type + 152, // [152:152] is the sub-list for method input_type + 152, // [152:152] is the sub-list for extension type_name + 152, // [152:152] is the sub-list for extension extendee + 0, // [0:152] is the sub-list for field type_name } func init() { file_spark_connect_relations_proto_init() } @@ -6117,7 +6564,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Sample); i { + switch v := v.(*CachedRemoteRelation); i { case 0: return &v.state case 1: @@ -6129,7 +6576,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Range); i { + switch v := v.(*Sample); i { case 0: return &v.state case 1: @@ -6141,7 +6588,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubqueryAlias); i { + switch v := v.(*Range); i { case 0: return &v.state case 1: @@ -6153,7 +6600,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Repartition); i { + switch v := v.(*SubqueryAlias); i { case 0: return &v.state case 1: @@ -6165,7 +6612,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ShowString); i { + switch v := v.(*Repartition); i { case 0: return &v.state case 1: @@ -6177,7 +6624,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HtmlString); i { + switch v := v.(*ShowString); i { case 0: return &v.state case 1: @@ -6189,7 +6636,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatSummary); i { + switch v := v.(*HtmlString); i { case 0: return &v.state case 1: @@ -6201,7 +6648,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatDescribe); i { + switch v := v.(*StatSummary); i { case 0: return &v.state case 1: @@ -6213,7 +6660,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatCrosstab); i { + switch v := v.(*StatDescribe); i { case 0: return &v.state case 1: @@ -6225,7 +6672,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatCov); i { + switch v := v.(*StatCrosstab); i { case 0: return &v.state case 1: @@ -6237,7 +6684,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatCorr); i { + switch v := v.(*StatCov); i { case 0: return &v.state case 1: @@ -6249,7 +6696,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatApproxQuantile); i { + switch v := v.(*StatCorr); i { case 0: return &v.state case 1: @@ -6261,7 +6708,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatFreqItems); i { + switch v := v.(*StatApproxQuantile); i { case 0: return &v.state case 1: @@ -6273,7 +6720,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatSampleBy); i { + switch v := v.(*StatFreqItems); i { case 0: return &v.state case 1: @@ -6285,7 +6732,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NAFill); i { + switch v := v.(*StatSampleBy); i { case 0: return &v.state case 1: @@ -6297,7 +6744,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NADrop); i { + switch v := v.(*NAFill); i { case 0: return &v.state case 1: @@ -6309,7 +6756,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NAReplace); i { + switch v := v.(*NADrop); i { case 0: return &v.state case 1: @@ -6321,7 +6768,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToDF); i { + switch v := v.(*NAReplace); i { case 0: return &v.state case 1: @@ -6333,7 +6780,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithColumnsRenamed); i { + switch v := v.(*ToDF); i { case 0: return &v.state case 1: @@ -6345,7 +6792,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithColumns); i { + switch v := v.(*WithColumnsRenamed); i { case 0: return &v.state case 1: @@ -6357,7 +6804,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WithWatermark); i { + switch v := v.(*WithColumns); i { case 0: return &v.state case 1: @@ -6369,7 +6816,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Hint); i { + switch v := v.(*WithWatermark); i { case 0: return &v.state case 1: @@ -6381,7 +6828,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Unpivot); i { + switch v := v.(*Hint); i { case 0: return &v.state case 1: @@ -6393,7 +6840,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ToSchema); i { + switch v := v.(*Unpivot); i { case 0: return &v.state case 1: @@ -6405,7 +6852,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RepartitionByExpression); i { + switch v := v.(*ToSchema); i { case 0: return &v.state case 1: @@ -6417,7 +6864,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MapPartitions); i { + switch v := v.(*RepartitionByExpression); i { case 0: return &v.state case 1: @@ -6429,7 +6876,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GroupMap); i { + switch v := v.(*MapPartitions); i { case 0: return &v.state case 1: @@ -6441,7 +6888,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CoGroupMap); i { + switch v := v.(*GroupMap); i { case 0: return &v.state case 1: @@ -6453,7 +6900,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ApplyInPandasWithState); i { + switch v := v.(*CoGroupMap); i { case 0: return &v.state case 1: @@ -6465,7 +6912,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CollectMetrics); i { + switch v := v.(*ApplyInPandasWithState); i { case 0: return &v.state case 1: @@ -6477,7 +6924,19 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Parse); i { + 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[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PythonUDTF); i { case 0: return &v.state case 1: @@ -6489,7 +6948,7 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Read_NamedTable); i { + switch v := v.(*CollectMetrics); i { case 0: return &v.state case 1: @@ -6501,7 +6960,19 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Read_DataSource); i { + 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[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Read_NamedTable); i { case 0: return &v.state case 1: @@ -6513,6 +6984,30 @@ func file_spark_connect_relations_proto_init() { } } file_spark_connect_relations_proto_msgTypes[54].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[57].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[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Aggregate_Pivot); i { case 0: return &v.state @@ -6524,7 +7019,7 @@ func file_spark_connect_relations_proto_init() { return nil } } - file_spark_connect_relations_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_relations_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatSampleBy_Fraction); i { case 0: return &v.state @@ -6536,7 +7031,7 @@ func file_spark_connect_relations_proto_init() { return nil } } - file_spark_connect_relations_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_relations_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NAReplace_Replacement); i { case 0: return &v.state @@ -6548,7 +7043,7 @@ func file_spark_connect_relations_proto_init() { return nil } } - file_spark_connect_relations_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_spark_connect_relations_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Unpivot_Values); i { case 0: return &v.state @@ -6597,6 +7092,8 @@ func file_spark_connect_relations_proto_init() { (*Relation_ApplyInPandasWithState)(nil), (*Relation_HtmlString)(nil), (*Relation_CachedLocalRelation)(nil), + (*Relation_CachedRemoteRelation)(nil), + (*Relation_CommonInlineUserDefinedTableFunction)(nil), (*Relation_FillNa)(nil), (*Relation_DropNa)(nil), (*Relation_Replace)(nil), @@ -6617,29 +7114,35 @@ func file_spark_connect_relations_proto_init() { (*Read_NamedTable_)(nil), (*Read_DataSource_)(nil), } + file_spark_connect_relations_proto_msgTypes[7].OneofWrappers = []interface{}{} file_spark_connect_relations_proto_msgTypes[8].OneofWrappers = []interface{}{} file_spark_connect_relations_proto_msgTypes[13].OneofWrappers = []interface{}{} file_spark_connect_relations_proto_msgTypes[15].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[21].OneofWrappers = []interface{}{} - file_spark_connect_relations_proto_msgTypes[28].OneofWrappers = []interface{}{} - file_spark_connect_relations_proto_msgTypes[30].OneofWrappers = []interface{}{} + file_spark_connect_relations_proto_msgTypes[20].OneofWrappers = []interface{}{} + file_spark_connect_relations_proto_msgTypes[22].OneofWrappers = []interface{}{} + file_spark_connect_relations_proto_msgTypes[29].OneofWrappers = []interface{}{} file_spark_connect_relations_proto_msgTypes[31].OneofWrappers = []interface{}{} - file_spark_connect_relations_proto_msgTypes[33].OneofWrappers = []interface{}{} - file_spark_connect_relations_proto_msgTypes[40].OneofWrappers = []interface{}{} - file_spark_connect_relations_proto_msgTypes[42].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[41].OneofWrappers = []interface{}{} file_spark_connect_relations_proto_msgTypes[43].OneofWrappers = []interface{}{} - file_spark_connect_relations_proto_msgTypes[48].OneofWrappers = []interface{}{} + file_spark_connect_relations_proto_msgTypes[44].OneofWrappers = []interface{}{} + file_spark_connect_relations_proto_msgTypes[45].OneofWrappers = []interface{}{} + file_spark_connect_relations_proto_msgTypes[48].OneofWrappers = []interface{}{ + (*CommonInlineUserDefinedTableFunction_PythonUdtf)(nil), + } + file_spark_connect_relations_proto_msgTypes[49].OneofWrappers = []interface{}{} file_spark_connect_relations_proto_msgTypes[51].OneofWrappers = []interface{}{} + file_spark_connect_relations_proto_msgTypes[54].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: 60, + NumMessages: 64, NumExtensions: 0, NumServices: 0, }, diff --git a/quick-start.md b/quick-start.md index e2cbfe6..8e1b1e1 100644 --- a/quick-start.md +++ b/quick-start.md @@ -5,7 +5,7 @@ In your Go project `go.mod` file, add `spark-connect-go` library: ``` require ( - github.com/apache/spark-connect-go/v34 master + github.com/apache/spark-connect-go/v1 master ) ``` @@ -21,7 +21,7 @@ import ( "flag" "log" - "github.com/apache/spark-connect-go/v34/client/sql" + "github.com/apache/spark-connect-go/v1/client/sql" ) var ( diff --git a/spark b/spark index 8f2afb8..fd86f85 160000 --- a/spark +++ b/spark @@ -1 +1 @@ -Subproject commit 8f2afb88d42af04f36c84972d9ebcb5dabc91260 +Subproject commit fd86f85e181fc2dc0f50a096855acf83a6cc5d9c