diff --git a/proto/gen/rill/runtime/v1/api.pb.go b/proto/gen/rill/runtime/v1/api.pb.go index 7b1aa8aa9cbb..f524e49c0d88 100644 --- a/proto/gen/rill/runtime/v1/api.pb.go +++ b/proto/gen/rill/runtime/v1/api.pb.go @@ -241,6 +241,61 @@ func (ConnectorDriver_Property_Type) EnumDescriptor() ([]byte, []int) { return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{69, 0, 0} } +type GitDiffResponse_GitFileStatus int32 + +const ( + GitDiffResponse_GIT_FILE_STATUS_UNSPECIFIED GitDiffResponse_GitFileStatus = 0 + GitDiffResponse_GIT_FILE_STATUS_ADDED GitDiffResponse_GitFileStatus = 1 + GitDiffResponse_GIT_FILE_STATUS_MODIFIED GitDiffResponse_GitFileStatus = 2 + GitDiffResponse_GIT_FILE_STATUS_DELETED GitDiffResponse_GitFileStatus = 3 + GitDiffResponse_GIT_FILE_STATUS_RENAMED GitDiffResponse_GitFileStatus = 4 +) + +// Enum value maps for GitDiffResponse_GitFileStatus. +var ( + GitDiffResponse_GitFileStatus_name = map[int32]string{ + 0: "GIT_FILE_STATUS_UNSPECIFIED", + 1: "GIT_FILE_STATUS_ADDED", + 2: "GIT_FILE_STATUS_MODIFIED", + 3: "GIT_FILE_STATUS_DELETED", + 4: "GIT_FILE_STATUS_RENAMED", + } + GitDiffResponse_GitFileStatus_value = map[string]int32{ + "GIT_FILE_STATUS_UNSPECIFIED": 0, + "GIT_FILE_STATUS_ADDED": 1, + "GIT_FILE_STATUS_MODIFIED": 2, + "GIT_FILE_STATUS_DELETED": 3, + "GIT_FILE_STATUS_RENAMED": 4, + } +) + +func (x GitDiffResponse_GitFileStatus) Enum() *GitDiffResponse_GitFileStatus { + p := new(GitDiffResponse_GitFileStatus) + *p = x + return p +} + +func (x GitDiffResponse_GitFileStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GitDiffResponse_GitFileStatus) Descriptor() protoreflect.EnumDescriptor { + return file_rill_runtime_v1_api_proto_enumTypes[4].Descriptor() +} + +func (GitDiffResponse_GitFileStatus) Type() protoreflect.EnumType { + return &file_rill_runtime_v1_api_proto_enumTypes[4] +} + +func (x GitDiffResponse_GitFileStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GitDiffResponse_GitFileStatus.Descriptor instead. +func (GitDiffResponse_GitFileStatus) EnumDescriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{109, 0} +} + // Request message for RuntimeService.Ping type PingRequest struct { state protoimpl.MessageState @@ -7266,6 +7321,113 @@ func (x *GitStatusResponse) GetRemoteCommits() int32 { return 0 } +type GitDiffRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + // remote_branch is the branch to compare against. Same semantics as GitStatusRequest: + // if empty, the upstream of the current local branch is used. + RemoteBranch string `protobuf:"bytes,2,opt,name=remote_branch,json=remoteBranch,proto3" json:"remote_branch,omitempty"` +} + +func (x *GitDiffRequest) Reset() { + *x = GitDiffRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GitDiffRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GitDiffRequest) ProtoMessage() {} + +func (x *GitDiffRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[108] + 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 GitDiffRequest.ProtoReflect.Descriptor instead. +func (*GitDiffRequest) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{108} +} + +func (x *GitDiffRequest) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *GitDiffRequest) GetRemoteBranch() string { + if x != nil { + return x.RemoteBranch + } + return "" +} + +type GitDiffResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // changed_files lists the files that would land on the target branch, relative to the project subpath. + // The comparison ref is the requested remote_branch, or the upstream of the current branch when + // remote_branch is empty. + ChangedFiles []*GitDiffResponse_GitFileChange `protobuf:"bytes,1,rep,name=changed_files,json=changedFiles,proto3" json:"changed_files,omitempty"` +} + +func (x *GitDiffResponse) Reset() { + *x = GitDiffResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GitDiffResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GitDiffResponse) ProtoMessage() {} + +func (x *GitDiffResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[109] + 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 GitDiffResponse.ProtoReflect.Descriptor instead. +func (*GitDiffResponse) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{109} +} + +func (x *GitDiffResponse) GetChangedFiles() []*GitDiffResponse_GitFileChange { + if x != nil { + return x.ChangedFiles + } + return nil +} + type ListGitBranchesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -7277,7 +7439,7 @@ type ListGitBranchesRequest struct { func (x *ListGitBranchesRequest) Reset() { *x = ListGitBranchesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[108] + mi := &file_rill_runtime_v1_api_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7290,7 +7452,7 @@ func (x *ListGitBranchesRequest) String() string { func (*ListGitBranchesRequest) ProtoMessage() {} func (x *ListGitBranchesRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[108] + mi := &file_rill_runtime_v1_api_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7303,7 +7465,7 @@ func (x *ListGitBranchesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGitBranchesRequest.ProtoReflect.Descriptor instead. func (*ListGitBranchesRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{108} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{110} } func (x *ListGitBranchesRequest) GetInstanceId() string { @@ -7325,7 +7487,7 @@ type ListGitBranchesResponse struct { func (x *ListGitBranchesResponse) Reset() { *x = ListGitBranchesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[109] + mi := &file_rill_runtime_v1_api_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7338,7 +7500,7 @@ func (x *ListGitBranchesResponse) String() string { func (*ListGitBranchesResponse) ProtoMessage() {} func (x *ListGitBranchesResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[109] + mi := &file_rill_runtime_v1_api_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7351,7 +7513,7 @@ func (x *ListGitBranchesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGitBranchesResponse.ProtoReflect.Descriptor instead. func (*ListGitBranchesResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{109} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{111} } func (x *ListGitBranchesResponse) GetCurrentBranch() string { @@ -7381,7 +7543,7 @@ type GitBranch struct { func (x *GitBranch) Reset() { *x = GitBranch{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[110] + mi := &file_rill_runtime_v1_api_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7394,7 +7556,7 @@ func (x *GitBranch) String() string { func (*GitBranch) ProtoMessage() {} func (x *GitBranch) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[110] + mi := &file_rill_runtime_v1_api_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7407,7 +7569,7 @@ func (x *GitBranch) ProtoReflect() protoreflect.Message { // Deprecated: Use GitBranch.ProtoReflect.Descriptor instead. func (*GitBranch) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{110} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{112} } func (x *GitBranch) GetName() string { @@ -7443,7 +7605,7 @@ type GitCommitRequest struct { func (x *GitCommitRequest) Reset() { *x = GitCommitRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[111] + mi := &file_rill_runtime_v1_api_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7456,7 +7618,7 @@ func (x *GitCommitRequest) String() string { func (*GitCommitRequest) ProtoMessage() {} func (x *GitCommitRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[111] + mi := &file_rill_runtime_v1_api_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7469,7 +7631,7 @@ func (x *GitCommitRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GitCommitRequest.ProtoReflect.Descriptor instead. func (*GitCommitRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{111} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{113} } func (x *GitCommitRequest) GetInstanceId() string { @@ -7497,7 +7659,7 @@ type GitCommitResponse struct { func (x *GitCommitResponse) Reset() { *x = GitCommitResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[112] + mi := &file_rill_runtime_v1_api_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7510,7 +7672,7 @@ func (x *GitCommitResponse) String() string { func (*GitCommitResponse) ProtoMessage() {} func (x *GitCommitResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[112] + mi := &file_rill_runtime_v1_api_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7523,7 +7685,7 @@ func (x *GitCommitResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GitCommitResponse.ProtoReflect.Descriptor instead. func (*GitCommitResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{112} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{114} } func (x *GitCommitResponse) GetCommitSha() string { @@ -7546,7 +7708,7 @@ type RestoreGitCommitRequest struct { func (x *RestoreGitCommitRequest) Reset() { *x = RestoreGitCommitRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[113] + mi := &file_rill_runtime_v1_api_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7559,7 +7721,7 @@ func (x *RestoreGitCommitRequest) String() string { func (*RestoreGitCommitRequest) ProtoMessage() {} func (x *RestoreGitCommitRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[113] + mi := &file_rill_runtime_v1_api_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7572,7 +7734,7 @@ func (x *RestoreGitCommitRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreGitCommitRequest.ProtoReflect.Descriptor instead. func (*RestoreGitCommitRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{113} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{115} } func (x *RestoreGitCommitRequest) GetInstanceId() string { @@ -7601,7 +7763,7 @@ type RestoreGitCommitResponse struct { func (x *RestoreGitCommitResponse) Reset() { *x = RestoreGitCommitResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[114] + mi := &file_rill_runtime_v1_api_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7614,7 +7776,7 @@ func (x *RestoreGitCommitResponse) String() string { func (*RestoreGitCommitResponse) ProtoMessage() {} func (x *RestoreGitCommitResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[114] + mi := &file_rill_runtime_v1_api_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7627,7 +7789,7 @@ func (x *RestoreGitCommitResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RestoreGitCommitResponse.ProtoReflect.Descriptor instead. func (*RestoreGitCommitResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{114} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{116} } func (x *RestoreGitCommitResponse) GetNewCommitSha() string { @@ -7651,7 +7813,7 @@ type GitMergeToBranchRequest struct { func (x *GitMergeToBranchRequest) Reset() { *x = GitMergeToBranchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[115] + mi := &file_rill_runtime_v1_api_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7664,7 +7826,7 @@ func (x *GitMergeToBranchRequest) String() string { func (*GitMergeToBranchRequest) ProtoMessage() {} func (x *GitMergeToBranchRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[115] + mi := &file_rill_runtime_v1_api_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7677,7 +7839,7 @@ func (x *GitMergeToBranchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GitMergeToBranchRequest.ProtoReflect.Descriptor instead. func (*GitMergeToBranchRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{115} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{117} } func (x *GitMergeToBranchRequest) GetInstanceId() string { @@ -7715,7 +7877,7 @@ type GitMergeToBranchResponse struct { func (x *GitMergeToBranchResponse) Reset() { *x = GitMergeToBranchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[116] + mi := &file_rill_runtime_v1_api_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7728,7 +7890,7 @@ func (x *GitMergeToBranchResponse) String() string { func (*GitMergeToBranchResponse) ProtoMessage() {} func (x *GitMergeToBranchResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[116] + mi := &file_rill_runtime_v1_api_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7741,7 +7903,7 @@ func (x *GitMergeToBranchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GitMergeToBranchResponse.ProtoReflect.Descriptor instead. func (*GitMergeToBranchResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{116} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{118} } func (x *GitMergeToBranchResponse) GetOutput() string { @@ -7772,7 +7934,7 @@ type GitSwitchBranchRequest struct { func (x *GitSwitchBranchRequest) Reset() { *x = GitSwitchBranchRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[117] + mi := &file_rill_runtime_v1_api_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7785,7 +7947,7 @@ func (x *GitSwitchBranchRequest) String() string { func (*GitSwitchBranchRequest) ProtoMessage() {} func (x *GitSwitchBranchRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[117] + mi := &file_rill_runtime_v1_api_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7798,7 +7960,7 @@ func (x *GitSwitchBranchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GitSwitchBranchRequest.ProtoReflect.Descriptor instead. func (*GitSwitchBranchRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{117} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{119} } func (x *GitSwitchBranchRequest) GetInstanceId() string { @@ -7838,7 +8000,7 @@ type GitSwitchBranchResponse struct { func (x *GitSwitchBranchResponse) Reset() { *x = GitSwitchBranchResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[118] + mi := &file_rill_runtime_v1_api_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7851,7 +8013,7 @@ func (x *GitSwitchBranchResponse) String() string { func (*GitSwitchBranchResponse) ProtoMessage() {} func (x *GitSwitchBranchResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[118] + mi := &file_rill_runtime_v1_api_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7864,7 +8026,7 @@ func (x *GitSwitchBranchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GitSwitchBranchResponse.ProtoReflect.Descriptor instead. func (*GitSwitchBranchResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{118} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{120} } type GitPullRequest struct { @@ -7879,7 +8041,7 @@ type GitPullRequest struct { func (x *GitPullRequest) Reset() { *x = GitPullRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[119] + mi := &file_rill_runtime_v1_api_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7892,7 +8054,7 @@ func (x *GitPullRequest) String() string { func (*GitPullRequest) ProtoMessage() {} func (x *GitPullRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[119] + mi := &file_rill_runtime_v1_api_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7905,7 +8067,7 @@ func (x *GitPullRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GitPullRequest.ProtoReflect.Descriptor instead. func (*GitPullRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{119} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{121} } func (x *GitPullRequest) GetInstanceId() string { @@ -7938,7 +8100,7 @@ type GitPullResponse struct { func (x *GitPullResponse) Reset() { *x = GitPullResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[120] + mi := &file_rill_runtime_v1_api_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7951,7 +8113,7 @@ func (x *GitPullResponse) String() string { func (*GitPullResponse) ProtoMessage() {} func (x *GitPullResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[120] + mi := &file_rill_runtime_v1_api_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7964,7 +8126,7 @@ func (x *GitPullResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GitPullResponse.ProtoReflect.Descriptor instead. func (*GitPullResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{120} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{122} } func (x *GitPullResponse) GetOutput() string { @@ -8001,7 +8163,7 @@ type GitPushRequest struct { func (x *GitPushRequest) Reset() { *x = GitPushRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[121] + mi := &file_rill_runtime_v1_api_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8014,7 +8176,7 @@ func (x *GitPushRequest) String() string { func (*GitPushRequest) ProtoMessage() {} func (x *GitPushRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[121] + mi := &file_rill_runtime_v1_api_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8027,7 +8189,7 @@ func (x *GitPushRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GitPushRequest.ProtoReflect.Descriptor instead. func (*GitPushRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{121} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{123} } func (x *GitPushRequest) GetInstanceId() string { @@ -8060,7 +8222,7 @@ type GitPushResponse struct { func (x *GitPushResponse) Reset() { *x = GitPushResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[122] + mi := &file_rill_runtime_v1_api_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8073,7 +8235,7 @@ func (x *GitPushResponse) String() string { func (*GitPushResponse) ProtoMessage() {} func (x *GitPushResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[122] + mi := &file_rill_runtime_v1_api_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8086,7 +8248,7 @@ func (x *GitPushResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GitPushResponse.ProtoReflect.Descriptor instead. func (*GitPushResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{122} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{124} } type PushEnvRequest struct { @@ -8100,7 +8262,7 @@ type PushEnvRequest struct { func (x *PushEnvRequest) Reset() { *x = PushEnvRequest{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[123] + mi := &file_rill_runtime_v1_api_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8113,7 +8275,7 @@ func (x *PushEnvRequest) String() string { func (*PushEnvRequest) ProtoMessage() {} func (x *PushEnvRequest) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[123] + mi := &file_rill_runtime_v1_api_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8126,7 +8288,7 @@ func (x *PushEnvRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PushEnvRequest.ProtoReflect.Descriptor instead. func (*PushEnvRequest) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{123} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{125} } func (x *PushEnvRequest) GetInstanceId() string { @@ -8150,7 +8312,7 @@ type PushEnvResponse struct { func (x *PushEnvResponse) Reset() { *x = PushEnvResponse{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[124] + mi := &file_rill_runtime_v1_api_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8163,7 +8325,7 @@ func (x *PushEnvResponse) String() string { func (*PushEnvResponse) ProtoMessage() {} func (x *PushEnvResponse) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[124] + mi := &file_rill_runtime_v1_api_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8176,7 +8338,7 @@ func (x *PushEnvResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PushEnvResponse.ProtoReflect.Descriptor instead. func (*PushEnvResponse) Descriptor() ([]byte, []int) { - return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{124} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{126} } func (x *PushEnvResponse) GetAddedCount() int32 { @@ -8226,7 +8388,7 @@ type ConnectorDriver_Property struct { func (x *ConnectorDriver_Property) Reset() { *x = ConnectorDriver_Property{} if protoimpl.UnsafeEnabled { - mi := &file_rill_runtime_v1_api_proto_msgTypes[134] + mi := &file_rill_runtime_v1_api_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8239,7 +8401,7 @@ func (x *ConnectorDriver_Property) String() string { func (*ConnectorDriver_Property) ProtoMessage() {} func (x *ConnectorDriver_Property) ProtoReflect() protoreflect.Message { - mi := &file_rill_runtime_v1_api_proto_msgTypes[134] + mi := &file_rill_runtime_v1_api_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8332,6 +8494,70 @@ func (x *ConnectorDriver_Property) GetNoPrompt() bool { return false } +type GitDiffResponse_GitFileChange struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Status GitDiffResponse_GitFileStatus `protobuf:"varint,2,opt,name=status,proto3,enum=rill.runtime.v1.GitDiffResponse_GitFileStatus" json:"status,omitempty"` + // old_path is the previous path; only set when status is GIT_FILE_STATUS_RENAMED. + OldPath string `protobuf:"bytes,3,opt,name=old_path,json=oldPath,proto3" json:"old_path,omitempty"` +} + +func (x *GitDiffResponse_GitFileChange) Reset() { + *x = GitDiffResponse_GitFileChange{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_api_proto_msgTypes[139] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GitDiffResponse_GitFileChange) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GitDiffResponse_GitFileChange) ProtoMessage() {} + +func (x *GitDiffResponse_GitFileChange) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[139] + 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 GitDiffResponse_GitFileChange.ProtoReflect.Descriptor instead. +func (*GitDiffResponse_GitFileChange) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{109, 0} +} + +func (x *GitDiffResponse_GitFileChange) GetPath() string { + if x != nil { + return x.Path + } + return "" +} + +func (x *GitDiffResponse_GitFileChange) GetStatus() GitDiffResponse_GitFileStatus { + if x != nil { + return x.Status + } + return GitDiffResponse_GIT_FILE_STATUS_UNSPECIFIED +} + +func (x *GitDiffResponse_GitFileChange) GetOldPath() string { + if x != nil { + return x.OldPath + } + return "" +} + var File_rill_runtime_v1_api_proto protoreflect.FileDescriptor var file_rill_runtime_v1_api_proto_rawDesc = []byte{ @@ -9488,639 +9714,679 @@ var file_rill_runtime_v1_api_proto_rawDesc = []byte{ 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x73, 0x22, 0x53, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, - 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x78, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x47, - 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, - 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, - 0x73, 0x22, 0x77, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, 0x73, 0x44, - 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x64, 0x69, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x10, 0x47, 0x69, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, - 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, - 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x22, 0x32, 0x0a, 0x11, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, - 0x73, 0x68, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x53, 0x68, 0x61, 0x22, 0x7c, 0x0a, 0x17, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x47, - 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, - 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, - 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, - 0x68, 0x61, 0x22, 0x40, 0x0a, 0x18, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x47, 0x69, 0x74, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, - 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x53, 0x68, 0x61, 0x22, 0x82, 0x01, 0x0a, 0x17, 0x47, 0x69, 0x74, 0x4d, 0x65, 0x72, 0x67, - 0x65, 0x54, 0x6f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, - 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x4e, 0x0a, 0x18, 0x47, 0x69, 0x74, - 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x22, 0xb5, 0x01, 0x0a, 0x16, 0x47, 0x69, - 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, + 0x74, 0x73, 0x22, 0x70, 0x0a, 0x0e, 0x47, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, - 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, - 0x30, 0x0a, 0x14, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x69, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x70, 0x0a, 0x0e, - 0x47, 0x69, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, - 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, - 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x73, - 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x22, 0x6a, - 0x0a, 0x0f, 0x47, 0x69, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x72, - 0x67, 0x65, 0x64, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1a, - 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x47, - 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, - 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, - 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, - 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, 0x11, 0x0a, 0x0f, 0x47, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x0e, 0x50, 0x75, 0x73, 0x68, - 0x45, 0x6e, 0x76, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, + 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x22, 0x95, 0x03, 0x0a, 0x0f, 0x47, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x47, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x86, 0x01, + 0x0a, 0x0d, 0x47, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, + 0x61, 0x74, 0x68, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x47, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, + 0x6c, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, + 0x6c, 0x64, 0x50, 0x61, 0x74, 0x68, 0x22, 0xa3, 0x01, 0x0a, 0x0d, 0x47, 0x69, 0x74, 0x46, 0x69, + 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x47, 0x49, 0x54, 0x5f, + 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x47, 0x49, 0x54, + 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x44, 0x44, + 0x45, 0x44, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x49, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x4f, 0x44, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x49, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, + 0x1b, 0x0a, 0x17, 0x47, 0x49, 0x54, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4e, 0x41, 0x4d, 0x45, 0x44, 0x10, 0x04, 0x22, 0x53, 0x0a, 0x16, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, + 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, + 0x64, 0x22, 0x78, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x52, 0x08, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x22, 0x77, 0x0a, 0x09, 0x47, + 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, + 0x68, 0x61, 0x73, 0x5f, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x68, 0x61, 0x73, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, + 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x12, 0x65, 0x64, 0x69, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, + 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x32, 0x0a, 0x11, 0x47, 0x69, + 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x22, 0x7c, + 0x0a, 0x17, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, + 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, + 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, + 0x68, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x22, 0x40, 0x0a, 0x18, + 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x22, 0x82, + 0x01, 0x0a, 0x17, 0x47, 0x69, 0x74, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x42, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x0f, 0x50, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x76, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x65, - 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, - 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x54, - 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x46, - 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x49, 0x4c, 0x45, 0x5f, - 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, - 0x11, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, - 0x54, 0x45, 0x10, 0x02, 0x2a, 0x8c, 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, - 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, - 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, - 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, - 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, - 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x10, 0x12, 0x13, - 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, - 0x4c, 0x10, 0x14, 0x2a, 0x64, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, - 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, - 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x19, - 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x32, 0xf4, 0x3d, 0x0a, 0x0e, 0x52, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x04, - 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x70, - 0x69, 0x6e, 0x67, 0x12, 0x5d, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x1e, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x12, 0x8d, 0x01, 0x0a, 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, + 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x14, 0x0a, + 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x22, 0x4e, 0x0a, 0x18, 0x47, 0x69, 0x74, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, + 0x6f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, + 0x69, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, 0x6c, + 0x69, 0x63, 0x74, 0x22, 0xb5, 0x01, 0x0a, 0x16, 0x47, 0x69, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, + 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, + 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x67, 0x6e, + 0x6f, 0x72, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x4c, + 0x6f, 0x63, 0x61, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x47, + 0x69, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x70, 0x0a, 0x0e, 0x47, 0x69, 0x74, 0x50, 0x75, 0x6c, + 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, + 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, + 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x63, + 0x61, 0x72, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x22, 0x6a, 0x0a, 0x0f, 0x47, 0x69, 0x74, 0x50, + 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x64, 0x5f, 0x62, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x72, 0x67, + 0x65, 0x64, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6e, 0x66, + 0x6c, 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6e, 0x66, + 0x6c, 0x69, 0x63, 0x74, 0x22, 0x88, 0x01, 0x0a, 0x0e, 0x47, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, + 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, + 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, 0x72, + 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x22, + 0x11, 0x0a, 0x0f, 0x47, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x0e, 0x50, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x76, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xfa, 0x42, 0x15, 0x72, 0x13, + 0x32, 0x11, 0x5e, 0x5b, 0x5f, 0x5c, 0x2d, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x2b, 0x24, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, + 0x57, 0x0a, 0x0f, 0x50, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x76, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x54, 0x0a, 0x09, 0x46, 0x69, 0x6c, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x16, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x56, + 0x45, 0x4e, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x14, 0x0a, 0x10, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x46, 0x49, 0x4c, 0x45, 0x5f, + 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x2a, 0x8c, + 0x01, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x19, 0x0a, 0x15, 0x4c, + 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, + 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4c, + 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x08, 0x12, + 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x57, 0x41, 0x52, + 0x4e, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, + 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, + 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, 0x14, 0x2a, 0x64, 0x0a, + 0x0d, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1e, + 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, + 0x0a, 0x14, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, + 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, + 0x45, 0x10, 0x02, 0x32, 0xf0, 0x3e, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1c, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x5d, 0x0a, + 0x06, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, + 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x8d, 0x01, 0x0a, + 0x0e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, + 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x75, 0x0a, 0x0d, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x12, 0x22, - 0x2f, 0x76, 0x31, 0x2f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x12, 0x75, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x74, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x7b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x0c, 0x45, 0x64, 0x69, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x64, 0x7d, 0x12, 0x7b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, + 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, + 0x83, 0x01, 0x0a, 0x0c, 0x45, 0x64, 0x69, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, - 0x64, 0x69, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x32, 0x1b, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x91, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x6f, - 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x32, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x89, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x20, 0x3a, 0x01, 0x2a, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x12, 0x91, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, - 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, + 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x2d, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7d, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0a, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, + 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x80, + 0x01, 0x0a, 0x07, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, + 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x96, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x6c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, - 0x22, 0x29, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, - 0x6c, 0x6f, 0x61, 0x64, 0x2d, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x7d, 0x0a, 0x09, 0x4c, - 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x12, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0a, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, - 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, + 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x64, 0x69, 0x72, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x57, 0x61, 0x74, 0x63, 0x68, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, 0x2f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x77, 0x61, - 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x65, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x80, 0x01, 0x0a, 0x07, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, - 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x96, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x27, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x64, 0x69, 0x72, - 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, - 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, - 0x2a, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x2f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x8a, 0x01, 0x0a, 0x0a, 0x52, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, - 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x71, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x8a, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x71, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, + 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, - 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, - 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x0d, 0x55, 0x6e, - 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, - 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2d, - 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x93, 0x01, 0x0a, 0x0b, 0x55, 0x6e, 0x70, 0x61, - 0x63, 0x6b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, + 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x12, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x73, 0x12, 0x9b, 0x01, 0x0a, 0x0d, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, - 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2d, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x12, 0xc0, 0x01, - 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, + 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x3a, 0x01, 0x2a, 0x22, + 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x2d, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x12, 0x93, 0x01, 0x0a, 0x0b, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, - 0x61, 0x74, 0x65, 0x2d, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x76, 0x69, 0x65, 0x77, - 0x12, 0xab, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, - 0x76, 0x61, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, - 0x6e, 0x76, 0x61, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x76, 0x31, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x67, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x12, 0x95, - 0x01, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x72, 0x65, - 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x76, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, - 0x73, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x84, - 0x01, 0x0a, 0x09, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x21, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, - 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x77, 0x61, - 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x9a, 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, - 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x63, + 0x6b, 0x2d, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x12, 0xc0, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, + 0x69, 0x6c, 0x65, 0x12, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, + 0x2a, 0x22, 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x76, 0x69, 0x65, 0x77, 0x12, 0xab, 0x01, 0x0a, 0x12, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x46, 0x69, 0x6c, + 0x65, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, 0x76, + 0x61, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x43, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x0a, - 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x2d, 0x63, 0x61, 0x6e, 0x76, 0x61, 0x73, 0x12, 0x95, 0x01, 0x0a, 0x0d, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x72, + 0x12, 0x76, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1f, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x12, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x09, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x6f, + 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x4c, 0x6f, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x6c, 0x6f, 0x67, 0x73, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, + 0x8d, 0x01, 0x0a, 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, + 0x9a, 0x01, 0x0a, 0x0e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x61, 0x74, + 0x63, 0x68, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x73, 0x2f, 0x65, 0x78, 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x12, 0x47, - 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x74, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x37, 0x12, 0x35, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x2f, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xb7, 0x01, 0x0a, 0x13, 0x53, 0x6b, + 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x77, 0x61, 0x74, 0x63, 0x68, 0x30, 0x01, 0x12, 0x86, 0x01, 0x0a, + 0x0b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, + 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x72, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, + 0x70, 0x6c, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, 0x65, 0x78, 0x70, + 0x6c, 0x6f, 0x72, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x12, 0x35, 0x2f, 0x76, + 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x12, 0xb7, 0x01, 0x0a, 0x13, 0x53, 0x6b, 0x69, 0x70, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x61, 0x72, - 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3f, 0x3a, 0x01, 0x2a, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x7d, 0x2f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, - 0x6b, 0x69, 0x70, 0x12, 0x8e, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, - 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x22, - 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x12, 0x90, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, - 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, - 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0xa2, 0x01, 0x0a, 0x11, 0x41, 0x6e, 0x61, 0x6c, - 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x29, 0x2e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x4d, + 0x6f, 0x64, 0x65, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x45, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3f, 0x3a, 0x01, + 0x2a, 0x22, 0x3a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x7d, 0x2f, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x8e, 0x01, + 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, + 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x90, + 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x74, + 0x61, 0x12, 0xa2, 0x01, 0x0a, 0x11, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, + 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, + 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x12, 0xb3, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x73, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, 0x12, 0x30, 0x2f, 0x76, 0x31, 0x2f, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x73, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x12, 0xa0, 0x01, 0x0a, + 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, - 0x7a, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x12, 0xb3, 0x01, 0x0a, - 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x6f, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x32, - 0x12, 0x30, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x73, 0x12, 0xa0, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, - 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, - 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbb, 0x01, 0x0a, 0x11, 0x53, 0x68, 0x61, 0x72, 0x65, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, - 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6e, - 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, - 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x12, 0xb7, 0x01, 0x0a, 0x10, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x76, 0x65, - 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x6f, - 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x2e, 0x12, 0x2c, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, + 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, + 0xac, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, + 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, + 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbb, + 0x01, 0x0a, 0x11, 0x53, 0x68, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x76, + 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x68, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x12, 0xb7, 0x01, 0x0a, + 0x10, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, 0x2a, 0x22, 0x43, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6b, 0x12, 0x80, 0x01, 0x0a, - 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x12, - 0x83, 0x01, 0x0a, 0x08, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, - 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x6f, + 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x48, 0x3a, 0x01, + 0x2a, 0x22, 0x43, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, + 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, + 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x66, 0x6f, 0x72, 0x6b, 0x12, 0x80, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x54, + 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, 0x6f, 0x6c, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x6f, + 0x6f, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x61, 0x69, 0x2f, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0x83, 0x01, 0x0a, 0x08, 0x43, 0x6f, + 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, - 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, - 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, - 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, - 0xb9, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x49, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, + 0xa7, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x33, 0x3a, 0x01, 0x2a, 0x22, 0x2e, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, + 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0xb9, 0x01, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x41, 0x49, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x49, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x49, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x49, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x12, 0x54, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x70, 0x0a, 0x0b, 0x49, - 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, - 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x01, 0x2a, - 0x22, 0x0b, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x76, 0x2d, 0x6a, 0x77, 0x74, 0x12, 0x9e, 0x01, - 0x0a, 0x10, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, - 0x65, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x56, 0x61, 0x72, 0x69, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x56, 0x12, + 0x54, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x69, 0x2f, + 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x63, + 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x70, 0x0a, 0x0b, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, + 0x76, 0x4a, 0x57, 0x54, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, 0x65, 0x44, 0x65, 0x76, 0x4a, + 0x57, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x73, 0x73, 0x75, + 0x65, 0x44, 0x65, 0x76, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x01, 0x2a, 0x22, 0x0b, 0x2f, 0x76, 0x31, 0x2f, + 0x64, 0x65, 0x76, 0x2d, 0x6a, 0x77, 0x74, 0x12, 0x9e, 0x01, 0x0a, 0x10, 0x41, 0x6e, 0x61, 0x6c, + 0x79, 0x7a, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, - 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x76, 0x61, 0x72, - 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x12, 0x92, - 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, 0x2f, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, + 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, + 0x2f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x12, 0x92, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x82, 0x01, + 0x0a, 0x09, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, + 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, - 0x12, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, - 0x74, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x96, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, - 0x74, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x42, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, + 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x7a, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, 0x12, 0x1f, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x69, 0x74, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x64, 0x69, 0x66, 0x66, 0x12, 0x96, + 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x65, 0x73, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x47, 0x69, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, + 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x62, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, - 0x73, 0x12, 0x85, 0x01, 0x0a, 0x09, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, - 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x3a, 0x01, - 0x2a, 0x22, 0x26, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, - 0x69, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0xa8, 0x01, 0x0a, 0x10, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x28, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, + 0xa8, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x47, 0x69, + 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x3a, 0x01, 0x2a, 0x22, 0x34, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, - 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, - 0x73, 0x68, 0x61, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x10, 0x47, 0x69, 0x74, 0x4d, 0x65, 0x72, 0x67, - 0x65, 0x54, 0x6f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x39, 0x3a, 0x01, 0x2a, 0x22, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2f, 0x7b, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x7d, 0x12, 0x99, 0x01, 0x0a, 0x10, 0x47, + 0x69, 0x74, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, + 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x69, 0x74, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x4d, - 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x6d, 0x65, 0x72, 0x67, 0x65, - 0x12, 0xa0, 0x01, 0x0a, 0x0f, 0x47, 0x69, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x69, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, - 0x01, 0x2a, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, + 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, + 0x2f, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x12, 0xa0, 0x01, 0x0a, 0x0f, 0x47, 0x69, 0x74, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, + 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x42, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, 0x2a, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x65, 0x73, 0x2f, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x69, 0x74, + 0x50, 0x75, 0x6c, 0x6c, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, + 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x67, 0x69, 0x74, 0x2f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x2f, 0x73, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x12, 0x1f, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x69, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x69, 0x74, 0x50, 0x75, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x70, 0x75, - 0x6c, 0x6c, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, 0x12, 0x1f, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, 0x69, 0x74, 0x2f, 0x70, 0x75, 0x73, - 0x68, 0x12, 0x7d, 0x0a, 0x07, 0x50, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x76, 0x12, 0x1f, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x75, 0x73, 0x68, 0x45, 0x6e, 0x76, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x76, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x6e, 0x76, 0x2f, 0x70, 0x75, 0x73, 0x68, - 0x42, 0xbb, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x52, 0x58, 0xaa, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x2e, - 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x52, 0x69, 0x6c, - 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x52, - 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, - 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x52, 0x69, 0x6c, - 0x6c, 0x3a, 0x3a, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x67, 0x69, 0x74, 0x2f, 0x70, 0x75, 0x6c, 0x6c, 0x12, 0x7d, 0x0a, 0x07, 0x47, 0x69, 0x74, 0x50, + 0x75, 0x73, 0x68, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, + 0x2a, 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, + 0x69, 0x74, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x12, 0x7d, 0x0a, 0x07, 0x50, 0x75, 0x73, 0x68, 0x45, + 0x6e, 0x76, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x76, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x45, 0x6e, 0x76, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x3a, 0x01, 0x2a, + 0x22, 0x24, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x6e, + 0x76, 0x2f, 0x70, 0x75, 0x73, 0x68, 0x42, 0xbb, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x08, + 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3c, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2f, + 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x72, + 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x52, 0x58, 0xaa, 0x02, + 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, + 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x11, 0x52, 0x69, 0x6c, 0x6c, 0x3a, 0x3a, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -10135,371 +10401,379 @@ func file_rill_runtime_v1_api_proto_rawDescGZIP() []byte { return file_rill_runtime_v1_api_proto_rawDescData } -var file_rill_runtime_v1_api_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_rill_runtime_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 137) +var file_rill_runtime_v1_api_proto_enumTypes = make([]protoimpl.EnumInfo, 5) +var file_rill_runtime_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 140) var file_rill_runtime_v1_api_proto_goTypes = []any{ (FileEvent)(0), // 0: rill.runtime.v1.FileEvent (LogLevel)(0), // 1: rill.runtime.v1.LogLevel (ResourceEvent)(0), // 2: rill.runtime.v1.ResourceEvent (ConnectorDriver_Property_Type)(0), // 3: rill.runtime.v1.ConnectorDriver.Property.Type - (*PingRequest)(nil), // 4: rill.runtime.v1.PingRequest - (*PingResponse)(nil), // 5: rill.runtime.v1.PingResponse - (*HealthRequest)(nil), // 6: rill.runtime.v1.HealthRequest - (*HealthResponse)(nil), // 7: rill.runtime.v1.HealthResponse - (*InstanceHealthRequest)(nil), // 8: rill.runtime.v1.InstanceHealthRequest - (*InstanceHealthResponse)(nil), // 9: rill.runtime.v1.InstanceHealthResponse - (*InstanceHealth)(nil), // 10: rill.runtime.v1.InstanceHealth - (*Instance)(nil), // 11: rill.runtime.v1.Instance - (*Connector)(nil), // 12: rill.runtime.v1.Connector - (*ListInstancesRequest)(nil), // 13: rill.runtime.v1.ListInstancesRequest - (*ListInstancesResponse)(nil), // 14: rill.runtime.v1.ListInstancesResponse - (*GetInstanceRequest)(nil), // 15: rill.runtime.v1.GetInstanceRequest - (*GetInstanceResponse)(nil), // 16: rill.runtime.v1.GetInstanceResponse - (*CreateInstanceRequest)(nil), // 17: rill.runtime.v1.CreateInstanceRequest - (*CreateInstanceResponse)(nil), // 18: rill.runtime.v1.CreateInstanceResponse - (*DeleteInstanceRequest)(nil), // 19: rill.runtime.v1.DeleteInstanceRequest - (*DeleteInstanceResponse)(nil), // 20: rill.runtime.v1.DeleteInstanceResponse - (*EditInstanceRequest)(nil), // 21: rill.runtime.v1.EditInstanceRequest - (*EditInstanceResponse)(nil), // 22: rill.runtime.v1.EditInstanceResponse - (*ReloadConfigRequest)(nil), // 23: rill.runtime.v1.ReloadConfigRequest - (*ReloadConfigResponse)(nil), // 24: rill.runtime.v1.ReloadConfigResponse - (*ListFilesRequest)(nil), // 25: rill.runtime.v1.ListFilesRequest - (*ListFilesResponse)(nil), // 26: rill.runtime.v1.ListFilesResponse - (*DirEntry)(nil), // 27: rill.runtime.v1.DirEntry - (*WatchFilesRequest)(nil), // 28: rill.runtime.v1.WatchFilesRequest - (*WatchFilesResponse)(nil), // 29: rill.runtime.v1.WatchFilesResponse - (*GetFileRequest)(nil), // 30: rill.runtime.v1.GetFileRequest - (*GetFileResponse)(nil), // 31: rill.runtime.v1.GetFileResponse - (*PutFileRequest)(nil), // 32: rill.runtime.v1.PutFileRequest - (*PutFileResponse)(nil), // 33: rill.runtime.v1.PutFileResponse - (*CreateDirectoryRequest)(nil), // 34: rill.runtime.v1.CreateDirectoryRequest - (*CreateDirectoryResponse)(nil), // 35: rill.runtime.v1.CreateDirectoryResponse - (*DeleteFileRequest)(nil), // 36: rill.runtime.v1.DeleteFileRequest - (*DeleteFileResponse)(nil), // 37: rill.runtime.v1.DeleteFileResponse - (*RenameFileRequest)(nil), // 38: rill.runtime.v1.RenameFileRequest - (*RenameFileResponse)(nil), // 39: rill.runtime.v1.RenameFileResponse - (*Example)(nil), // 40: rill.runtime.v1.Example - (*ListExamplesRequest)(nil), // 41: rill.runtime.v1.ListExamplesRequest - (*ListExamplesResponse)(nil), // 42: rill.runtime.v1.ListExamplesResponse - (*UnpackExampleRequest)(nil), // 43: rill.runtime.v1.UnpackExampleRequest - (*UnpackExampleResponse)(nil), // 44: rill.runtime.v1.UnpackExampleResponse - (*UnpackEmptyRequest)(nil), // 45: rill.runtime.v1.UnpackEmptyRequest - (*UnpackEmptyResponse)(nil), // 46: rill.runtime.v1.UnpackEmptyResponse - (*GenerateMetricsViewFileRequest)(nil), // 47: rill.runtime.v1.GenerateMetricsViewFileRequest - (*GenerateMetricsViewFileResponse)(nil), // 48: rill.runtime.v1.GenerateMetricsViewFileResponse - (*GenerateCanvasFileRequest)(nil), // 49: rill.runtime.v1.GenerateCanvasFileRequest - (*GenerateCanvasFileResponse)(nil), // 50: rill.runtime.v1.GenerateCanvasFileResponse - (*QueryResolverRequest)(nil), // 51: rill.runtime.v1.QueryResolverRequest - (*QueryResolverResponse)(nil), // 52: rill.runtime.v1.QueryResolverResponse - (*Log)(nil), // 53: rill.runtime.v1.Log - (*ModelPartition)(nil), // 54: rill.runtime.v1.ModelPartition - (*GetLogsRequest)(nil), // 55: rill.runtime.v1.GetLogsRequest - (*GetLogsResponse)(nil), // 56: rill.runtime.v1.GetLogsResponse - (*WatchLogsRequest)(nil), // 57: rill.runtime.v1.WatchLogsRequest - (*WatchLogsResponse)(nil), // 58: rill.runtime.v1.WatchLogsResponse - (*ListResourcesRequest)(nil), // 59: rill.runtime.v1.ListResourcesRequest - (*ListResourcesResponse)(nil), // 60: rill.runtime.v1.ListResourcesResponse - (*WatchResourcesRequest)(nil), // 61: rill.runtime.v1.WatchResourcesRequest - (*WatchResourcesResponse)(nil), // 62: rill.runtime.v1.WatchResourcesResponse - (*GetResourceRequest)(nil), // 63: rill.runtime.v1.GetResourceRequest - (*GetResourceResponse)(nil), // 64: rill.runtime.v1.GetResourceResponse - (*GetExploreRequest)(nil), // 65: rill.runtime.v1.GetExploreRequest - (*GetExploreResponse)(nil), // 66: rill.runtime.v1.GetExploreResponse - (*GetModelPartitionsRequest)(nil), // 67: rill.runtime.v1.GetModelPartitionsRequest - (*GetModelPartitionsResponse)(nil), // 68: rill.runtime.v1.GetModelPartitionsResponse - (*SkipModelPartitionsRequest)(nil), // 69: rill.runtime.v1.SkipModelPartitionsRequest - (*SkipModelPartitionsResponse)(nil), // 70: rill.runtime.v1.SkipModelPartitionsResponse - (*CreateTriggerRequest)(nil), // 71: rill.runtime.v1.CreateTriggerRequest - (*CreateTriggerResponse)(nil), // 72: rill.runtime.v1.CreateTriggerResponse - (*ConnectorDriver)(nil), // 73: rill.runtime.v1.ConnectorDriver - (*AnalyzedConnector)(nil), // 74: rill.runtime.v1.AnalyzedConnector - (*ListConnectorDriversRequest)(nil), // 75: rill.runtime.v1.ListConnectorDriversRequest - (*ListConnectorDriversResponse)(nil), // 76: rill.runtime.v1.ListConnectorDriversResponse - (*AnalyzeConnectorsRequest)(nil), // 77: rill.runtime.v1.AnalyzeConnectorsRequest - (*AnalyzeConnectorsResponse)(nil), // 78: rill.runtime.v1.AnalyzeConnectorsResponse - (*ListNotifierConnectorsRequest)(nil), // 79: rill.runtime.v1.ListNotifierConnectorsRequest - (*ListNotifierConnectorsResponse)(nil), // 80: rill.runtime.v1.ListNotifierConnectorsResponse - (*Conversation)(nil), // 81: rill.runtime.v1.Conversation - (*Message)(nil), // 82: rill.runtime.v1.Message - (*AnalystAgentContext)(nil), // 83: rill.runtime.v1.AnalystAgentContext - (*DeveloperAgentContext)(nil), // 84: rill.runtime.v1.DeveloperAgentContext - (*FeedbackAgentContext)(nil), // 85: rill.runtime.v1.FeedbackAgentContext - (*ListConversationsRequest)(nil), // 86: rill.runtime.v1.ListConversationsRequest - (*ListConversationsResponse)(nil), // 87: rill.runtime.v1.ListConversationsResponse - (*GetConversationRequest)(nil), // 88: rill.runtime.v1.GetConversationRequest - (*GetConversationResponse)(nil), // 89: rill.runtime.v1.GetConversationResponse - (*ShareConversationRequest)(nil), // 90: rill.runtime.v1.ShareConversationRequest - (*ShareConversationResponse)(nil), // 91: rill.runtime.v1.ShareConversationResponse - (*ForkConversationRequest)(nil), // 92: rill.runtime.v1.ForkConversationRequest - (*ForkConversationResponse)(nil), // 93: rill.runtime.v1.ForkConversationResponse - (*ListToolsRequest)(nil), // 94: rill.runtime.v1.ListToolsRequest - (*ListToolsResponse)(nil), // 95: rill.runtime.v1.ListToolsResponse - (*CompleteRequest)(nil), // 96: rill.runtime.v1.CompleteRequest - (*CompleteResponse)(nil), // 97: rill.runtime.v1.CompleteResponse - (*CompleteStreamingRequest)(nil), // 98: rill.runtime.v1.CompleteStreamingRequest - (*CompleteStreamingResponse)(nil), // 99: rill.runtime.v1.CompleteStreamingResponse - (*GetAIMessageRequest)(nil), // 100: rill.runtime.v1.GetAIMessageRequest - (*GetAIMessageResponse)(nil), // 101: rill.runtime.v1.GetAIMessageResponse - (*IssueDevJWTRequest)(nil), // 102: rill.runtime.v1.IssueDevJWTRequest - (*IssueDevJWTResponse)(nil), // 103: rill.runtime.v1.IssueDevJWTResponse - (*AnalyzeVariablesRequest)(nil), // 104: rill.runtime.v1.AnalyzeVariablesRequest - (*AnalyzeVariablesResponse)(nil), // 105: rill.runtime.v1.AnalyzeVariablesResponse - (*AnalyzedVariable)(nil), // 106: rill.runtime.v1.AnalyzedVariable - (*ListGitCommitsRequest)(nil), // 107: rill.runtime.v1.ListGitCommitsRequest - (*ListGitCommitsResponse)(nil), // 108: rill.runtime.v1.ListGitCommitsResponse - (*GitCommit)(nil), // 109: rill.runtime.v1.GitCommit - (*GitStatusRequest)(nil), // 110: rill.runtime.v1.GitStatusRequest - (*GitStatusResponse)(nil), // 111: rill.runtime.v1.GitStatusResponse - (*ListGitBranchesRequest)(nil), // 112: rill.runtime.v1.ListGitBranchesRequest - (*ListGitBranchesResponse)(nil), // 113: rill.runtime.v1.ListGitBranchesResponse - (*GitBranch)(nil), // 114: rill.runtime.v1.GitBranch - (*GitCommitRequest)(nil), // 115: rill.runtime.v1.GitCommitRequest - (*GitCommitResponse)(nil), // 116: rill.runtime.v1.GitCommitResponse - (*RestoreGitCommitRequest)(nil), // 117: rill.runtime.v1.RestoreGitCommitRequest - (*RestoreGitCommitResponse)(nil), // 118: rill.runtime.v1.RestoreGitCommitResponse - (*GitMergeToBranchRequest)(nil), // 119: rill.runtime.v1.GitMergeToBranchRequest - (*GitMergeToBranchResponse)(nil), // 120: rill.runtime.v1.GitMergeToBranchResponse - (*GitSwitchBranchRequest)(nil), // 121: rill.runtime.v1.GitSwitchBranchRequest - (*GitSwitchBranchResponse)(nil), // 122: rill.runtime.v1.GitSwitchBranchResponse - (*GitPullRequest)(nil), // 123: rill.runtime.v1.GitPullRequest - (*GitPullResponse)(nil), // 124: rill.runtime.v1.GitPullResponse - (*GitPushRequest)(nil), // 125: rill.runtime.v1.GitPushRequest - (*GitPushResponse)(nil), // 126: rill.runtime.v1.GitPushResponse - (*PushEnvRequest)(nil), // 127: rill.runtime.v1.PushEnvRequest - (*PushEnvResponse)(nil), // 128: rill.runtime.v1.PushEnvResponse - nil, // 129: rill.runtime.v1.HealthResponse.InstancesHealthEntry - nil, // 130: rill.runtime.v1.InstanceHealth.MetricsViewErrorsEntry - nil, // 131: rill.runtime.v1.Instance.VariablesEntry - nil, // 132: rill.runtime.v1.Instance.ProjectVariablesEntry - nil, // 133: rill.runtime.v1.Instance.FeatureFlagsEntry - nil, // 134: rill.runtime.v1.Instance.AnnotationsEntry - nil, // 135: rill.runtime.v1.CreateInstanceRequest.VariablesEntry - nil, // 136: rill.runtime.v1.CreateInstanceRequest.SystemVariablesEntry - nil, // 137: rill.runtime.v1.CreateInstanceRequest.AnnotationsEntry - (*ConnectorDriver_Property)(nil), // 138: rill.runtime.v1.ConnectorDriver.Property - nil, // 139: rill.runtime.v1.AnalyzedConnector.EnvConfigEntry - nil, // 140: rill.runtime.v1.AnalystAgentContext.WherePerMetricsViewEntry - (*timestamppb.Timestamp)(nil), // 141: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 142: google.protobuf.Struct - (*StructType)(nil), // 143: rill.runtime.v1.StructType - (*Resource)(nil), // 144: rill.runtime.v1.Resource - (*ResourceName)(nil), // 145: rill.runtime.v1.ResourceName - (*RefreshModelTrigger)(nil), // 146: rill.runtime.v1.RefreshModelTrigger - (*v1.ContentBlock)(nil), // 147: rill.ai.v1.ContentBlock - (*Expression)(nil), // 148: rill.runtime.v1.Expression - (*v1.Tool)(nil), // 149: rill.ai.v1.Tool + (GitDiffResponse_GitFileStatus)(0), // 4: rill.runtime.v1.GitDiffResponse.GitFileStatus + (*PingRequest)(nil), // 5: rill.runtime.v1.PingRequest + (*PingResponse)(nil), // 6: rill.runtime.v1.PingResponse + (*HealthRequest)(nil), // 7: rill.runtime.v1.HealthRequest + (*HealthResponse)(nil), // 8: rill.runtime.v1.HealthResponse + (*InstanceHealthRequest)(nil), // 9: rill.runtime.v1.InstanceHealthRequest + (*InstanceHealthResponse)(nil), // 10: rill.runtime.v1.InstanceHealthResponse + (*InstanceHealth)(nil), // 11: rill.runtime.v1.InstanceHealth + (*Instance)(nil), // 12: rill.runtime.v1.Instance + (*Connector)(nil), // 13: rill.runtime.v1.Connector + (*ListInstancesRequest)(nil), // 14: rill.runtime.v1.ListInstancesRequest + (*ListInstancesResponse)(nil), // 15: rill.runtime.v1.ListInstancesResponse + (*GetInstanceRequest)(nil), // 16: rill.runtime.v1.GetInstanceRequest + (*GetInstanceResponse)(nil), // 17: rill.runtime.v1.GetInstanceResponse + (*CreateInstanceRequest)(nil), // 18: rill.runtime.v1.CreateInstanceRequest + (*CreateInstanceResponse)(nil), // 19: rill.runtime.v1.CreateInstanceResponse + (*DeleteInstanceRequest)(nil), // 20: rill.runtime.v1.DeleteInstanceRequest + (*DeleteInstanceResponse)(nil), // 21: rill.runtime.v1.DeleteInstanceResponse + (*EditInstanceRequest)(nil), // 22: rill.runtime.v1.EditInstanceRequest + (*EditInstanceResponse)(nil), // 23: rill.runtime.v1.EditInstanceResponse + (*ReloadConfigRequest)(nil), // 24: rill.runtime.v1.ReloadConfigRequest + (*ReloadConfigResponse)(nil), // 25: rill.runtime.v1.ReloadConfigResponse + (*ListFilesRequest)(nil), // 26: rill.runtime.v1.ListFilesRequest + (*ListFilesResponse)(nil), // 27: rill.runtime.v1.ListFilesResponse + (*DirEntry)(nil), // 28: rill.runtime.v1.DirEntry + (*WatchFilesRequest)(nil), // 29: rill.runtime.v1.WatchFilesRequest + (*WatchFilesResponse)(nil), // 30: rill.runtime.v1.WatchFilesResponse + (*GetFileRequest)(nil), // 31: rill.runtime.v1.GetFileRequest + (*GetFileResponse)(nil), // 32: rill.runtime.v1.GetFileResponse + (*PutFileRequest)(nil), // 33: rill.runtime.v1.PutFileRequest + (*PutFileResponse)(nil), // 34: rill.runtime.v1.PutFileResponse + (*CreateDirectoryRequest)(nil), // 35: rill.runtime.v1.CreateDirectoryRequest + (*CreateDirectoryResponse)(nil), // 36: rill.runtime.v1.CreateDirectoryResponse + (*DeleteFileRequest)(nil), // 37: rill.runtime.v1.DeleteFileRequest + (*DeleteFileResponse)(nil), // 38: rill.runtime.v1.DeleteFileResponse + (*RenameFileRequest)(nil), // 39: rill.runtime.v1.RenameFileRequest + (*RenameFileResponse)(nil), // 40: rill.runtime.v1.RenameFileResponse + (*Example)(nil), // 41: rill.runtime.v1.Example + (*ListExamplesRequest)(nil), // 42: rill.runtime.v1.ListExamplesRequest + (*ListExamplesResponse)(nil), // 43: rill.runtime.v1.ListExamplesResponse + (*UnpackExampleRequest)(nil), // 44: rill.runtime.v1.UnpackExampleRequest + (*UnpackExampleResponse)(nil), // 45: rill.runtime.v1.UnpackExampleResponse + (*UnpackEmptyRequest)(nil), // 46: rill.runtime.v1.UnpackEmptyRequest + (*UnpackEmptyResponse)(nil), // 47: rill.runtime.v1.UnpackEmptyResponse + (*GenerateMetricsViewFileRequest)(nil), // 48: rill.runtime.v1.GenerateMetricsViewFileRequest + (*GenerateMetricsViewFileResponse)(nil), // 49: rill.runtime.v1.GenerateMetricsViewFileResponse + (*GenerateCanvasFileRequest)(nil), // 50: rill.runtime.v1.GenerateCanvasFileRequest + (*GenerateCanvasFileResponse)(nil), // 51: rill.runtime.v1.GenerateCanvasFileResponse + (*QueryResolverRequest)(nil), // 52: rill.runtime.v1.QueryResolverRequest + (*QueryResolverResponse)(nil), // 53: rill.runtime.v1.QueryResolverResponse + (*Log)(nil), // 54: rill.runtime.v1.Log + (*ModelPartition)(nil), // 55: rill.runtime.v1.ModelPartition + (*GetLogsRequest)(nil), // 56: rill.runtime.v1.GetLogsRequest + (*GetLogsResponse)(nil), // 57: rill.runtime.v1.GetLogsResponse + (*WatchLogsRequest)(nil), // 58: rill.runtime.v1.WatchLogsRequest + (*WatchLogsResponse)(nil), // 59: rill.runtime.v1.WatchLogsResponse + (*ListResourcesRequest)(nil), // 60: rill.runtime.v1.ListResourcesRequest + (*ListResourcesResponse)(nil), // 61: rill.runtime.v1.ListResourcesResponse + (*WatchResourcesRequest)(nil), // 62: rill.runtime.v1.WatchResourcesRequest + (*WatchResourcesResponse)(nil), // 63: rill.runtime.v1.WatchResourcesResponse + (*GetResourceRequest)(nil), // 64: rill.runtime.v1.GetResourceRequest + (*GetResourceResponse)(nil), // 65: rill.runtime.v1.GetResourceResponse + (*GetExploreRequest)(nil), // 66: rill.runtime.v1.GetExploreRequest + (*GetExploreResponse)(nil), // 67: rill.runtime.v1.GetExploreResponse + (*GetModelPartitionsRequest)(nil), // 68: rill.runtime.v1.GetModelPartitionsRequest + (*GetModelPartitionsResponse)(nil), // 69: rill.runtime.v1.GetModelPartitionsResponse + (*SkipModelPartitionsRequest)(nil), // 70: rill.runtime.v1.SkipModelPartitionsRequest + (*SkipModelPartitionsResponse)(nil), // 71: rill.runtime.v1.SkipModelPartitionsResponse + (*CreateTriggerRequest)(nil), // 72: rill.runtime.v1.CreateTriggerRequest + (*CreateTriggerResponse)(nil), // 73: rill.runtime.v1.CreateTriggerResponse + (*ConnectorDriver)(nil), // 74: rill.runtime.v1.ConnectorDriver + (*AnalyzedConnector)(nil), // 75: rill.runtime.v1.AnalyzedConnector + (*ListConnectorDriversRequest)(nil), // 76: rill.runtime.v1.ListConnectorDriversRequest + (*ListConnectorDriversResponse)(nil), // 77: rill.runtime.v1.ListConnectorDriversResponse + (*AnalyzeConnectorsRequest)(nil), // 78: rill.runtime.v1.AnalyzeConnectorsRequest + (*AnalyzeConnectorsResponse)(nil), // 79: rill.runtime.v1.AnalyzeConnectorsResponse + (*ListNotifierConnectorsRequest)(nil), // 80: rill.runtime.v1.ListNotifierConnectorsRequest + (*ListNotifierConnectorsResponse)(nil), // 81: rill.runtime.v1.ListNotifierConnectorsResponse + (*Conversation)(nil), // 82: rill.runtime.v1.Conversation + (*Message)(nil), // 83: rill.runtime.v1.Message + (*AnalystAgentContext)(nil), // 84: rill.runtime.v1.AnalystAgentContext + (*DeveloperAgentContext)(nil), // 85: rill.runtime.v1.DeveloperAgentContext + (*FeedbackAgentContext)(nil), // 86: rill.runtime.v1.FeedbackAgentContext + (*ListConversationsRequest)(nil), // 87: rill.runtime.v1.ListConversationsRequest + (*ListConversationsResponse)(nil), // 88: rill.runtime.v1.ListConversationsResponse + (*GetConversationRequest)(nil), // 89: rill.runtime.v1.GetConversationRequest + (*GetConversationResponse)(nil), // 90: rill.runtime.v1.GetConversationResponse + (*ShareConversationRequest)(nil), // 91: rill.runtime.v1.ShareConversationRequest + (*ShareConversationResponse)(nil), // 92: rill.runtime.v1.ShareConversationResponse + (*ForkConversationRequest)(nil), // 93: rill.runtime.v1.ForkConversationRequest + (*ForkConversationResponse)(nil), // 94: rill.runtime.v1.ForkConversationResponse + (*ListToolsRequest)(nil), // 95: rill.runtime.v1.ListToolsRequest + (*ListToolsResponse)(nil), // 96: rill.runtime.v1.ListToolsResponse + (*CompleteRequest)(nil), // 97: rill.runtime.v1.CompleteRequest + (*CompleteResponse)(nil), // 98: rill.runtime.v1.CompleteResponse + (*CompleteStreamingRequest)(nil), // 99: rill.runtime.v1.CompleteStreamingRequest + (*CompleteStreamingResponse)(nil), // 100: rill.runtime.v1.CompleteStreamingResponse + (*GetAIMessageRequest)(nil), // 101: rill.runtime.v1.GetAIMessageRequest + (*GetAIMessageResponse)(nil), // 102: rill.runtime.v1.GetAIMessageResponse + (*IssueDevJWTRequest)(nil), // 103: rill.runtime.v1.IssueDevJWTRequest + (*IssueDevJWTResponse)(nil), // 104: rill.runtime.v1.IssueDevJWTResponse + (*AnalyzeVariablesRequest)(nil), // 105: rill.runtime.v1.AnalyzeVariablesRequest + (*AnalyzeVariablesResponse)(nil), // 106: rill.runtime.v1.AnalyzeVariablesResponse + (*AnalyzedVariable)(nil), // 107: rill.runtime.v1.AnalyzedVariable + (*ListGitCommitsRequest)(nil), // 108: rill.runtime.v1.ListGitCommitsRequest + (*ListGitCommitsResponse)(nil), // 109: rill.runtime.v1.ListGitCommitsResponse + (*GitCommit)(nil), // 110: rill.runtime.v1.GitCommit + (*GitStatusRequest)(nil), // 111: rill.runtime.v1.GitStatusRequest + (*GitStatusResponse)(nil), // 112: rill.runtime.v1.GitStatusResponse + (*GitDiffRequest)(nil), // 113: rill.runtime.v1.GitDiffRequest + (*GitDiffResponse)(nil), // 114: rill.runtime.v1.GitDiffResponse + (*ListGitBranchesRequest)(nil), // 115: rill.runtime.v1.ListGitBranchesRequest + (*ListGitBranchesResponse)(nil), // 116: rill.runtime.v1.ListGitBranchesResponse + (*GitBranch)(nil), // 117: rill.runtime.v1.GitBranch + (*GitCommitRequest)(nil), // 118: rill.runtime.v1.GitCommitRequest + (*GitCommitResponse)(nil), // 119: rill.runtime.v1.GitCommitResponse + (*RestoreGitCommitRequest)(nil), // 120: rill.runtime.v1.RestoreGitCommitRequest + (*RestoreGitCommitResponse)(nil), // 121: rill.runtime.v1.RestoreGitCommitResponse + (*GitMergeToBranchRequest)(nil), // 122: rill.runtime.v1.GitMergeToBranchRequest + (*GitMergeToBranchResponse)(nil), // 123: rill.runtime.v1.GitMergeToBranchResponse + (*GitSwitchBranchRequest)(nil), // 124: rill.runtime.v1.GitSwitchBranchRequest + (*GitSwitchBranchResponse)(nil), // 125: rill.runtime.v1.GitSwitchBranchResponse + (*GitPullRequest)(nil), // 126: rill.runtime.v1.GitPullRequest + (*GitPullResponse)(nil), // 127: rill.runtime.v1.GitPullResponse + (*GitPushRequest)(nil), // 128: rill.runtime.v1.GitPushRequest + (*GitPushResponse)(nil), // 129: rill.runtime.v1.GitPushResponse + (*PushEnvRequest)(nil), // 130: rill.runtime.v1.PushEnvRequest + (*PushEnvResponse)(nil), // 131: rill.runtime.v1.PushEnvResponse + nil, // 132: rill.runtime.v1.HealthResponse.InstancesHealthEntry + nil, // 133: rill.runtime.v1.InstanceHealth.MetricsViewErrorsEntry + nil, // 134: rill.runtime.v1.Instance.VariablesEntry + nil, // 135: rill.runtime.v1.Instance.ProjectVariablesEntry + nil, // 136: rill.runtime.v1.Instance.FeatureFlagsEntry + nil, // 137: rill.runtime.v1.Instance.AnnotationsEntry + nil, // 138: rill.runtime.v1.CreateInstanceRequest.VariablesEntry + nil, // 139: rill.runtime.v1.CreateInstanceRequest.SystemVariablesEntry + nil, // 140: rill.runtime.v1.CreateInstanceRequest.AnnotationsEntry + (*ConnectorDriver_Property)(nil), // 141: rill.runtime.v1.ConnectorDriver.Property + nil, // 142: rill.runtime.v1.AnalyzedConnector.EnvConfigEntry + nil, // 143: rill.runtime.v1.AnalystAgentContext.WherePerMetricsViewEntry + (*GitDiffResponse_GitFileChange)(nil), // 144: rill.runtime.v1.GitDiffResponse.GitFileChange + (*timestamppb.Timestamp)(nil), // 145: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 146: google.protobuf.Struct + (*StructType)(nil), // 147: rill.runtime.v1.StructType + (*Resource)(nil), // 148: rill.runtime.v1.Resource + (*ResourceName)(nil), // 149: rill.runtime.v1.ResourceName + (*RefreshModelTrigger)(nil), // 150: rill.runtime.v1.RefreshModelTrigger + (*v1.ContentBlock)(nil), // 151: rill.ai.v1.ContentBlock + (*Expression)(nil), // 152: rill.runtime.v1.Expression + (*v1.Tool)(nil), // 153: rill.ai.v1.Tool } var file_rill_runtime_v1_api_proto_depIdxs = []int32{ - 141, // 0: rill.runtime.v1.PingResponse.time:type_name -> google.protobuf.Timestamp - 129, // 1: rill.runtime.v1.HealthResponse.instances_health:type_name -> rill.runtime.v1.HealthResponse.InstancesHealthEntry - 10, // 2: rill.runtime.v1.InstanceHealthResponse.instance_health:type_name -> rill.runtime.v1.InstanceHealth - 130, // 3: rill.runtime.v1.InstanceHealth.metrics_view_errors:type_name -> rill.runtime.v1.InstanceHealth.MetricsViewErrorsEntry - 141, // 4: rill.runtime.v1.Instance.created_on:type_name -> google.protobuf.Timestamp - 141, // 5: rill.runtime.v1.Instance.updated_on:type_name -> google.protobuf.Timestamp - 12, // 6: rill.runtime.v1.Instance.connectors:type_name -> rill.runtime.v1.Connector - 12, // 7: rill.runtime.v1.Instance.project_connectors:type_name -> rill.runtime.v1.Connector - 131, // 8: rill.runtime.v1.Instance.variables:type_name -> rill.runtime.v1.Instance.VariablesEntry - 132, // 9: rill.runtime.v1.Instance.project_variables:type_name -> rill.runtime.v1.Instance.ProjectVariablesEntry - 133, // 10: rill.runtime.v1.Instance.feature_flags:type_name -> rill.runtime.v1.Instance.FeatureFlagsEntry - 134, // 11: rill.runtime.v1.Instance.annotations:type_name -> rill.runtime.v1.Instance.AnnotationsEntry - 142, // 12: rill.runtime.v1.Connector.config:type_name -> google.protobuf.Struct - 142, // 13: rill.runtime.v1.Connector.provision_args:type_name -> google.protobuf.Struct - 11, // 14: rill.runtime.v1.ListInstancesResponse.instances:type_name -> rill.runtime.v1.Instance - 11, // 15: rill.runtime.v1.GetInstanceResponse.instance:type_name -> rill.runtime.v1.Instance - 12, // 16: rill.runtime.v1.CreateInstanceRequest.connectors:type_name -> rill.runtime.v1.Connector - 135, // 17: rill.runtime.v1.CreateInstanceRequest.variables:type_name -> rill.runtime.v1.CreateInstanceRequest.VariablesEntry - 136, // 18: rill.runtime.v1.CreateInstanceRequest.system_variables:type_name -> rill.runtime.v1.CreateInstanceRequest.SystemVariablesEntry - 137, // 19: rill.runtime.v1.CreateInstanceRequest.annotations:type_name -> rill.runtime.v1.CreateInstanceRequest.AnnotationsEntry - 11, // 20: rill.runtime.v1.CreateInstanceResponse.instance:type_name -> rill.runtime.v1.Instance - 12, // 21: rill.runtime.v1.EditInstanceRequest.connectors:type_name -> rill.runtime.v1.Connector - 11, // 22: rill.runtime.v1.EditInstanceResponse.instance:type_name -> rill.runtime.v1.Instance - 27, // 23: rill.runtime.v1.ListFilesResponse.files:type_name -> rill.runtime.v1.DirEntry + 145, // 0: rill.runtime.v1.PingResponse.time:type_name -> google.protobuf.Timestamp + 132, // 1: rill.runtime.v1.HealthResponse.instances_health:type_name -> rill.runtime.v1.HealthResponse.InstancesHealthEntry + 11, // 2: rill.runtime.v1.InstanceHealthResponse.instance_health:type_name -> rill.runtime.v1.InstanceHealth + 133, // 3: rill.runtime.v1.InstanceHealth.metrics_view_errors:type_name -> rill.runtime.v1.InstanceHealth.MetricsViewErrorsEntry + 145, // 4: rill.runtime.v1.Instance.created_on:type_name -> google.protobuf.Timestamp + 145, // 5: rill.runtime.v1.Instance.updated_on:type_name -> google.protobuf.Timestamp + 13, // 6: rill.runtime.v1.Instance.connectors:type_name -> rill.runtime.v1.Connector + 13, // 7: rill.runtime.v1.Instance.project_connectors:type_name -> rill.runtime.v1.Connector + 134, // 8: rill.runtime.v1.Instance.variables:type_name -> rill.runtime.v1.Instance.VariablesEntry + 135, // 9: rill.runtime.v1.Instance.project_variables:type_name -> rill.runtime.v1.Instance.ProjectVariablesEntry + 136, // 10: rill.runtime.v1.Instance.feature_flags:type_name -> rill.runtime.v1.Instance.FeatureFlagsEntry + 137, // 11: rill.runtime.v1.Instance.annotations:type_name -> rill.runtime.v1.Instance.AnnotationsEntry + 146, // 12: rill.runtime.v1.Connector.config:type_name -> google.protobuf.Struct + 146, // 13: rill.runtime.v1.Connector.provision_args:type_name -> google.protobuf.Struct + 12, // 14: rill.runtime.v1.ListInstancesResponse.instances:type_name -> rill.runtime.v1.Instance + 12, // 15: rill.runtime.v1.GetInstanceResponse.instance:type_name -> rill.runtime.v1.Instance + 13, // 16: rill.runtime.v1.CreateInstanceRequest.connectors:type_name -> rill.runtime.v1.Connector + 138, // 17: rill.runtime.v1.CreateInstanceRequest.variables:type_name -> rill.runtime.v1.CreateInstanceRequest.VariablesEntry + 139, // 18: rill.runtime.v1.CreateInstanceRequest.system_variables:type_name -> rill.runtime.v1.CreateInstanceRequest.SystemVariablesEntry + 140, // 19: rill.runtime.v1.CreateInstanceRequest.annotations:type_name -> rill.runtime.v1.CreateInstanceRequest.AnnotationsEntry + 12, // 20: rill.runtime.v1.CreateInstanceResponse.instance:type_name -> rill.runtime.v1.Instance + 13, // 21: rill.runtime.v1.EditInstanceRequest.connectors:type_name -> rill.runtime.v1.Connector + 12, // 22: rill.runtime.v1.EditInstanceResponse.instance:type_name -> rill.runtime.v1.Instance + 28, // 23: rill.runtime.v1.ListFilesResponse.files:type_name -> rill.runtime.v1.DirEntry 0, // 24: rill.runtime.v1.WatchFilesResponse.event:type_name -> rill.runtime.v1.FileEvent - 141, // 25: rill.runtime.v1.GetFileResponse.updated_on:type_name -> google.protobuf.Timestamp - 40, // 26: rill.runtime.v1.ListExamplesResponse.examples:type_name -> rill.runtime.v1.Example - 142, // 27: rill.runtime.v1.QueryResolverRequest.resolver_properties:type_name -> google.protobuf.Struct - 142, // 28: rill.runtime.v1.QueryResolverRequest.resolver_args:type_name -> google.protobuf.Struct - 142, // 29: rill.runtime.v1.QueryResolverResponse.meta:type_name -> google.protobuf.Struct - 143, // 30: rill.runtime.v1.QueryResolverResponse.schema:type_name -> rill.runtime.v1.StructType - 142, // 31: rill.runtime.v1.QueryResolverResponse.data:type_name -> google.protobuf.Struct + 145, // 25: rill.runtime.v1.GetFileResponse.updated_on:type_name -> google.protobuf.Timestamp + 41, // 26: rill.runtime.v1.ListExamplesResponse.examples:type_name -> rill.runtime.v1.Example + 146, // 27: rill.runtime.v1.QueryResolverRequest.resolver_properties:type_name -> google.protobuf.Struct + 146, // 28: rill.runtime.v1.QueryResolverRequest.resolver_args:type_name -> google.protobuf.Struct + 146, // 29: rill.runtime.v1.QueryResolverResponse.meta:type_name -> google.protobuf.Struct + 147, // 30: rill.runtime.v1.QueryResolverResponse.schema:type_name -> rill.runtime.v1.StructType + 146, // 31: rill.runtime.v1.QueryResolverResponse.data:type_name -> google.protobuf.Struct 1, // 32: rill.runtime.v1.Log.level:type_name -> rill.runtime.v1.LogLevel - 141, // 33: rill.runtime.v1.Log.time:type_name -> google.protobuf.Timestamp - 142, // 34: rill.runtime.v1.ModelPartition.data:type_name -> google.protobuf.Struct - 141, // 35: rill.runtime.v1.ModelPartition.watermark:type_name -> google.protobuf.Timestamp - 141, // 36: rill.runtime.v1.ModelPartition.executed_on:type_name -> google.protobuf.Timestamp + 145, // 33: rill.runtime.v1.Log.time:type_name -> google.protobuf.Timestamp + 146, // 34: rill.runtime.v1.ModelPartition.data:type_name -> google.protobuf.Struct + 145, // 35: rill.runtime.v1.ModelPartition.watermark:type_name -> google.protobuf.Timestamp + 145, // 36: rill.runtime.v1.ModelPartition.executed_on:type_name -> google.protobuf.Timestamp 1, // 37: rill.runtime.v1.GetLogsRequest.level:type_name -> rill.runtime.v1.LogLevel - 53, // 38: rill.runtime.v1.GetLogsResponse.logs:type_name -> rill.runtime.v1.Log + 54, // 38: rill.runtime.v1.GetLogsResponse.logs:type_name -> rill.runtime.v1.Log 1, // 39: rill.runtime.v1.WatchLogsRequest.level:type_name -> rill.runtime.v1.LogLevel - 53, // 40: rill.runtime.v1.WatchLogsResponse.log:type_name -> rill.runtime.v1.Log - 144, // 41: rill.runtime.v1.ListResourcesResponse.resources:type_name -> rill.runtime.v1.Resource + 54, // 40: rill.runtime.v1.WatchLogsResponse.log:type_name -> rill.runtime.v1.Log + 148, // 41: rill.runtime.v1.ListResourcesResponse.resources:type_name -> rill.runtime.v1.Resource 2, // 42: rill.runtime.v1.WatchResourcesResponse.event:type_name -> rill.runtime.v1.ResourceEvent - 145, // 43: rill.runtime.v1.WatchResourcesResponse.name:type_name -> rill.runtime.v1.ResourceName - 144, // 44: rill.runtime.v1.WatchResourcesResponse.resource:type_name -> rill.runtime.v1.Resource - 145, // 45: rill.runtime.v1.GetResourceRequest.name:type_name -> rill.runtime.v1.ResourceName - 144, // 46: rill.runtime.v1.GetResourceResponse.resource:type_name -> rill.runtime.v1.Resource - 144, // 47: rill.runtime.v1.GetExploreResponse.explore:type_name -> rill.runtime.v1.Resource - 144, // 48: rill.runtime.v1.GetExploreResponse.metrics_view:type_name -> rill.runtime.v1.Resource - 54, // 49: rill.runtime.v1.GetModelPartitionsResponse.partitions:type_name -> rill.runtime.v1.ModelPartition - 145, // 50: rill.runtime.v1.CreateTriggerRequest.resources:type_name -> rill.runtime.v1.ResourceName - 146, // 51: rill.runtime.v1.CreateTriggerRequest.models:type_name -> rill.runtime.v1.RefreshModelTrigger - 138, // 52: rill.runtime.v1.ConnectorDriver.config_properties:type_name -> rill.runtime.v1.ConnectorDriver.Property - 138, // 53: rill.runtime.v1.ConnectorDriver.source_properties:type_name -> rill.runtime.v1.ConnectorDriver.Property - 73, // 54: rill.runtime.v1.AnalyzedConnector.driver:type_name -> rill.runtime.v1.ConnectorDriver - 142, // 55: rill.runtime.v1.AnalyzedConnector.config:type_name -> google.protobuf.Struct - 142, // 56: rill.runtime.v1.AnalyzedConnector.preset_config:type_name -> google.protobuf.Struct - 142, // 57: rill.runtime.v1.AnalyzedConnector.project_config:type_name -> google.protobuf.Struct - 139, // 58: rill.runtime.v1.AnalyzedConnector.env_config:type_name -> rill.runtime.v1.AnalyzedConnector.EnvConfigEntry - 142, // 59: rill.runtime.v1.AnalyzedConnector.provision_args:type_name -> google.protobuf.Struct - 145, // 60: rill.runtime.v1.AnalyzedConnector.used_by:type_name -> rill.runtime.v1.ResourceName - 73, // 61: rill.runtime.v1.ListConnectorDriversResponse.connectors:type_name -> rill.runtime.v1.ConnectorDriver - 74, // 62: rill.runtime.v1.AnalyzeConnectorsResponse.connectors:type_name -> rill.runtime.v1.AnalyzedConnector - 12, // 63: rill.runtime.v1.ListNotifierConnectorsResponse.connectors:type_name -> rill.runtime.v1.Connector - 141, // 64: rill.runtime.v1.Conversation.created_on:type_name -> google.protobuf.Timestamp - 141, // 65: rill.runtime.v1.Conversation.updated_on:type_name -> google.protobuf.Timestamp - 82, // 66: rill.runtime.v1.Conversation.messages:type_name -> rill.runtime.v1.Message - 141, // 67: rill.runtime.v1.Message.created_on:type_name -> google.protobuf.Timestamp - 141, // 68: rill.runtime.v1.Message.updated_on:type_name -> google.protobuf.Timestamp - 147, // 69: rill.runtime.v1.Message.content:type_name -> rill.ai.v1.ContentBlock - 148, // 70: rill.runtime.v1.AnalystAgentContext.where:type_name -> rill.runtime.v1.Expression - 140, // 71: rill.runtime.v1.AnalystAgentContext.where_per_metrics_view:type_name -> rill.runtime.v1.AnalystAgentContext.WherePerMetricsViewEntry - 141, // 72: rill.runtime.v1.AnalystAgentContext.time_start:type_name -> google.protobuf.Timestamp - 141, // 73: rill.runtime.v1.AnalystAgentContext.time_end:type_name -> google.protobuf.Timestamp - 81, // 74: rill.runtime.v1.ListConversationsResponse.conversations:type_name -> rill.runtime.v1.Conversation - 81, // 75: rill.runtime.v1.GetConversationResponse.conversation:type_name -> rill.runtime.v1.Conversation - 82, // 76: rill.runtime.v1.GetConversationResponse.messages:type_name -> rill.runtime.v1.Message - 149, // 77: rill.runtime.v1.ListToolsResponse.tools:type_name -> rill.ai.v1.Tool - 83, // 78: rill.runtime.v1.CompleteRequest.analyst_agent_context:type_name -> rill.runtime.v1.AnalystAgentContext - 84, // 79: rill.runtime.v1.CompleteRequest.developer_agent_context:type_name -> rill.runtime.v1.DeveloperAgentContext - 85, // 80: rill.runtime.v1.CompleteRequest.feedback_agent_context:type_name -> rill.runtime.v1.FeedbackAgentContext - 82, // 81: rill.runtime.v1.CompleteResponse.messages:type_name -> rill.runtime.v1.Message - 83, // 82: rill.runtime.v1.CompleteStreamingRequest.analyst_agent_context:type_name -> rill.runtime.v1.AnalystAgentContext - 84, // 83: rill.runtime.v1.CompleteStreamingRequest.developer_agent_context:type_name -> rill.runtime.v1.DeveloperAgentContext - 85, // 84: rill.runtime.v1.CompleteStreamingRequest.feedback_agent_context:type_name -> rill.runtime.v1.FeedbackAgentContext - 82, // 85: rill.runtime.v1.CompleteStreamingResponse.message:type_name -> rill.runtime.v1.Message - 82, // 86: rill.runtime.v1.GetAIMessageResponse.message:type_name -> rill.runtime.v1.Message - 82, // 87: rill.runtime.v1.GetAIMessageResponse.result:type_name -> rill.runtime.v1.Message - 142, // 88: rill.runtime.v1.IssueDevJWTRequest.attributes:type_name -> google.protobuf.Struct - 106, // 89: rill.runtime.v1.AnalyzeVariablesResponse.variables:type_name -> rill.runtime.v1.AnalyzedVariable - 145, // 90: rill.runtime.v1.AnalyzedVariable.used_by:type_name -> rill.runtime.v1.ResourceName - 109, // 91: rill.runtime.v1.ListGitCommitsResponse.commits:type_name -> rill.runtime.v1.GitCommit - 141, // 92: rill.runtime.v1.GitCommit.committed_on:type_name -> google.protobuf.Timestamp - 114, // 93: rill.runtime.v1.ListGitBranchesResponse.branches:type_name -> rill.runtime.v1.GitBranch - 10, // 94: rill.runtime.v1.HealthResponse.InstancesHealthEntry.value:type_name -> rill.runtime.v1.InstanceHealth - 3, // 95: rill.runtime.v1.ConnectorDriver.Property.type:type_name -> rill.runtime.v1.ConnectorDriver.Property.Type - 148, // 96: rill.runtime.v1.AnalystAgentContext.WherePerMetricsViewEntry.value:type_name -> rill.runtime.v1.Expression - 4, // 97: rill.runtime.v1.RuntimeService.Ping:input_type -> rill.runtime.v1.PingRequest - 6, // 98: rill.runtime.v1.RuntimeService.Health:input_type -> rill.runtime.v1.HealthRequest - 8, // 99: rill.runtime.v1.RuntimeService.InstanceHealth:input_type -> rill.runtime.v1.InstanceHealthRequest - 13, // 100: rill.runtime.v1.RuntimeService.ListInstances:input_type -> rill.runtime.v1.ListInstancesRequest - 15, // 101: rill.runtime.v1.RuntimeService.GetInstance:input_type -> rill.runtime.v1.GetInstanceRequest - 17, // 102: rill.runtime.v1.RuntimeService.CreateInstance:input_type -> rill.runtime.v1.CreateInstanceRequest - 21, // 103: rill.runtime.v1.RuntimeService.EditInstance:input_type -> rill.runtime.v1.EditInstanceRequest - 19, // 104: rill.runtime.v1.RuntimeService.DeleteInstance:input_type -> rill.runtime.v1.DeleteInstanceRequest - 23, // 105: rill.runtime.v1.RuntimeService.ReloadConfig:input_type -> rill.runtime.v1.ReloadConfigRequest - 25, // 106: rill.runtime.v1.RuntimeService.ListFiles:input_type -> rill.runtime.v1.ListFilesRequest - 28, // 107: rill.runtime.v1.RuntimeService.WatchFiles:input_type -> rill.runtime.v1.WatchFilesRequest - 30, // 108: rill.runtime.v1.RuntimeService.GetFile:input_type -> rill.runtime.v1.GetFileRequest - 32, // 109: rill.runtime.v1.RuntimeService.PutFile:input_type -> rill.runtime.v1.PutFileRequest - 34, // 110: rill.runtime.v1.RuntimeService.CreateDirectory:input_type -> rill.runtime.v1.CreateDirectoryRequest - 36, // 111: rill.runtime.v1.RuntimeService.DeleteFile:input_type -> rill.runtime.v1.DeleteFileRequest - 38, // 112: rill.runtime.v1.RuntimeService.RenameFile:input_type -> rill.runtime.v1.RenameFileRequest - 41, // 113: rill.runtime.v1.RuntimeService.ListExamples:input_type -> rill.runtime.v1.ListExamplesRequest - 43, // 114: rill.runtime.v1.RuntimeService.UnpackExample:input_type -> rill.runtime.v1.UnpackExampleRequest - 45, // 115: rill.runtime.v1.RuntimeService.UnpackEmpty:input_type -> rill.runtime.v1.UnpackEmptyRequest - 47, // 116: rill.runtime.v1.RuntimeService.GenerateMetricsViewFile:input_type -> rill.runtime.v1.GenerateMetricsViewFileRequest - 49, // 117: rill.runtime.v1.RuntimeService.GenerateCanvasFile:input_type -> rill.runtime.v1.GenerateCanvasFileRequest - 51, // 118: rill.runtime.v1.RuntimeService.QueryResolver:input_type -> rill.runtime.v1.QueryResolverRequest - 55, // 119: rill.runtime.v1.RuntimeService.GetLogs:input_type -> rill.runtime.v1.GetLogsRequest - 57, // 120: rill.runtime.v1.RuntimeService.WatchLogs:input_type -> rill.runtime.v1.WatchLogsRequest - 59, // 121: rill.runtime.v1.RuntimeService.ListResources:input_type -> rill.runtime.v1.ListResourcesRequest - 61, // 122: rill.runtime.v1.RuntimeService.WatchResources:input_type -> rill.runtime.v1.WatchResourcesRequest - 63, // 123: rill.runtime.v1.RuntimeService.GetResource:input_type -> rill.runtime.v1.GetResourceRequest - 65, // 124: rill.runtime.v1.RuntimeService.GetExplore:input_type -> rill.runtime.v1.GetExploreRequest - 67, // 125: rill.runtime.v1.RuntimeService.GetModelPartitions:input_type -> rill.runtime.v1.GetModelPartitionsRequest - 69, // 126: rill.runtime.v1.RuntimeService.SkipModelPartitions:input_type -> rill.runtime.v1.SkipModelPartitionsRequest - 71, // 127: rill.runtime.v1.RuntimeService.CreateTrigger:input_type -> rill.runtime.v1.CreateTriggerRequest - 75, // 128: rill.runtime.v1.RuntimeService.ListConnectorDrivers:input_type -> rill.runtime.v1.ListConnectorDriversRequest - 77, // 129: rill.runtime.v1.RuntimeService.AnalyzeConnectors:input_type -> rill.runtime.v1.AnalyzeConnectorsRequest - 79, // 130: rill.runtime.v1.RuntimeService.ListNotifierConnectors:input_type -> rill.runtime.v1.ListNotifierConnectorsRequest - 86, // 131: rill.runtime.v1.RuntimeService.ListConversations:input_type -> rill.runtime.v1.ListConversationsRequest - 88, // 132: rill.runtime.v1.RuntimeService.GetConversation:input_type -> rill.runtime.v1.GetConversationRequest - 90, // 133: rill.runtime.v1.RuntimeService.ShareConversation:input_type -> rill.runtime.v1.ShareConversationRequest - 92, // 134: rill.runtime.v1.RuntimeService.ForkConversation:input_type -> rill.runtime.v1.ForkConversationRequest - 94, // 135: rill.runtime.v1.RuntimeService.ListTools:input_type -> rill.runtime.v1.ListToolsRequest - 96, // 136: rill.runtime.v1.RuntimeService.Complete:input_type -> rill.runtime.v1.CompleteRequest - 98, // 137: rill.runtime.v1.RuntimeService.CompleteStreaming:input_type -> rill.runtime.v1.CompleteStreamingRequest - 100, // 138: rill.runtime.v1.RuntimeService.GetAIMessage:input_type -> rill.runtime.v1.GetAIMessageRequest - 102, // 139: rill.runtime.v1.RuntimeService.IssueDevJWT:input_type -> rill.runtime.v1.IssueDevJWTRequest - 104, // 140: rill.runtime.v1.RuntimeService.AnalyzeVariables:input_type -> rill.runtime.v1.AnalyzeVariablesRequest - 107, // 141: rill.runtime.v1.RuntimeService.ListGitCommits:input_type -> rill.runtime.v1.ListGitCommitsRequest - 110, // 142: rill.runtime.v1.RuntimeService.GitStatus:input_type -> rill.runtime.v1.GitStatusRequest - 112, // 143: rill.runtime.v1.RuntimeService.ListGitBranches:input_type -> rill.runtime.v1.ListGitBranchesRequest - 115, // 144: rill.runtime.v1.RuntimeService.GitCommit:input_type -> rill.runtime.v1.GitCommitRequest - 117, // 145: rill.runtime.v1.RuntimeService.RestoreGitCommit:input_type -> rill.runtime.v1.RestoreGitCommitRequest - 119, // 146: rill.runtime.v1.RuntimeService.GitMergeToBranch:input_type -> rill.runtime.v1.GitMergeToBranchRequest - 121, // 147: rill.runtime.v1.RuntimeService.GitSwitchBranch:input_type -> rill.runtime.v1.GitSwitchBranchRequest - 123, // 148: rill.runtime.v1.RuntimeService.GitPull:input_type -> rill.runtime.v1.GitPullRequest - 125, // 149: rill.runtime.v1.RuntimeService.GitPush:input_type -> rill.runtime.v1.GitPushRequest - 127, // 150: rill.runtime.v1.RuntimeService.PushEnv:input_type -> rill.runtime.v1.PushEnvRequest - 5, // 151: rill.runtime.v1.RuntimeService.Ping:output_type -> rill.runtime.v1.PingResponse - 7, // 152: rill.runtime.v1.RuntimeService.Health:output_type -> rill.runtime.v1.HealthResponse - 9, // 153: rill.runtime.v1.RuntimeService.InstanceHealth:output_type -> rill.runtime.v1.InstanceHealthResponse - 14, // 154: rill.runtime.v1.RuntimeService.ListInstances:output_type -> rill.runtime.v1.ListInstancesResponse - 16, // 155: rill.runtime.v1.RuntimeService.GetInstance:output_type -> rill.runtime.v1.GetInstanceResponse - 18, // 156: rill.runtime.v1.RuntimeService.CreateInstance:output_type -> rill.runtime.v1.CreateInstanceResponse - 22, // 157: rill.runtime.v1.RuntimeService.EditInstance:output_type -> rill.runtime.v1.EditInstanceResponse - 20, // 158: rill.runtime.v1.RuntimeService.DeleteInstance:output_type -> rill.runtime.v1.DeleteInstanceResponse - 24, // 159: rill.runtime.v1.RuntimeService.ReloadConfig:output_type -> rill.runtime.v1.ReloadConfigResponse - 26, // 160: rill.runtime.v1.RuntimeService.ListFiles:output_type -> rill.runtime.v1.ListFilesResponse - 29, // 161: rill.runtime.v1.RuntimeService.WatchFiles:output_type -> rill.runtime.v1.WatchFilesResponse - 31, // 162: rill.runtime.v1.RuntimeService.GetFile:output_type -> rill.runtime.v1.GetFileResponse - 33, // 163: rill.runtime.v1.RuntimeService.PutFile:output_type -> rill.runtime.v1.PutFileResponse - 35, // 164: rill.runtime.v1.RuntimeService.CreateDirectory:output_type -> rill.runtime.v1.CreateDirectoryResponse - 37, // 165: rill.runtime.v1.RuntimeService.DeleteFile:output_type -> rill.runtime.v1.DeleteFileResponse - 39, // 166: rill.runtime.v1.RuntimeService.RenameFile:output_type -> rill.runtime.v1.RenameFileResponse - 42, // 167: rill.runtime.v1.RuntimeService.ListExamples:output_type -> rill.runtime.v1.ListExamplesResponse - 44, // 168: rill.runtime.v1.RuntimeService.UnpackExample:output_type -> rill.runtime.v1.UnpackExampleResponse - 46, // 169: rill.runtime.v1.RuntimeService.UnpackEmpty:output_type -> rill.runtime.v1.UnpackEmptyResponse - 48, // 170: rill.runtime.v1.RuntimeService.GenerateMetricsViewFile:output_type -> rill.runtime.v1.GenerateMetricsViewFileResponse - 50, // 171: rill.runtime.v1.RuntimeService.GenerateCanvasFile:output_type -> rill.runtime.v1.GenerateCanvasFileResponse - 52, // 172: rill.runtime.v1.RuntimeService.QueryResolver:output_type -> rill.runtime.v1.QueryResolverResponse - 56, // 173: rill.runtime.v1.RuntimeService.GetLogs:output_type -> rill.runtime.v1.GetLogsResponse - 58, // 174: rill.runtime.v1.RuntimeService.WatchLogs:output_type -> rill.runtime.v1.WatchLogsResponse - 60, // 175: rill.runtime.v1.RuntimeService.ListResources:output_type -> rill.runtime.v1.ListResourcesResponse - 62, // 176: rill.runtime.v1.RuntimeService.WatchResources:output_type -> rill.runtime.v1.WatchResourcesResponse - 64, // 177: rill.runtime.v1.RuntimeService.GetResource:output_type -> rill.runtime.v1.GetResourceResponse - 66, // 178: rill.runtime.v1.RuntimeService.GetExplore:output_type -> rill.runtime.v1.GetExploreResponse - 68, // 179: rill.runtime.v1.RuntimeService.GetModelPartitions:output_type -> rill.runtime.v1.GetModelPartitionsResponse - 70, // 180: rill.runtime.v1.RuntimeService.SkipModelPartitions:output_type -> rill.runtime.v1.SkipModelPartitionsResponse - 72, // 181: rill.runtime.v1.RuntimeService.CreateTrigger:output_type -> rill.runtime.v1.CreateTriggerResponse - 76, // 182: rill.runtime.v1.RuntimeService.ListConnectorDrivers:output_type -> rill.runtime.v1.ListConnectorDriversResponse - 78, // 183: rill.runtime.v1.RuntimeService.AnalyzeConnectors:output_type -> rill.runtime.v1.AnalyzeConnectorsResponse - 80, // 184: rill.runtime.v1.RuntimeService.ListNotifierConnectors:output_type -> rill.runtime.v1.ListNotifierConnectorsResponse - 87, // 185: rill.runtime.v1.RuntimeService.ListConversations:output_type -> rill.runtime.v1.ListConversationsResponse - 89, // 186: rill.runtime.v1.RuntimeService.GetConversation:output_type -> rill.runtime.v1.GetConversationResponse - 91, // 187: rill.runtime.v1.RuntimeService.ShareConversation:output_type -> rill.runtime.v1.ShareConversationResponse - 93, // 188: rill.runtime.v1.RuntimeService.ForkConversation:output_type -> rill.runtime.v1.ForkConversationResponse - 95, // 189: rill.runtime.v1.RuntimeService.ListTools:output_type -> rill.runtime.v1.ListToolsResponse - 97, // 190: rill.runtime.v1.RuntimeService.Complete:output_type -> rill.runtime.v1.CompleteResponse - 99, // 191: rill.runtime.v1.RuntimeService.CompleteStreaming:output_type -> rill.runtime.v1.CompleteStreamingResponse - 101, // 192: rill.runtime.v1.RuntimeService.GetAIMessage:output_type -> rill.runtime.v1.GetAIMessageResponse - 103, // 193: rill.runtime.v1.RuntimeService.IssueDevJWT:output_type -> rill.runtime.v1.IssueDevJWTResponse - 105, // 194: rill.runtime.v1.RuntimeService.AnalyzeVariables:output_type -> rill.runtime.v1.AnalyzeVariablesResponse - 108, // 195: rill.runtime.v1.RuntimeService.ListGitCommits:output_type -> rill.runtime.v1.ListGitCommitsResponse - 111, // 196: rill.runtime.v1.RuntimeService.GitStatus:output_type -> rill.runtime.v1.GitStatusResponse - 113, // 197: rill.runtime.v1.RuntimeService.ListGitBranches:output_type -> rill.runtime.v1.ListGitBranchesResponse - 116, // 198: rill.runtime.v1.RuntimeService.GitCommit:output_type -> rill.runtime.v1.GitCommitResponse - 118, // 199: rill.runtime.v1.RuntimeService.RestoreGitCommit:output_type -> rill.runtime.v1.RestoreGitCommitResponse - 120, // 200: rill.runtime.v1.RuntimeService.GitMergeToBranch:output_type -> rill.runtime.v1.GitMergeToBranchResponse - 122, // 201: rill.runtime.v1.RuntimeService.GitSwitchBranch:output_type -> rill.runtime.v1.GitSwitchBranchResponse - 124, // 202: rill.runtime.v1.RuntimeService.GitPull:output_type -> rill.runtime.v1.GitPullResponse - 126, // 203: rill.runtime.v1.RuntimeService.GitPush:output_type -> rill.runtime.v1.GitPushResponse - 128, // 204: rill.runtime.v1.RuntimeService.PushEnv:output_type -> rill.runtime.v1.PushEnvResponse - 151, // [151:205] is the sub-list for method output_type - 97, // [97:151] 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 + 149, // 43: rill.runtime.v1.WatchResourcesResponse.name:type_name -> rill.runtime.v1.ResourceName + 148, // 44: rill.runtime.v1.WatchResourcesResponse.resource:type_name -> rill.runtime.v1.Resource + 149, // 45: rill.runtime.v1.GetResourceRequest.name:type_name -> rill.runtime.v1.ResourceName + 148, // 46: rill.runtime.v1.GetResourceResponse.resource:type_name -> rill.runtime.v1.Resource + 148, // 47: rill.runtime.v1.GetExploreResponse.explore:type_name -> rill.runtime.v1.Resource + 148, // 48: rill.runtime.v1.GetExploreResponse.metrics_view:type_name -> rill.runtime.v1.Resource + 55, // 49: rill.runtime.v1.GetModelPartitionsResponse.partitions:type_name -> rill.runtime.v1.ModelPartition + 149, // 50: rill.runtime.v1.CreateTriggerRequest.resources:type_name -> rill.runtime.v1.ResourceName + 150, // 51: rill.runtime.v1.CreateTriggerRequest.models:type_name -> rill.runtime.v1.RefreshModelTrigger + 141, // 52: rill.runtime.v1.ConnectorDriver.config_properties:type_name -> rill.runtime.v1.ConnectorDriver.Property + 141, // 53: rill.runtime.v1.ConnectorDriver.source_properties:type_name -> rill.runtime.v1.ConnectorDriver.Property + 74, // 54: rill.runtime.v1.AnalyzedConnector.driver:type_name -> rill.runtime.v1.ConnectorDriver + 146, // 55: rill.runtime.v1.AnalyzedConnector.config:type_name -> google.protobuf.Struct + 146, // 56: rill.runtime.v1.AnalyzedConnector.preset_config:type_name -> google.protobuf.Struct + 146, // 57: rill.runtime.v1.AnalyzedConnector.project_config:type_name -> google.protobuf.Struct + 142, // 58: rill.runtime.v1.AnalyzedConnector.env_config:type_name -> rill.runtime.v1.AnalyzedConnector.EnvConfigEntry + 146, // 59: rill.runtime.v1.AnalyzedConnector.provision_args:type_name -> google.protobuf.Struct + 149, // 60: rill.runtime.v1.AnalyzedConnector.used_by:type_name -> rill.runtime.v1.ResourceName + 74, // 61: rill.runtime.v1.ListConnectorDriversResponse.connectors:type_name -> rill.runtime.v1.ConnectorDriver + 75, // 62: rill.runtime.v1.AnalyzeConnectorsResponse.connectors:type_name -> rill.runtime.v1.AnalyzedConnector + 13, // 63: rill.runtime.v1.ListNotifierConnectorsResponse.connectors:type_name -> rill.runtime.v1.Connector + 145, // 64: rill.runtime.v1.Conversation.created_on:type_name -> google.protobuf.Timestamp + 145, // 65: rill.runtime.v1.Conversation.updated_on:type_name -> google.protobuf.Timestamp + 83, // 66: rill.runtime.v1.Conversation.messages:type_name -> rill.runtime.v1.Message + 145, // 67: rill.runtime.v1.Message.created_on:type_name -> google.protobuf.Timestamp + 145, // 68: rill.runtime.v1.Message.updated_on:type_name -> google.protobuf.Timestamp + 151, // 69: rill.runtime.v1.Message.content:type_name -> rill.ai.v1.ContentBlock + 152, // 70: rill.runtime.v1.AnalystAgentContext.where:type_name -> rill.runtime.v1.Expression + 143, // 71: rill.runtime.v1.AnalystAgentContext.where_per_metrics_view:type_name -> rill.runtime.v1.AnalystAgentContext.WherePerMetricsViewEntry + 145, // 72: rill.runtime.v1.AnalystAgentContext.time_start:type_name -> google.protobuf.Timestamp + 145, // 73: rill.runtime.v1.AnalystAgentContext.time_end:type_name -> google.protobuf.Timestamp + 82, // 74: rill.runtime.v1.ListConversationsResponse.conversations:type_name -> rill.runtime.v1.Conversation + 82, // 75: rill.runtime.v1.GetConversationResponse.conversation:type_name -> rill.runtime.v1.Conversation + 83, // 76: rill.runtime.v1.GetConversationResponse.messages:type_name -> rill.runtime.v1.Message + 153, // 77: rill.runtime.v1.ListToolsResponse.tools:type_name -> rill.ai.v1.Tool + 84, // 78: rill.runtime.v1.CompleteRequest.analyst_agent_context:type_name -> rill.runtime.v1.AnalystAgentContext + 85, // 79: rill.runtime.v1.CompleteRequest.developer_agent_context:type_name -> rill.runtime.v1.DeveloperAgentContext + 86, // 80: rill.runtime.v1.CompleteRequest.feedback_agent_context:type_name -> rill.runtime.v1.FeedbackAgentContext + 83, // 81: rill.runtime.v1.CompleteResponse.messages:type_name -> rill.runtime.v1.Message + 84, // 82: rill.runtime.v1.CompleteStreamingRequest.analyst_agent_context:type_name -> rill.runtime.v1.AnalystAgentContext + 85, // 83: rill.runtime.v1.CompleteStreamingRequest.developer_agent_context:type_name -> rill.runtime.v1.DeveloperAgentContext + 86, // 84: rill.runtime.v1.CompleteStreamingRequest.feedback_agent_context:type_name -> rill.runtime.v1.FeedbackAgentContext + 83, // 85: rill.runtime.v1.CompleteStreamingResponse.message:type_name -> rill.runtime.v1.Message + 83, // 86: rill.runtime.v1.GetAIMessageResponse.message:type_name -> rill.runtime.v1.Message + 83, // 87: rill.runtime.v1.GetAIMessageResponse.result:type_name -> rill.runtime.v1.Message + 146, // 88: rill.runtime.v1.IssueDevJWTRequest.attributes:type_name -> google.protobuf.Struct + 107, // 89: rill.runtime.v1.AnalyzeVariablesResponse.variables:type_name -> rill.runtime.v1.AnalyzedVariable + 149, // 90: rill.runtime.v1.AnalyzedVariable.used_by:type_name -> rill.runtime.v1.ResourceName + 110, // 91: rill.runtime.v1.ListGitCommitsResponse.commits:type_name -> rill.runtime.v1.GitCommit + 145, // 92: rill.runtime.v1.GitCommit.committed_on:type_name -> google.protobuf.Timestamp + 144, // 93: rill.runtime.v1.GitDiffResponse.changed_files:type_name -> rill.runtime.v1.GitDiffResponse.GitFileChange + 117, // 94: rill.runtime.v1.ListGitBranchesResponse.branches:type_name -> rill.runtime.v1.GitBranch + 11, // 95: rill.runtime.v1.HealthResponse.InstancesHealthEntry.value:type_name -> rill.runtime.v1.InstanceHealth + 3, // 96: rill.runtime.v1.ConnectorDriver.Property.type:type_name -> rill.runtime.v1.ConnectorDriver.Property.Type + 152, // 97: rill.runtime.v1.AnalystAgentContext.WherePerMetricsViewEntry.value:type_name -> rill.runtime.v1.Expression + 4, // 98: rill.runtime.v1.GitDiffResponse.GitFileChange.status:type_name -> rill.runtime.v1.GitDiffResponse.GitFileStatus + 5, // 99: rill.runtime.v1.RuntimeService.Ping:input_type -> rill.runtime.v1.PingRequest + 7, // 100: rill.runtime.v1.RuntimeService.Health:input_type -> rill.runtime.v1.HealthRequest + 9, // 101: rill.runtime.v1.RuntimeService.InstanceHealth:input_type -> rill.runtime.v1.InstanceHealthRequest + 14, // 102: rill.runtime.v1.RuntimeService.ListInstances:input_type -> rill.runtime.v1.ListInstancesRequest + 16, // 103: rill.runtime.v1.RuntimeService.GetInstance:input_type -> rill.runtime.v1.GetInstanceRequest + 18, // 104: rill.runtime.v1.RuntimeService.CreateInstance:input_type -> rill.runtime.v1.CreateInstanceRequest + 22, // 105: rill.runtime.v1.RuntimeService.EditInstance:input_type -> rill.runtime.v1.EditInstanceRequest + 20, // 106: rill.runtime.v1.RuntimeService.DeleteInstance:input_type -> rill.runtime.v1.DeleteInstanceRequest + 24, // 107: rill.runtime.v1.RuntimeService.ReloadConfig:input_type -> rill.runtime.v1.ReloadConfigRequest + 26, // 108: rill.runtime.v1.RuntimeService.ListFiles:input_type -> rill.runtime.v1.ListFilesRequest + 29, // 109: rill.runtime.v1.RuntimeService.WatchFiles:input_type -> rill.runtime.v1.WatchFilesRequest + 31, // 110: rill.runtime.v1.RuntimeService.GetFile:input_type -> rill.runtime.v1.GetFileRequest + 33, // 111: rill.runtime.v1.RuntimeService.PutFile:input_type -> rill.runtime.v1.PutFileRequest + 35, // 112: rill.runtime.v1.RuntimeService.CreateDirectory:input_type -> rill.runtime.v1.CreateDirectoryRequest + 37, // 113: rill.runtime.v1.RuntimeService.DeleteFile:input_type -> rill.runtime.v1.DeleteFileRequest + 39, // 114: rill.runtime.v1.RuntimeService.RenameFile:input_type -> rill.runtime.v1.RenameFileRequest + 42, // 115: rill.runtime.v1.RuntimeService.ListExamples:input_type -> rill.runtime.v1.ListExamplesRequest + 44, // 116: rill.runtime.v1.RuntimeService.UnpackExample:input_type -> rill.runtime.v1.UnpackExampleRequest + 46, // 117: rill.runtime.v1.RuntimeService.UnpackEmpty:input_type -> rill.runtime.v1.UnpackEmptyRequest + 48, // 118: rill.runtime.v1.RuntimeService.GenerateMetricsViewFile:input_type -> rill.runtime.v1.GenerateMetricsViewFileRequest + 50, // 119: rill.runtime.v1.RuntimeService.GenerateCanvasFile:input_type -> rill.runtime.v1.GenerateCanvasFileRequest + 52, // 120: rill.runtime.v1.RuntimeService.QueryResolver:input_type -> rill.runtime.v1.QueryResolverRequest + 56, // 121: rill.runtime.v1.RuntimeService.GetLogs:input_type -> rill.runtime.v1.GetLogsRequest + 58, // 122: rill.runtime.v1.RuntimeService.WatchLogs:input_type -> rill.runtime.v1.WatchLogsRequest + 60, // 123: rill.runtime.v1.RuntimeService.ListResources:input_type -> rill.runtime.v1.ListResourcesRequest + 62, // 124: rill.runtime.v1.RuntimeService.WatchResources:input_type -> rill.runtime.v1.WatchResourcesRequest + 64, // 125: rill.runtime.v1.RuntimeService.GetResource:input_type -> rill.runtime.v1.GetResourceRequest + 66, // 126: rill.runtime.v1.RuntimeService.GetExplore:input_type -> rill.runtime.v1.GetExploreRequest + 68, // 127: rill.runtime.v1.RuntimeService.GetModelPartitions:input_type -> rill.runtime.v1.GetModelPartitionsRequest + 70, // 128: rill.runtime.v1.RuntimeService.SkipModelPartitions:input_type -> rill.runtime.v1.SkipModelPartitionsRequest + 72, // 129: rill.runtime.v1.RuntimeService.CreateTrigger:input_type -> rill.runtime.v1.CreateTriggerRequest + 76, // 130: rill.runtime.v1.RuntimeService.ListConnectorDrivers:input_type -> rill.runtime.v1.ListConnectorDriversRequest + 78, // 131: rill.runtime.v1.RuntimeService.AnalyzeConnectors:input_type -> rill.runtime.v1.AnalyzeConnectorsRequest + 80, // 132: rill.runtime.v1.RuntimeService.ListNotifierConnectors:input_type -> rill.runtime.v1.ListNotifierConnectorsRequest + 87, // 133: rill.runtime.v1.RuntimeService.ListConversations:input_type -> rill.runtime.v1.ListConversationsRequest + 89, // 134: rill.runtime.v1.RuntimeService.GetConversation:input_type -> rill.runtime.v1.GetConversationRequest + 91, // 135: rill.runtime.v1.RuntimeService.ShareConversation:input_type -> rill.runtime.v1.ShareConversationRequest + 93, // 136: rill.runtime.v1.RuntimeService.ForkConversation:input_type -> rill.runtime.v1.ForkConversationRequest + 95, // 137: rill.runtime.v1.RuntimeService.ListTools:input_type -> rill.runtime.v1.ListToolsRequest + 97, // 138: rill.runtime.v1.RuntimeService.Complete:input_type -> rill.runtime.v1.CompleteRequest + 99, // 139: rill.runtime.v1.RuntimeService.CompleteStreaming:input_type -> rill.runtime.v1.CompleteStreamingRequest + 101, // 140: rill.runtime.v1.RuntimeService.GetAIMessage:input_type -> rill.runtime.v1.GetAIMessageRequest + 103, // 141: rill.runtime.v1.RuntimeService.IssueDevJWT:input_type -> rill.runtime.v1.IssueDevJWTRequest + 105, // 142: rill.runtime.v1.RuntimeService.AnalyzeVariables:input_type -> rill.runtime.v1.AnalyzeVariablesRequest + 108, // 143: rill.runtime.v1.RuntimeService.ListGitCommits:input_type -> rill.runtime.v1.ListGitCommitsRequest + 111, // 144: rill.runtime.v1.RuntimeService.GitStatus:input_type -> rill.runtime.v1.GitStatusRequest + 113, // 145: rill.runtime.v1.RuntimeService.GitDiff:input_type -> rill.runtime.v1.GitDiffRequest + 115, // 146: rill.runtime.v1.RuntimeService.ListGitBranches:input_type -> rill.runtime.v1.ListGitBranchesRequest + 118, // 147: rill.runtime.v1.RuntimeService.GitCommit:input_type -> rill.runtime.v1.GitCommitRequest + 120, // 148: rill.runtime.v1.RuntimeService.RestoreGitCommit:input_type -> rill.runtime.v1.RestoreGitCommitRequest + 122, // 149: rill.runtime.v1.RuntimeService.GitMergeToBranch:input_type -> rill.runtime.v1.GitMergeToBranchRequest + 124, // 150: rill.runtime.v1.RuntimeService.GitSwitchBranch:input_type -> rill.runtime.v1.GitSwitchBranchRequest + 126, // 151: rill.runtime.v1.RuntimeService.GitPull:input_type -> rill.runtime.v1.GitPullRequest + 128, // 152: rill.runtime.v1.RuntimeService.GitPush:input_type -> rill.runtime.v1.GitPushRequest + 130, // 153: rill.runtime.v1.RuntimeService.PushEnv:input_type -> rill.runtime.v1.PushEnvRequest + 6, // 154: rill.runtime.v1.RuntimeService.Ping:output_type -> rill.runtime.v1.PingResponse + 8, // 155: rill.runtime.v1.RuntimeService.Health:output_type -> rill.runtime.v1.HealthResponse + 10, // 156: rill.runtime.v1.RuntimeService.InstanceHealth:output_type -> rill.runtime.v1.InstanceHealthResponse + 15, // 157: rill.runtime.v1.RuntimeService.ListInstances:output_type -> rill.runtime.v1.ListInstancesResponse + 17, // 158: rill.runtime.v1.RuntimeService.GetInstance:output_type -> rill.runtime.v1.GetInstanceResponse + 19, // 159: rill.runtime.v1.RuntimeService.CreateInstance:output_type -> rill.runtime.v1.CreateInstanceResponse + 23, // 160: rill.runtime.v1.RuntimeService.EditInstance:output_type -> rill.runtime.v1.EditInstanceResponse + 21, // 161: rill.runtime.v1.RuntimeService.DeleteInstance:output_type -> rill.runtime.v1.DeleteInstanceResponse + 25, // 162: rill.runtime.v1.RuntimeService.ReloadConfig:output_type -> rill.runtime.v1.ReloadConfigResponse + 27, // 163: rill.runtime.v1.RuntimeService.ListFiles:output_type -> rill.runtime.v1.ListFilesResponse + 30, // 164: rill.runtime.v1.RuntimeService.WatchFiles:output_type -> rill.runtime.v1.WatchFilesResponse + 32, // 165: rill.runtime.v1.RuntimeService.GetFile:output_type -> rill.runtime.v1.GetFileResponse + 34, // 166: rill.runtime.v1.RuntimeService.PutFile:output_type -> rill.runtime.v1.PutFileResponse + 36, // 167: rill.runtime.v1.RuntimeService.CreateDirectory:output_type -> rill.runtime.v1.CreateDirectoryResponse + 38, // 168: rill.runtime.v1.RuntimeService.DeleteFile:output_type -> rill.runtime.v1.DeleteFileResponse + 40, // 169: rill.runtime.v1.RuntimeService.RenameFile:output_type -> rill.runtime.v1.RenameFileResponse + 43, // 170: rill.runtime.v1.RuntimeService.ListExamples:output_type -> rill.runtime.v1.ListExamplesResponse + 45, // 171: rill.runtime.v1.RuntimeService.UnpackExample:output_type -> rill.runtime.v1.UnpackExampleResponse + 47, // 172: rill.runtime.v1.RuntimeService.UnpackEmpty:output_type -> rill.runtime.v1.UnpackEmptyResponse + 49, // 173: rill.runtime.v1.RuntimeService.GenerateMetricsViewFile:output_type -> rill.runtime.v1.GenerateMetricsViewFileResponse + 51, // 174: rill.runtime.v1.RuntimeService.GenerateCanvasFile:output_type -> rill.runtime.v1.GenerateCanvasFileResponse + 53, // 175: rill.runtime.v1.RuntimeService.QueryResolver:output_type -> rill.runtime.v1.QueryResolverResponse + 57, // 176: rill.runtime.v1.RuntimeService.GetLogs:output_type -> rill.runtime.v1.GetLogsResponse + 59, // 177: rill.runtime.v1.RuntimeService.WatchLogs:output_type -> rill.runtime.v1.WatchLogsResponse + 61, // 178: rill.runtime.v1.RuntimeService.ListResources:output_type -> rill.runtime.v1.ListResourcesResponse + 63, // 179: rill.runtime.v1.RuntimeService.WatchResources:output_type -> rill.runtime.v1.WatchResourcesResponse + 65, // 180: rill.runtime.v1.RuntimeService.GetResource:output_type -> rill.runtime.v1.GetResourceResponse + 67, // 181: rill.runtime.v1.RuntimeService.GetExplore:output_type -> rill.runtime.v1.GetExploreResponse + 69, // 182: rill.runtime.v1.RuntimeService.GetModelPartitions:output_type -> rill.runtime.v1.GetModelPartitionsResponse + 71, // 183: rill.runtime.v1.RuntimeService.SkipModelPartitions:output_type -> rill.runtime.v1.SkipModelPartitionsResponse + 73, // 184: rill.runtime.v1.RuntimeService.CreateTrigger:output_type -> rill.runtime.v1.CreateTriggerResponse + 77, // 185: rill.runtime.v1.RuntimeService.ListConnectorDrivers:output_type -> rill.runtime.v1.ListConnectorDriversResponse + 79, // 186: rill.runtime.v1.RuntimeService.AnalyzeConnectors:output_type -> rill.runtime.v1.AnalyzeConnectorsResponse + 81, // 187: rill.runtime.v1.RuntimeService.ListNotifierConnectors:output_type -> rill.runtime.v1.ListNotifierConnectorsResponse + 88, // 188: rill.runtime.v1.RuntimeService.ListConversations:output_type -> rill.runtime.v1.ListConversationsResponse + 90, // 189: rill.runtime.v1.RuntimeService.GetConversation:output_type -> rill.runtime.v1.GetConversationResponse + 92, // 190: rill.runtime.v1.RuntimeService.ShareConversation:output_type -> rill.runtime.v1.ShareConversationResponse + 94, // 191: rill.runtime.v1.RuntimeService.ForkConversation:output_type -> rill.runtime.v1.ForkConversationResponse + 96, // 192: rill.runtime.v1.RuntimeService.ListTools:output_type -> rill.runtime.v1.ListToolsResponse + 98, // 193: rill.runtime.v1.RuntimeService.Complete:output_type -> rill.runtime.v1.CompleteResponse + 100, // 194: rill.runtime.v1.RuntimeService.CompleteStreaming:output_type -> rill.runtime.v1.CompleteStreamingResponse + 102, // 195: rill.runtime.v1.RuntimeService.GetAIMessage:output_type -> rill.runtime.v1.GetAIMessageResponse + 104, // 196: rill.runtime.v1.RuntimeService.IssueDevJWT:output_type -> rill.runtime.v1.IssueDevJWTResponse + 106, // 197: rill.runtime.v1.RuntimeService.AnalyzeVariables:output_type -> rill.runtime.v1.AnalyzeVariablesResponse + 109, // 198: rill.runtime.v1.RuntimeService.ListGitCommits:output_type -> rill.runtime.v1.ListGitCommitsResponse + 112, // 199: rill.runtime.v1.RuntimeService.GitStatus:output_type -> rill.runtime.v1.GitStatusResponse + 114, // 200: rill.runtime.v1.RuntimeService.GitDiff:output_type -> rill.runtime.v1.GitDiffResponse + 116, // 201: rill.runtime.v1.RuntimeService.ListGitBranches:output_type -> rill.runtime.v1.ListGitBranchesResponse + 119, // 202: rill.runtime.v1.RuntimeService.GitCommit:output_type -> rill.runtime.v1.GitCommitResponse + 121, // 203: rill.runtime.v1.RuntimeService.RestoreGitCommit:output_type -> rill.runtime.v1.RestoreGitCommitResponse + 123, // 204: rill.runtime.v1.RuntimeService.GitMergeToBranch:output_type -> rill.runtime.v1.GitMergeToBranchResponse + 125, // 205: rill.runtime.v1.RuntimeService.GitSwitchBranch:output_type -> rill.runtime.v1.GitSwitchBranchResponse + 127, // 206: rill.runtime.v1.RuntimeService.GitPull:output_type -> rill.runtime.v1.GitPullResponse + 129, // 207: rill.runtime.v1.RuntimeService.GitPush:output_type -> rill.runtime.v1.GitPushResponse + 131, // 208: rill.runtime.v1.RuntimeService.PushEnv:output_type -> rill.runtime.v1.PushEnvResponse + 154, // [154:209] is the sub-list for method output_type + 99, // [99:154] is the sub-list for method input_type + 99, // [99:99] is the sub-list for extension type_name + 99, // [99:99] is the sub-list for extension extendee + 0, // [0:99] is the sub-list for field type_name } func init() { file_rill_runtime_v1_api_proto_init() } @@ -11808,7 +12082,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[108].Exporter = func(v any, i int) any { - switch v := v.(*ListGitBranchesRequest); i { + switch v := v.(*GitDiffRequest); i { case 0: return &v.state case 1: @@ -11820,7 +12094,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[109].Exporter = func(v any, i int) any { - switch v := v.(*ListGitBranchesResponse); i { + switch v := v.(*GitDiffResponse); i { case 0: return &v.state case 1: @@ -11832,7 +12106,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[110].Exporter = func(v any, i int) any { - switch v := v.(*GitBranch); i { + switch v := v.(*ListGitBranchesRequest); i { case 0: return &v.state case 1: @@ -11844,7 +12118,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[111].Exporter = func(v any, i int) any { - switch v := v.(*GitCommitRequest); i { + switch v := v.(*ListGitBranchesResponse); i { case 0: return &v.state case 1: @@ -11856,7 +12130,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[112].Exporter = func(v any, i int) any { - switch v := v.(*GitCommitResponse); i { + switch v := v.(*GitBranch); i { case 0: return &v.state case 1: @@ -11868,7 +12142,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[113].Exporter = func(v any, i int) any { - switch v := v.(*RestoreGitCommitRequest); i { + switch v := v.(*GitCommitRequest); i { case 0: return &v.state case 1: @@ -11880,7 +12154,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[114].Exporter = func(v any, i int) any { - switch v := v.(*RestoreGitCommitResponse); i { + switch v := v.(*GitCommitResponse); i { case 0: return &v.state case 1: @@ -11892,7 +12166,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[115].Exporter = func(v any, i int) any { - switch v := v.(*GitMergeToBranchRequest); i { + switch v := v.(*RestoreGitCommitRequest); i { case 0: return &v.state case 1: @@ -11904,7 +12178,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[116].Exporter = func(v any, i int) any { - switch v := v.(*GitMergeToBranchResponse); i { + switch v := v.(*RestoreGitCommitResponse); i { case 0: return &v.state case 1: @@ -11916,7 +12190,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[117].Exporter = func(v any, i int) any { - switch v := v.(*GitSwitchBranchRequest); i { + switch v := v.(*GitMergeToBranchRequest); i { case 0: return &v.state case 1: @@ -11928,7 +12202,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[118].Exporter = func(v any, i int) any { - switch v := v.(*GitSwitchBranchResponse); i { + switch v := v.(*GitMergeToBranchResponse); i { case 0: return &v.state case 1: @@ -11940,7 +12214,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[119].Exporter = func(v any, i int) any { - switch v := v.(*GitPullRequest); i { + switch v := v.(*GitSwitchBranchRequest); i { case 0: return &v.state case 1: @@ -11952,7 +12226,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[120].Exporter = func(v any, i int) any { - switch v := v.(*GitPullResponse); i { + switch v := v.(*GitSwitchBranchResponse); i { case 0: return &v.state case 1: @@ -11964,7 +12238,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[121].Exporter = func(v any, i int) any { - switch v := v.(*GitPushRequest); i { + switch v := v.(*GitPullRequest); i { case 0: return &v.state case 1: @@ -11976,7 +12250,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[122].Exporter = func(v any, i int) any { - switch v := v.(*GitPushResponse); i { + switch v := v.(*GitPullResponse); i { case 0: return &v.state case 1: @@ -11988,7 +12262,7 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[123].Exporter = func(v any, i int) any { - switch v := v.(*PushEnvRequest); i { + switch v := v.(*GitPushRequest); i { case 0: return &v.state case 1: @@ -12000,6 +12274,30 @@ func file_rill_runtime_v1_api_proto_init() { } } file_rill_runtime_v1_api_proto_msgTypes[124].Exporter = func(v any, i int) any { + switch v := v.(*GitPushResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_api_proto_msgTypes[125].Exporter = func(v any, i int) any { + switch v := v.(*PushEnvRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_api_proto_msgTypes[126].Exporter = func(v any, i int) any { switch v := v.(*PushEnvResponse); i { case 0: return &v.state @@ -12011,7 +12309,7 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } - file_rill_runtime_v1_api_proto_msgTypes[134].Exporter = func(v any, i int) any { + file_rill_runtime_v1_api_proto_msgTypes[136].Exporter = func(v any, i int) any { switch v := v.(*ConnectorDriver_Property); i { case 0: return &v.state @@ -12023,6 +12321,18 @@ func file_rill_runtime_v1_api_proto_init() { return nil } } + file_rill_runtime_v1_api_proto_msgTypes[139].Exporter = func(v any, i int) any { + switch v := v.(*GitDiffResponse_GitFileChange); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } file_rill_runtime_v1_api_proto_msgTypes[17].OneofWrappers = []any{} type x struct{} @@ -12030,8 +12340,8 @@ func file_rill_runtime_v1_api_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_rill_runtime_v1_api_proto_rawDesc, - NumEnums: 4, - NumMessages: 137, + NumEnums: 5, + NumMessages: 140, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/gen/rill/runtime/v1/api.pb.gw.go b/proto/gen/rill/runtime/v1/api.pb.gw.go index cf734699b3d7..dc8ea349cdf7 100644 --- a/proto/gen/rill/runtime/v1/api.pb.gw.go +++ b/proto/gen/rill/runtime/v1/api.pb.gw.go @@ -2668,6 +2668,76 @@ func local_request_RuntimeService_GitStatus_0(ctx context.Context, marshaler run } +var ( + filter_RuntimeService_GitDiff_0 = &utilities.DoubleArray{Encoding: map[string]int{"instance_id": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_RuntimeService_GitDiff_0(ctx context.Context, marshaler runtime.Marshaler, client RuntimeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GitDiffRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["instance_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "instance_id") + } + + protoReq.InstanceId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "instance_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_RuntimeService_GitDiff_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.GitDiff(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_RuntimeService_GitDiff_0(ctx context.Context, marshaler runtime.Marshaler, server RuntimeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GitDiffRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["instance_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "instance_id") + } + + protoReq.InstanceId, err = runtime.String(val) + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "instance_id", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_RuntimeService_GitDiff_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.GitDiff(ctx, &protoReq) + return msg, metadata, err + +} + func request_RuntimeService_ListGitBranches_0(ctx context.Context, marshaler runtime.Marshaler, client RuntimeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ListGitBranchesRequest var metadata runtime.ServerMetadata @@ -4245,6 +4315,31 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_RuntimeService_GitDiff_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GitDiff", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/git/diff")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_RuntimeService_GitDiff_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RuntimeService_GitDiff_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_RuntimeService_ListGitBranches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -5498,6 +5593,28 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve }) + mux.Handle("GET", pattern_RuntimeService_GitDiff_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + var err error + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GitDiff", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/git/diff")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_RuntimeService_GitDiff_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + + forward_RuntimeService_GitDiff_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_RuntimeService_ListGitBranches_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -5770,6 +5887,8 @@ var ( pattern_RuntimeService_GitStatus_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v1", "instances", "instance_id", "git", "status"}, "")) + pattern_RuntimeService_GitDiff_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v1", "instances", "instance_id", "git", "diff"}, "")) + pattern_RuntimeService_ListGitBranches_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v1", "instances", "instance_id", "git", "branches"}, "")) pattern_RuntimeService_GitCommit_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v1", "instances", "instance_id", "git", "commit"}, "")) @@ -5880,6 +5999,8 @@ var ( forward_RuntimeService_GitStatus_0 = runtime.ForwardResponseMessage + forward_RuntimeService_GitDiff_0 = runtime.ForwardResponseMessage + forward_RuntimeService_ListGitBranches_0 = runtime.ForwardResponseMessage forward_RuntimeService_GitCommit_0 = runtime.ForwardResponseMessage diff --git a/proto/gen/rill/runtime/v1/api.pb.validate.go b/proto/gen/rill/runtime/v1/api.pb.validate.go index 47be8eac50bb..470ee4c4e162 100644 --- a/proto/gen/rill/runtime/v1/api.pb.validate.go +++ b/proto/gen/rill/runtime/v1/api.pb.validate.go @@ -14417,6 +14417,255 @@ var _ interface { ErrorName() string } = GitStatusResponseValidationError{} +// Validate checks the field values on GitDiffRequest with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *GitDiffRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GitDiffRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GitDiffRequestMultiError, +// or nil if none found. +func (m *GitDiffRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GitDiffRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if !_GitDiffRequest_InstanceId_Pattern.MatchString(m.GetInstanceId()) { + err := GitDiffRequestValidationError{ + field: "InstanceId", + reason: "value does not match regex pattern \"^[_\\\\-a-zA-Z0-9]+$\"", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for RemoteBranch + + if len(errors) > 0 { + return GitDiffRequestMultiError(errors) + } + + return nil +} + +// GitDiffRequestMultiError is an error wrapping multiple validation errors +// returned by GitDiffRequest.ValidateAll() if the designated constraints +// aren't met. +type GitDiffRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GitDiffRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GitDiffRequestMultiError) AllErrors() []error { return m } + +// GitDiffRequestValidationError is the validation error returned by +// GitDiffRequest.Validate if the designated constraints aren't met. +type GitDiffRequestValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GitDiffRequestValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GitDiffRequestValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GitDiffRequestValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GitDiffRequestValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GitDiffRequestValidationError) ErrorName() string { return "GitDiffRequestValidationError" } + +// Error satisfies the builtin error interface +func (e GitDiffRequestValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGitDiffRequest.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GitDiffRequestValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GitDiffRequestValidationError{} + +var _GitDiffRequest_InstanceId_Pattern = regexp.MustCompile("^[_\\-a-zA-Z0-9]+$") + +// Validate checks the field values on GitDiffResponse with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *GitDiffResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GitDiffResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GitDiffResponseMultiError, or nil if none found. +func (m *GitDiffResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GitDiffResponse) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + for idx, item := range m.GetChangedFiles() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GitDiffResponseValidationError{ + field: fmt.Sprintf("ChangedFiles[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GitDiffResponseValidationError{ + field: fmt.Sprintf("ChangedFiles[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return GitDiffResponseValidationError{ + field: fmt.Sprintf("ChangedFiles[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return GitDiffResponseMultiError(errors) + } + + return nil +} + +// GitDiffResponseMultiError is an error wrapping multiple validation errors +// returned by GitDiffResponse.ValidateAll() if the designated constraints +// aren't met. +type GitDiffResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GitDiffResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GitDiffResponseMultiError) AllErrors() []error { return m } + +// GitDiffResponseValidationError is the validation error returned by +// GitDiffResponse.Validate if the designated constraints aren't met. +type GitDiffResponseValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GitDiffResponseValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GitDiffResponseValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GitDiffResponseValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GitDiffResponseValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GitDiffResponseValidationError) ErrorName() string { return "GitDiffResponseValidationError" } + +// Error satisfies the builtin error interface +func (e GitDiffResponseValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGitDiffResponse.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GitDiffResponseValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GitDiffResponseValidationError{} + // Validate checks the field values on ListGitBranchesRequest with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. @@ -16450,3 +16699,112 @@ var _ interface { Cause() error ErrorName() string } = ConnectorDriver_PropertyValidationError{} + +// Validate checks the field values on GitDiffResponse_GitFileChange with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *GitDiffResponse_GitFileChange) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GitDiffResponse_GitFileChange with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GitDiffResponse_GitFileChangeMultiError, or nil if none found. +func (m *GitDiffResponse_GitFileChange) ValidateAll() error { + return m.validate(true) +} + +func (m *GitDiffResponse_GitFileChange) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Path + + // no validation rules for Status + + // no validation rules for OldPath + + if len(errors) > 0 { + return GitDiffResponse_GitFileChangeMultiError(errors) + } + + return nil +} + +// GitDiffResponse_GitFileChangeMultiError is an error wrapping multiple +// validation errors returned by GitDiffResponse_GitFileChange.ValidateAll() +// if the designated constraints aren't met. +type GitDiffResponse_GitFileChangeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GitDiffResponse_GitFileChangeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GitDiffResponse_GitFileChangeMultiError) AllErrors() []error { return m } + +// GitDiffResponse_GitFileChangeValidationError is the validation error +// returned by GitDiffResponse_GitFileChange.Validate if the designated +// constraints aren't met. +type GitDiffResponse_GitFileChangeValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e GitDiffResponse_GitFileChangeValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e GitDiffResponse_GitFileChangeValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e GitDiffResponse_GitFileChangeValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e GitDiffResponse_GitFileChangeValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e GitDiffResponse_GitFileChangeValidationError) ErrorName() string { + return "GitDiffResponse_GitFileChangeValidationError" +} + +// Error satisfies the builtin error interface +func (e GitDiffResponse_GitFileChangeValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sGitDiffResponse_GitFileChange.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = GitDiffResponse_GitFileChangeValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = GitDiffResponse_GitFileChangeValidationError{} diff --git a/proto/gen/rill/runtime/v1/api_grpc.pb.go b/proto/gen/rill/runtime/v1/api_grpc.pb.go index 5c8500af1890..667d56bb3a1f 100644 --- a/proto/gen/rill/runtime/v1/api_grpc.pb.go +++ b/proto/gen/rill/runtime/v1/api_grpc.pb.go @@ -65,6 +65,7 @@ const ( RuntimeService_AnalyzeVariables_FullMethodName = "/rill.runtime.v1.RuntimeService/AnalyzeVariables" RuntimeService_ListGitCommits_FullMethodName = "/rill.runtime.v1.RuntimeService/ListGitCommits" RuntimeService_GitStatus_FullMethodName = "/rill.runtime.v1.RuntimeService/GitStatus" + RuntimeService_GitDiff_FullMethodName = "/rill.runtime.v1.RuntimeService/GitDiff" RuntimeService_ListGitBranches_FullMethodName = "/rill.runtime.v1.RuntimeService/ListGitBranches" RuntimeService_GitCommit_FullMethodName = "/rill.runtime.v1.RuntimeService/GitCommit" RuntimeService_RestoreGitCommit_FullMethodName = "/rill.runtime.v1.RuntimeService/RestoreGitCommit" @@ -181,6 +182,8 @@ type RuntimeServiceClient interface { ListGitCommits(ctx context.Context, in *ListGitCommitsRequest, opts ...grpc.CallOption) (*ListGitCommitsResponse, error) // GitStatus returns the current status of the local git repo. This is equivalent to doing a `git fetch` followed by running `git status`. GitStatus(ctx context.Context, in *GitStatusRequest, opts ...grpc.CallOption) (*GitStatusResponse, error) + // GitDiff lists the files that differ between the local repo and the comparison branch, i.e. the changes that would land on the target branch. + GitDiff(ctx context.Context, in *GitDiffRequest, opts ...grpc.CallOption) (*GitDiffResponse, error) ListGitBranches(ctx context.Context, in *ListGitBranchesRequest, opts ...grpc.CallOption) (*ListGitBranchesResponse, error) // GitCommit commits the local changes to the git repo equivalent to `git commit -am ` command. GitCommit(ctx context.Context, in *GitCommitRequest, opts ...grpc.CallOption) (*GitCommitResponse, error) @@ -707,6 +710,16 @@ func (c *runtimeServiceClient) GitStatus(ctx context.Context, in *GitStatusReque return out, nil } +func (c *runtimeServiceClient) GitDiff(ctx context.Context, in *GitDiffRequest, opts ...grpc.CallOption) (*GitDiffResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GitDiffResponse) + err := c.cc.Invoke(ctx, RuntimeService_GitDiff_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *runtimeServiceClient) ListGitBranches(ctx context.Context, in *ListGitBranchesRequest, opts ...grpc.CallOption) (*ListGitBranchesResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListGitBranchesResponse) @@ -893,6 +906,8 @@ type RuntimeServiceServer interface { ListGitCommits(context.Context, *ListGitCommitsRequest) (*ListGitCommitsResponse, error) // GitStatus returns the current status of the local git repo. This is equivalent to doing a `git fetch` followed by running `git status`. GitStatus(context.Context, *GitStatusRequest) (*GitStatusResponse, error) + // GitDiff lists the files that differ between the local repo and the comparison branch, i.e. the changes that would land on the target branch. + GitDiff(context.Context, *GitDiffRequest) (*GitDiffResponse, error) ListGitBranches(context.Context, *ListGitBranchesRequest) (*ListGitBranchesResponse, error) // GitCommit commits the local changes to the git repo equivalent to `git commit -am ` command. GitCommit(context.Context, *GitCommitRequest) (*GitCommitResponse, error) @@ -1061,6 +1076,9 @@ func (UnimplementedRuntimeServiceServer) ListGitCommits(context.Context, *ListGi func (UnimplementedRuntimeServiceServer) GitStatus(context.Context, *GitStatusRequest) (*GitStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GitStatus not implemented") } +func (UnimplementedRuntimeServiceServer) GitDiff(context.Context, *GitDiffRequest) (*GitDiffResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GitDiff not implemented") +} func (UnimplementedRuntimeServiceServer) ListGitBranches(context.Context, *ListGitBranchesRequest) (*ListGitBranchesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListGitBranches not implemented") } @@ -1906,6 +1924,24 @@ func _RuntimeService_GitStatus_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _RuntimeService_GitDiff_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GitDiffRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RuntimeServiceServer).GitDiff(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: RuntimeService_GitDiff_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RuntimeServiceServer).GitDiff(ctx, req.(*GitDiffRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _RuntimeService_ListGitBranches_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListGitBranchesRequest) if err := dec(in); err != nil { @@ -2225,6 +2261,10 @@ var RuntimeService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GitStatus", Handler: _RuntimeService_GitStatus_Handler, }, + { + MethodName: "GitDiff", + Handler: _RuntimeService_GitDiff_Handler, + }, { MethodName: "ListGitBranches", Handler: _RuntimeService_ListGitBranches_Handler, diff --git a/proto/gen/rill/runtime/v1/runtime.swagger.yaml b/proto/gen/rill/runtime/v1/runtime.swagger.yaml index ceec8e20a45d..bd4854c2853f 100644 --- a/proto/gen/rill/runtime/v1/runtime.swagger.yaml +++ b/proto/gen/rill/runtime/v1/runtime.swagger.yaml @@ -1294,6 +1294,33 @@ paths: type: string tags: - RuntimeService + /v1/instances/{instanceId}/git/diff: + get: + summary: GitDiff lists the files that differ between the local repo and the comparison branch, i.e. the changes that would land on the target branch. + operationId: RuntimeService_GitDiff + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GitDiffResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: remoteBranch + description: |- + remote_branch is the branch to compare against. Same semantics as GitStatusRequest: + if empty, the upstream of the current local branch is used. + in: query + required: false + type: string + tags: + - RuntimeService /v1/instances/{instanceId}/git/merge: post: summary: |- @@ -3735,6 +3762,25 @@ definitions: - TYPE_INFORMATIONAL default: TYPE_UNSPECIFIED title: Type of the property + GitDiffResponseGitFileChange: + type: object + properties: + path: + type: string + status: + $ref: '#/definitions/GitDiffResponseGitFileStatus' + oldPath: + type: string + description: old_path is the previous path; only set when status is GIT_FILE_STATUS_RENAMED. + GitDiffResponseGitFileStatus: + type: string + enum: + - GIT_FILE_STATUS_UNSPECIFIED + - GIT_FILE_STATUS_ADDED + - GIT_FILE_STATUS_MODIFIED + - GIT_FILE_STATUS_DELETED + - GIT_FILE_STATUS_RENAMED + default: GIT_FILE_STATUS_UNSPECIFIED MetricsViewFilterCond: type: object properties: @@ -5597,6 +5643,18 @@ definitions: properties: commitSha: type: string + v1GitDiffResponse: + type: object + properties: + changedFiles: + type: array + items: + type: object + $ref: '#/definitions/GitDiffResponseGitFileChange' + description: |- + changed_files lists the files that would land on the target branch, relative to the project subpath. + The comparison ref is the requested remote_branch, or the upstream of the current branch when + remote_branch is empty. v1GitMergeToBranchResponse: type: object properties: diff --git a/proto/rill/runtime/v1/api.proto b/proto/rill/runtime/v1/api.proto index 65742f70ecd6..c6b60e7994da 100644 --- a/proto/rill/runtime/v1/api.proto +++ b/proto/rill/runtime/v1/api.proto @@ -325,6 +325,11 @@ service RuntimeService { option (google.api.http) = {get: "/v1/instances/{instance_id}/git/status"}; } + // GitDiff lists the files that differ between the local repo and the comparison branch, i.e. the changes that would land on the target branch. + rpc GitDiff(GitDiffRequest) returns (GitDiffResponse) { + option (google.api.http) = {get: "/v1/instances/{instance_id}/git/diff"}; + } + rpc ListGitBranches(ListGitBranchesRequest) returns (ListGitBranchesResponse) { option (google.api.http) = {get: "/v1/instances/{instance_id}/git/branches"}; } @@ -1325,6 +1330,35 @@ message GitStatusResponse { int32 remote_commits = 6; } +message GitDiffRequest { + string instance_id = 1 [(validate.rules).string = {pattern: "^[_\\-a-zA-Z0-9]+$"}]; + // remote_branch is the branch to compare against. Same semantics as GitStatusRequest: + // if empty, the upstream of the current local branch is used. + string remote_branch = 2; +} + +message GitDiffResponse { + enum GitFileStatus { + GIT_FILE_STATUS_UNSPECIFIED = 0; + GIT_FILE_STATUS_ADDED = 1; + GIT_FILE_STATUS_MODIFIED = 2; + GIT_FILE_STATUS_DELETED = 3; + GIT_FILE_STATUS_RENAMED = 4; + } + + message GitFileChange { + string path = 1; + GitFileStatus status = 2; + // old_path is the previous path; only set when status is GIT_FILE_STATUS_RENAMED. + string old_path = 3; + } + + // changed_files lists the files that would land on the target branch, relative to the project subpath. + // The comparison ref is the requested remote_branch, or the upstream of the current branch when + // remote_branch is empty. + repeated GitFileChange changed_files = 1; +} + message ListGitBranchesRequest { string instance_id = 1 [(validate.rules).string = {pattern: "^[_\\-a-zA-Z0-9]+$"}]; } diff --git a/runtime/drivers/admin/repo.go b/runtime/drivers/admin/repo.go index d6edae5652cd..bfcb9af89dd5 100644 --- a/runtime/drivers/admin/repo.go +++ b/runtime/drivers/admin/repo.go @@ -441,7 +441,7 @@ func (r *repo) ListCommits(ctx context.Context, fromCommit string, limit int) ([ } // Status implements drivers.RepoStore. -func (r *repo) Status(ctx context.Context, remoteBranch string) (*drivers.RepoStatus, error) { +func (r *repo) Status(ctx context.Context, remoteBranch string, changedFiles bool) (*drivers.RepoStatus, error) { err := r.rlockEnsureReady(ctx, true) if err != nil { return nil, err @@ -474,6 +474,15 @@ func (r *repo) Status(ctx context.Context, remoteBranch string) (*drivers.RepoSt if err != nil { return nil, fmt.Errorf("failed to get Git status: %w", err) } + // Listing changed files is extra git work most callers do not need, so it is opt-in and computed + // separately. Best-effort: a failure here must not break the status the merge flow depends on. + var fileChanges []drivers.RepoFileChange + if changedFiles { + if files, err := gitutil.ChangedFiles(ctx, r.git.repoDir, r.git.subpath, "origin", remoteBranch); err == nil { + fileChanges = repoFileChanges(files) + } + } + return &drivers.RepoStatus{ IsGitRepo: true, Branch: st.Branch, @@ -483,9 +492,40 @@ func (r *repo) Status(ctx context.Context, remoteBranch string) (*drivers.RepoSt LocalChanges: st.LocalChanges, LocalCommits: st.LocalCommits, RemoteCommits: st.RemoteCommits, + ChangedFiles: fileChanges, }, nil } +func repoFileChanges(files []gitutil.ChangedFile) []drivers.RepoFileChange { + if len(files) == 0 { + return nil + } + out := make([]drivers.RepoFileChange, len(files)) + for i, f := range files { + out[i] = drivers.RepoFileChange{ + Path: f.Path, + OldPath: f.OldPath, + Status: repoFileStatus(f.Status), + } + } + return out +} + +func repoFileStatus(s gitutil.ChangedFileStatus) drivers.RepoFileStatus { + switch s { + case gitutil.ChangedFileStatusAdded: + return drivers.RepoFileStatusAdded + case gitutil.ChangedFileStatusModified: + return drivers.RepoFileStatusModified + case gitutil.ChangedFileStatusDeleted: + return drivers.RepoFileStatusDeleted + case gitutil.ChangedFileStatusRenamed: + return drivers.RepoFileStatusRenamed + default: + return drivers.RepoFileStatusUnspecified + } +} + func (r *repo) Commit(ctx context.Context, message string) (string, error) { err := r.lockForWrite(ctx) // no remote operations but still need the write lock if err != nil { diff --git a/runtime/drivers/file/repo.go b/runtime/drivers/file/repo.go index a449595bf568..a7205fc49199 100644 --- a/runtime/drivers/file/repo.go +++ b/runtime/drivers/file/repo.go @@ -354,7 +354,7 @@ func (c *connection) ListCommits(ctx context.Context, pageToken string, limit in return commits, nextPageToken, nil } -func (c *connection) Status(ctx context.Context, remoteBranch string) (*drivers.RepoStatus, error) { +func (c *connection) Status(ctx context.Context, remoteBranch string, changedFiles bool) (*drivers.RepoStatus, error) { if !gitutil.IsGitRepo(c.root) { return &drivers.RepoStatus{}, nil } @@ -396,6 +396,15 @@ func (c *connection) Status(ctx context.Context, remoteBranch string) (*drivers. if err != nil { return nil, err } + // Listing changed files is extra git work most callers do not need, so it is opt-in and computed separately + var files []gitutil.ChangedFile + if changedFiles { + f, err := gitutil.ChangedFiles(ctx, gitPath, subPath, config.RemoteName(), remoteBranch) + if err != nil { + return nil, err + } + files = f + } return &drivers.RepoStatus{ IsGitRepo: true, Branch: gs.Branch, @@ -405,6 +414,7 @@ func (c *connection) Status(ctx context.Context, remoteBranch string) (*drivers. LocalChanges: gs.LocalChanges, LocalCommits: gs.LocalCommits, RemoteCommits: gs.RemoteCommits, + ChangedFiles: repoFileChanges(files), }, nil } @@ -683,3 +693,33 @@ func restoreToCommit(path, subpath, commithash string) error { } return nil } + +func repoFileChanges(files []gitutil.ChangedFile) []drivers.RepoFileChange { + if len(files) == 0 { + return nil + } + out := make([]drivers.RepoFileChange, len(files)) + for i, f := range files { + out[i] = drivers.RepoFileChange{ + Path: f.Path, + OldPath: f.OldPath, + Status: repoFileStatus(f.Status), + } + } + return out +} + +func repoFileStatus(s gitutil.ChangedFileStatus) drivers.RepoFileStatus { + switch s { + case gitutil.ChangedFileStatusAdded: + return drivers.RepoFileStatusAdded + case gitutil.ChangedFileStatusModified: + return drivers.RepoFileStatusModified + case gitutil.ChangedFileStatusDeleted: + return drivers.RepoFileStatusDeleted + case gitutil.ChangedFileStatusRenamed: + return drivers.RepoFileStatusRenamed + default: + return drivers.RepoFileStatusUnspecified + } +} diff --git a/runtime/drivers/repo.go b/runtime/drivers/repo.go index b8dad489dd78..0899749008fd 100644 --- a/runtime/drivers/repo.go +++ b/runtime/drivers/repo.go @@ -60,7 +60,8 @@ type RepoStore interface { // Status returns the current status of the repository. // If remoteBranch is non-empty and the repo is git-backed, ahead/behind counts compare // against `/` instead of the upstream of the current local branch. - Status(ctx context.Context, remoteBranch string) (*RepoStatus, error) + // If changedFiles is true, the returned status lists the files that differ from the comparison branch. + Status(ctx context.Context, remoteBranch string, changedFiles bool) (*RepoStatus, error) // Pull synchronizes local and remote state. // If discardChanges is true, it will discard any local changes made using Put/Rename/etc. and force synchronize to the remote state. // If forceHandshake is true, it will re-verify any cached config. Specifically, this should be used when external config changes, such as the Git branch or file archive ID. @@ -145,6 +146,27 @@ type RepoStatus struct { LocalChanges bool // true if there are local changes (staged, unstaged, or untracked) LocalCommits int32 RemoteCommits int32 + // ChangedFiles lists the files that would land on the comparison branch. + // Only populated when Status is called with changedFiles set to true. + ChangedFiles []RepoFileChange +} + +type RepoFileStatus int + +const ( + RepoFileStatusUnspecified RepoFileStatus = iota + RepoFileStatusAdded + RepoFileStatusModified + RepoFileStatusDeleted + RepoFileStatusRenamed +) + +// RepoFileChange is a single file that differs from a comparison branch. +type RepoFileChange struct { + Path string + // OldPath is the previous path; only set when Status is RepoFileStatusRenamed. + OldPath string + Status RepoFileStatus } type PullOptions struct { diff --git a/runtime/pkg/gitutil/sync.go b/runtime/pkg/gitutil/sync.go index 28a7926f7fc2..6a4440894f6e 100644 --- a/runtime/pkg/gitutil/sync.go +++ b/runtime/pkg/gitutil/sync.go @@ -7,6 +7,7 @@ import ( "os" "os/exec" "path/filepath" + "sort" "strconv" "strings" ) @@ -19,6 +20,25 @@ type GitStatus struct { RemoteCommits int32 } +// ChangedFileStatus describes how a file changed relative to a comparison ref. +type ChangedFileStatus int + +const ( + ChangedFileStatusUnspecified ChangedFileStatus = iota + ChangedFileStatusAdded + ChangedFileStatusModified + ChangedFileStatusDeleted + ChangedFileStatusRenamed +) + +// ChangedFile is a single file that differs from a comparison ref. +type ChangedFile struct { + Path string + // OldPath is the previous path; only set when Status is ChangedFileStatusRenamed. + OldPath string + Status ChangedFileStatus +} + // Status returns the status of the git repo at path. // If subpath is non-empty, local changes and ahead/behind counts are scoped to it. // If remoteBranch is non-empty, ahead/behind counts compare the local branch against @@ -81,6 +101,96 @@ func Status(ctx context.Context, path, subpath, remoteName, remoteBranch string) return status, nil } +// ChangedFiles returns the files that differ between the working tree at path and the comparison +// ref, i.e. the changes that would land on the ref if merged. +// +// The diff is computed from the merge base of HEAD and the remote ref, not directly against the +// remote ref. This ensures that commits on the remote that have not been pulled locally do not +// appear as spurious inverse changes in the result. +// +// Paths are returned relative to subpath (with the subpath prefix stripped). Uncommitted and +// untracked changes are included, since those are committed before a merge. +// Renames are reported with status Renamed and the old path, but only when git can detect them (a +// committed or staged rename); a rename that is still uncommitted in the working tree appears as a +// deleted old path plus an added new path, because git cannot pair an untracked new file with a +// deleted old one. +func ChangedFiles(ctx context.Context, path, subpath, remoteName, remoteBranch string) ([]ChangedFile, error) { + compareBranch := remoteBranch + if compareBranch == "" { + branch, err := Run(ctx, path, "rev-parse", "--abbrev-ref", "HEAD") + if err != nil { + return nil, err + } + compareBranch = branch + } + ref := fmt.Sprintf("%s/%s", remoteName, compareBranch) + + mergeBase, err := Run(ctx, path, "merge-base", "HEAD", ref) + if err != nil { + return nil, err + } + mergeBase = strings.TrimSpace(mergeBase) + + diffArgs := []string{"diff", "--name-status", "-M", mergeBase} + if subpath != "" { + diffArgs = append(diffArgs, "--", subpath) + } + diffOut, err := Run(ctx, path, diffArgs...) + if err != nil { + return nil, err + } + + // Keyed by new path so a later untracked-file pass can override a stale entry for the same path. + changes := map[string]ChangedFile{} + for line := range strings.SplitSeq(strings.TrimSpace(diffOut), "\n") { + line = strings.TrimSpace(line) + if line == "" { + continue + } + // Format is "\t", or "\t\t" for renames/copies. + fields := strings.Split(line, "\t") + if len(fields) < 2 { + continue + } + status := changedFileStatusFromCode(fields[0][0]) + if status == ChangedFileStatusUnspecified { + continue + } + file := fields[len(fields)-1] + change := ChangedFile{Path: file, Status: status} + if status == ChangedFileStatusRenamed && len(fields) >= 3 { + change.OldPath = fields[1] + } + changes[file] = change + } + + // `git diff` does not list untracked files; treat them as added. + statusArgs := []string{"status", "--porcelain", "--untracked-files=all"} + if subpath != "" { + statusArgs = append(statusArgs, "--", subpath) + } + statusOut, err := Run(ctx, path, statusArgs...) + if err != nil { + return nil, err + } + for line := range strings.SplitSeq(statusOut, "\n") { + if file, ok := strings.CutPrefix(line, "?? "); ok { + changes[file] = ChangedFile{Path: file, Status: ChangedFileStatusAdded} + } + } + + result := make([]ChangedFile, 0, len(changes)) + for _, change := range changes { + change.Path = trimSubpath(change.Path, subpath) + if change.OldPath != "" { + change.OldPath = trimSubpath(change.OldPath, subpath) + } + result = append(result, change) + } + sort.Slice(result, func(i, j int) bool { return result[i].Path < result[j].Path }) + return result, nil +} + // Fetch fetches the latest changes from the remote described by config, updating the // remote-tracking refs under `refs/remotes//`. // If config is nil or carries no credentials, it fetches from origin relying on git's own @@ -278,3 +388,24 @@ func countAheadBehind(ctx context.Context, path, subpath, local, remote string) } return int32(ahead), int32(behind), nil } + +func trimSubpath(file, subpath string) string { + return strings.TrimPrefix(strings.TrimPrefix(file, subpath), "/") +} + +// changedFileStatusFromCode maps a `git diff --name-status` status code to a ChangedFileStatus. +// Copies are reported as added against their destination path. +func changedFileStatusFromCode(code byte) ChangedFileStatus { + switch code { + case 'A', 'C': + return ChangedFileStatusAdded + case 'M', 'T': + return ChangedFileStatusModified + case 'D': + return ChangedFileStatusDeleted + case 'R': + return ChangedFileStatusRenamed + default: + return ChangedFileStatusUnspecified + } +} diff --git a/runtime/pkg/gitutil/sync_test.go b/runtime/pkg/gitutil/sync_test.go index d9c67b1be54a..ee47736c5296 100644 --- a/runtime/pkg/gitutil/sync_test.go +++ b/runtime/pkg/gitutil/sync_test.go @@ -472,6 +472,115 @@ func TestUpstreamMerge(t *testing.T) { require.Equal(t, "local content C", readFile(t, tempDir, "fileC.txt"), "local version of C should be preserved") } +func TestChangedFiles(t *testing.T) { + tempDir, _ := setupRepoWithRemote(t) + mainBranch := getCurrentBranch(t, tempDir) + + // origin/ stays at the initial commit (test1-3.txt); build a mix of changes on + // top of it. The diff is taken against origin/, so all of these should surface. + createCommit(t, tempDir, "added_committed.txt", "new", "add committed file") // committed add + createCommit(t, tempDir, "test1.txt", "changed", "modify committed file") // committed modify + require.NoError(t, os.Remove(filepath.Join(tempDir, "test2.txt")), "failed to delete") // working-tree delete + require.NoError(t, os.WriteFile(filepath.Join(tempDir, "test3.txt"), []byte("edit"), 0644), "failed to modify") + require.NoError(t, os.WriteFile(filepath.Join(tempDir, "untracked.txt"), []byte("x"), 0644), "failed to create untracked") + + files, err := ChangedFiles(context.Background(), tempDir, "", "origin", mainBranch) + require.NoError(t, err, "ChangedFiles failed") + + got := map[string]ChangedFileStatus{} + for _, f := range files { + got[f.Path] = f.Status + } + require.Equal(t, map[string]ChangedFileStatus{ + "added_committed.txt": ChangedFileStatusAdded, + "test1.txt": ChangedFileStatusModified, + "test2.txt": ChangedFileStatusDeleted, + "test3.txt": ChangedFileStatusModified, + "untracked.txt": ChangedFileStatusAdded, + }, got) + + // With no remoteBranch, files are compared against the current branch's upstream + // (origin/) and still reported. + files, err = ChangedFiles(context.Background(), tempDir, "", "origin", "") + require.NoError(t, err, "ChangedFiles failed") + require.NotEmpty(t, files, "ChangedFiles should be computed without a remoteBranch") +} + +func TestChangedFiles_Rename(t *testing.T) { + tempDir, _ := setupRepoWithRemote(t) + mainBranch := getCurrentBranch(t, tempDir) + + // Committed rename: git can pair the old and new paths. + cmd := exec.Command("git", "-C", tempDir, "mv", "test1.txt", "renamed1.txt") + require.NoError(t, cmd.Run(), "failed to rename file") + cmd = exec.Command("git", "-C", tempDir, "commit", "-m", "rename") + require.NoError(t, cmd.Run(), "failed to commit rename") + + // Uncommitted rename: the new file is untracked, so git cannot detect the rename. + require.NoError(t, os.Rename(filepath.Join(tempDir, "test2.txt"), filepath.Join(tempDir, "renamed2.txt")), "failed to rename") + + files, err := ChangedFiles(context.Background(), tempDir, "", "origin", mainBranch) + require.NoError(t, err, "ChangedFiles failed") + + got := map[string]ChangedFile{} + for _, f := range files { + got[f.Path] = f + } + require.Equal(t, ChangedFile{Path: "renamed1.txt", OldPath: "test1.txt", Status: ChangedFileStatusRenamed}, got["renamed1.txt"]) + require.Equal(t, ChangedFileStatusDeleted, got["test2.txt"].Status, "uncommitted rename should show old path as deleted") + require.Equal(t, ChangedFileStatusAdded, got["renamed2.txt"].Status, "uncommitted rename should show new path as added") +} + +func TestChangedFiles_Monorepo(t *testing.T) { + tempDir, _ := setupMonorepoTestRepository(t) + mainBranch := getCurrentBranch(t, tempDir) + + createCommit(t, tempDir, "subproject1/new.txt", "new", "subproject1: add file") + require.NoError(t, os.WriteFile(filepath.Join(tempDir, "subproject2", "file2.txt"), []byte("edit"), 0644), "failed to modify") + + files, err := ChangedFiles(context.Background(), tempDir, "subproject1", "origin", mainBranch) + require.NoError(t, err, "ChangedFiles failed for subproject1") + require.Equal(t, []ChangedFile{{Path: "new.txt", Status: ChangedFileStatusAdded}}, files) + + files, err = ChangedFiles(context.Background(), tempDir, "subproject2", "origin", mainBranch) + require.NoError(t, err, "ChangedFiles failed for subproject2") + require.Equal(t, []ChangedFile{{Path: "file2.txt", Status: ChangedFileStatusModified}}, files) +} + +// TestChangedFiles_RemoteDiverged verifies that files added on the remote but not pulled locally +// do not appear as spurious inverse changes in the result. +func TestChangedFiles_RemoteDiverged(t *testing.T) { + tempDir, remoteDir := setupRepoWithRemote(t) + mainBranch := getCurrentBranch(t, tempDir) + + // Add a file to the remote that the local repo has not pulled. + createRemoteCommit(t, remoteDir, "remote_only.txt", "content", "add remote-only file") + + // Fetch so the remote-tracking ref advances, but do NOT pull (local HEAD stays behind). + require.NoError(t, Fetch(t.Context(), tempDir, nil), "failed to fetch") + + st, err := Status(context.Background(), tempDir, "", "origin", mainBranch) + require.NoError(t, err) + require.Equal(t, int32(0), st.LocalCommits, "expected no local commits") + require.Equal(t, int32(1), st.RemoteCommits, "expected remote to be 1 ahead") + + // Make a local (uncommitted) edit so there is something local to show. + require.NoError(t, os.WriteFile(filepath.Join(tempDir, "test1.txt"), []byte("edited"), 0644)) + + files, err := ChangedFiles(context.Background(), tempDir, "", "origin", mainBranch) + require.NoError(t, err, "ChangedFiles failed") + + got := map[string]ChangedFileStatus{} + for _, f := range files { + got[f.Path] = f.Status + } + + // Only the local edit should be reported; remote_only.txt must NOT appear as deleted. + require.Equal(t, map[string]ChangedFileStatus{ + "test1.txt": ChangedFileStatusModified, + }, got) +} + // Helper: compare canonicalized paths func assertPathsEqual(t *testing.T, p1, p2 string) { t.Helper() diff --git a/runtime/server/git.go b/runtime/server/git.go index 45ba95a646ef..7e9c91c8fc4f 100644 --- a/runtime/server/git.go +++ b/runtime/server/git.go @@ -98,13 +98,14 @@ func (s *Server) GitStatus(ctx context.Context, req *runtimev1.GitStatusRequest) } defer release() - gs, err := repo.Status(ctx, req.RemoteBranch) + gs, err := repo.Status(ctx, req.RemoteBranch, false) if err != nil { return nil, fmt.Errorf("failed to get git status: %w", err) } if !gs.IsGitRepo { return nil, status.Error(codes.FailedPrecondition, "not a git repository") } + return &runtimev1.GitStatusResponse{ Branch: gs.Branch, GithubUrl: gs.RemoteURL, @@ -116,6 +117,54 @@ func (s *Server) GitStatus(ctx context.Context, req *runtimev1.GitStatusRequest) }, nil } +// GitDiff implements RuntimeService. +func (s *Server) GitDiff(ctx context.Context, req *runtimev1.GitDiffRequest) (*runtimev1.GitDiffResponse, error) { + if !auth.GetClaims(ctx, req.InstanceId).Can(runtime.EditRepo) { + return nil, ErrForbidden + } + repo, release, err := s.runtime.Repo(ctx, req.InstanceId) + if err != nil { + return nil, err + } + defer release() + + gs, err := repo.Status(ctx, req.RemoteBranch, true) + if err != nil { + return nil, fmt.Errorf("failed to get git diff: %w", err) + } + if !gs.IsGitRepo { + return nil, status.Error(codes.FailedPrecondition, "not a git repository") + } + + changedFiles := make([]*runtimev1.GitDiffResponse_GitFileChange, len(gs.ChangedFiles)) + for i, f := range gs.ChangedFiles { + changedFiles[i] = &runtimev1.GitDiffResponse_GitFileChange{ + Path: f.Path, + OldPath: f.OldPath, + Status: gitFileStatusToPB(f.Status), + } + } + + return &runtimev1.GitDiffResponse{ + ChangedFiles: changedFiles, + }, nil +} + +func gitFileStatusToPB(s drivers.RepoFileStatus) runtimev1.GitDiffResponse_GitFileStatus { + switch s { + case drivers.RepoFileStatusAdded: + return runtimev1.GitDiffResponse_GIT_FILE_STATUS_ADDED + case drivers.RepoFileStatusModified: + return runtimev1.GitDiffResponse_GIT_FILE_STATUS_MODIFIED + case drivers.RepoFileStatusDeleted: + return runtimev1.GitDiffResponse_GIT_FILE_STATUS_DELETED + case drivers.RepoFileStatusRenamed: + return runtimev1.GitDiffResponse_GIT_FILE_STATUS_RENAMED + default: + return runtimev1.GitDiffResponse_GIT_FILE_STATUS_UNSPECIFIED + } +} + func (s *Server) ListGitCommits(ctx context.Context, req *runtimev1.ListGitCommitsRequest) (*runtimev1.ListGitCommitsResponse, error) { if !auth.GetClaims(ctx, req.InstanceId).Can(runtime.EditRepo) { return nil, ErrForbidden diff --git a/web-admin/src/features/edit-session/MergePopover.svelte b/web-admin/src/features/edit-session/MergePopover.svelte index 2dbf49e24140..e635cd591833 100644 --- a/web-admin/src/features/edit-session/MergePopover.svelte +++ b/web-admin/src/features/edit-session/MergePopover.svelte @@ -30,6 +30,7 @@ import { useRuntimeClient } from "@rilldata/web-common/runtime-client/v2"; import type { ConnectError } from "@connectrpc/connect"; import { ExternalLink, GitPullRequest } from "lucide-svelte"; + import ChangedFilesList from "@rilldata/web-common/features/project/ChangedFilesList.svelte"; import { buildPostMergeUrl } from "./post-merge-url"; export let organization: string; @@ -278,6 +279,7 @@ to production. We'll open a new tab so you can watch updates reconcile. {/if}

+ {#if branchUrl} - - + + + + {#snippet child({ props })} + + {/snippet} + + +
+

+ {#if !prodDeployment} + Publishing sets up your production deployment. We'll open a new tab + where you can invite teammates while it reconciles. + {:else if !prodDeploymentActive} + Production is hibernated. Publishing will resume it and apply your + changes. We'll open the deployment in a new tab so you can watch + updates reconcile. + {:else} + Publishing pushes your changes to production. We'll open a new tab + so you can watch updates reconcile. + {/if} +

+ + +
+
+
{#if alreadyOnPrimary} @@ -294,16 +328,8 @@ No changes to publish {:else if hasRemoteChanges} Remote has updates not in your session. Click to review. - {:else if !prodDeployment} - Publish your project to production. We'll open a new tab where you can - invite teammates while the deployment reconciles. - {:else if !prodDeploymentActive} - Production is hibernated. Publishing will resume it and apply your - changes. We'll open the deployment in a new tab so you can watch updates - reconcile. {:else} - Publish your changes to production. We'll open a new tab so you can - watch updates reconcile. + Review and confirm before publishing {/if} diff --git a/web-common/src/features/project/ChangedFilesList.svelte b/web-common/src/features/project/ChangedFilesList.svelte new file mode 100644 index 000000000000..b4927e25b472 --- /dev/null +++ b/web-common/src/features/project/ChangedFilesList.svelte @@ -0,0 +1,149 @@ + + +{#if isFetching} +
+ + Checking for changes… +
+{:else if count > 0} +
+ + {#if expanded} +
    + {#each changedFiles as file (file.path)} + {@const status = file.status as unknown as string} + {@const badge = badges[status] ?? badges["GIT_FILE_STATUS_MODIFIED"]} +
  • + {badge.letter} + {#if status === "GIT_FILE_STATUS_RENAMED"} + + {file.oldPath} + {file.path} + + {:else} + {file.path} + {/if} +
  • + {/each} +
+ {/if} +
+{/if} + + diff --git a/web-common/src/proto/gen/rill/runtime/v1/api_connect.ts b/web-common/src/proto/gen/rill/runtime/v1/api_connect.ts index b05d00057cd1..f3466820ee6a 100644 --- a/web-common/src/proto/gen/rill/runtime/v1/api_connect.ts +++ b/web-common/src/proto/gen/rill/runtime/v1/api_connect.ts @@ -3,7 +3,7 @@ /* eslint-disable */ // @ts-nocheck -import { AnalyzeConnectorsRequest, AnalyzeConnectorsResponse, AnalyzeVariablesRequest, AnalyzeVariablesResponse, CompleteRequest, CompleteResponse, CompleteStreamingRequest, CompleteStreamingResponse, CreateDirectoryRequest, CreateDirectoryResponse, CreateInstanceRequest, CreateInstanceResponse, CreateTriggerRequest, CreateTriggerResponse, DeleteFileRequest, DeleteFileResponse, DeleteInstanceRequest, DeleteInstanceResponse, EditInstanceRequest, EditInstanceResponse, ForkConversationRequest, ForkConversationResponse, GenerateCanvasFileRequest, GenerateCanvasFileResponse, GenerateMetricsViewFileRequest, GenerateMetricsViewFileResponse, GetAIMessageRequest, GetAIMessageResponse, GetConversationRequest, GetConversationResponse, GetExploreRequest, GetExploreResponse, GetFileRequest, GetFileResponse, GetInstanceRequest, GetInstanceResponse, GetLogsRequest, GetLogsResponse, GetModelPartitionsRequest, GetModelPartitionsResponse, GetResourceRequest, GetResourceResponse, GitCommitRequest, GitCommitResponse, GitMergeToBranchRequest, GitMergeToBranchResponse, GitPullRequest, GitPullResponse, GitPushRequest, GitPushResponse, GitStatusRequest, GitStatusResponse, GitSwitchBranchRequest, GitSwitchBranchResponse, HealthRequest, HealthResponse, InstanceHealthRequest, InstanceHealthResponse, IssueDevJWTRequest, IssueDevJWTResponse, ListConnectorDriversRequest, ListConnectorDriversResponse, ListConversationsRequest, ListConversationsResponse, ListExamplesRequest, ListExamplesResponse, ListFilesRequest, ListFilesResponse, ListGitBranchesRequest, ListGitBranchesResponse, ListGitCommitsRequest, ListGitCommitsResponse, ListInstancesRequest, ListInstancesResponse, ListNotifierConnectorsRequest, ListNotifierConnectorsResponse, ListResourcesRequest, ListResourcesResponse, ListToolsRequest, ListToolsResponse, PingRequest, PingResponse, PushEnvRequest, PushEnvResponse, PutFileRequest, PutFileResponse, QueryResolverRequest, QueryResolverResponse, ReloadConfigRequest, ReloadConfigResponse, RenameFileRequest, RenameFileResponse, RestoreGitCommitRequest, RestoreGitCommitResponse, ShareConversationRequest, ShareConversationResponse, SkipModelPartitionsRequest, SkipModelPartitionsResponse, UnpackEmptyRequest, UnpackEmptyResponse, UnpackExampleRequest, UnpackExampleResponse, WatchFilesRequest, WatchFilesResponse, WatchLogsRequest, WatchLogsResponse, WatchResourcesRequest, WatchResourcesResponse } from "./api_pb.js"; +import { AnalyzeConnectorsRequest, AnalyzeConnectorsResponse, AnalyzeVariablesRequest, AnalyzeVariablesResponse, CompleteRequest, CompleteResponse, CompleteStreamingRequest, CompleteStreamingResponse, CreateDirectoryRequest, CreateDirectoryResponse, CreateInstanceRequest, CreateInstanceResponse, CreateTriggerRequest, CreateTriggerResponse, DeleteFileRequest, DeleteFileResponse, DeleteInstanceRequest, DeleteInstanceResponse, EditInstanceRequest, EditInstanceResponse, ForkConversationRequest, ForkConversationResponse, GenerateCanvasFileRequest, GenerateCanvasFileResponse, GenerateMetricsViewFileRequest, GenerateMetricsViewFileResponse, GetAIMessageRequest, GetAIMessageResponse, GetConversationRequest, GetConversationResponse, GetExploreRequest, GetExploreResponse, GetFileRequest, GetFileResponse, GetInstanceRequest, GetInstanceResponse, GetLogsRequest, GetLogsResponse, GetModelPartitionsRequest, GetModelPartitionsResponse, GetResourceRequest, GetResourceResponse, GitCommitRequest, GitCommitResponse, GitDiffRequest, GitDiffResponse, GitMergeToBranchRequest, GitMergeToBranchResponse, GitPullRequest, GitPullResponse, GitPushRequest, GitPushResponse, GitStatusRequest, GitStatusResponse, GitSwitchBranchRequest, GitSwitchBranchResponse, HealthRequest, HealthResponse, InstanceHealthRequest, InstanceHealthResponse, IssueDevJWTRequest, IssueDevJWTResponse, ListConnectorDriversRequest, ListConnectorDriversResponse, ListConversationsRequest, ListConversationsResponse, ListExamplesRequest, ListExamplesResponse, ListFilesRequest, ListFilesResponse, ListGitBranchesRequest, ListGitBranchesResponse, ListGitCommitsRequest, ListGitCommitsResponse, ListInstancesRequest, ListInstancesResponse, ListNotifierConnectorsRequest, ListNotifierConnectorsResponse, ListResourcesRequest, ListResourcesResponse, ListToolsRequest, ListToolsResponse, PingRequest, PingResponse, PushEnvRequest, PushEnvResponse, PutFileRequest, PutFileResponse, QueryResolverRequest, QueryResolverResponse, ReloadConfigRequest, ReloadConfigResponse, RenameFileRequest, RenameFileResponse, RestoreGitCommitRequest, RestoreGitCommitResponse, ShareConversationRequest, ShareConversationResponse, SkipModelPartitionsRequest, SkipModelPartitionsResponse, UnpackEmptyRequest, UnpackEmptyResponse, UnpackExampleRequest, UnpackExampleResponse, WatchFilesRequest, WatchFilesResponse, WatchLogsRequest, WatchLogsResponse, WatchResourcesRequest, WatchResourcesResponse } from "./api_pb.js"; import { MethodKind } from "@bufbuild/protobuf"; /** @@ -527,6 +527,17 @@ export const RuntimeService = { O: GitStatusResponse, kind: MethodKind.Unary, }, + /** + * GitDiff lists the files that differ between the local repo and the comparison branch, i.e. the changes that would land on the target branch. + * + * @generated from rpc rill.runtime.v1.RuntimeService.GitDiff + */ + gitDiff: { + name: "GitDiff", + I: GitDiffRequest, + O: GitDiffResponse, + kind: MethodKind.Unary, + }, /** * @generated from rpc rill.runtime.v1.RuntimeService.ListGitBranches */ diff --git a/web-common/src/proto/gen/rill/runtime/v1/api_pb.ts b/web-common/src/proto/gen/rill/runtime/v1/api_pb.ts index 18ab9a3d9e9f..5ee675dd06fc 100644 --- a/web-common/src/proto/gen/rill/runtime/v1/api_pb.ts +++ b/web-common/src/proto/gen/rill/runtime/v1/api_pb.ts @@ -5979,6 +5979,182 @@ export class GitStatusResponse extends Message$1 { } } +/** + * @generated from message rill.runtime.v1.GitDiffRequest + */ +export class GitDiffRequest extends Message$1 { + /** + * @generated from field: string instance_id = 1; + */ + instanceId = ""; + + /** + * remote_branch is the branch to compare against. Same semantics as GitStatusRequest: + * if empty, the upstream of the current local branch is used. + * + * @generated from field: string remote_branch = 2; + */ + remoteBranch = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.GitDiffRequest"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "instance_id", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "remote_branch", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GitDiffRequest { + return new GitDiffRequest().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GitDiffRequest { + return new GitDiffRequest().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GitDiffRequest { + return new GitDiffRequest().fromJsonString(jsonString, options); + } + + static equals(a: GitDiffRequest | PlainMessage | undefined, b: GitDiffRequest | PlainMessage | undefined): boolean { + return proto3.util.equals(GitDiffRequest, a, b); + } +} + +/** + * @generated from message rill.runtime.v1.GitDiffResponse + */ +export class GitDiffResponse extends Message$1 { + /** + * changed_files lists the files that would land on the target branch, relative to the project subpath. + * The comparison ref is the requested remote_branch, or the upstream of the current branch when + * remote_branch is empty. + * + * @generated from field: repeated rill.runtime.v1.GitDiffResponse.GitFileChange changed_files = 1; + */ + changedFiles: GitDiffResponse_GitFileChange[] = []; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.GitDiffResponse"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "changed_files", kind: "message", T: GitDiffResponse_GitFileChange, repeated: true }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GitDiffResponse { + return new GitDiffResponse().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GitDiffResponse { + return new GitDiffResponse().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GitDiffResponse { + return new GitDiffResponse().fromJsonString(jsonString, options); + } + + static equals(a: GitDiffResponse | PlainMessage | undefined, b: GitDiffResponse | PlainMessage | undefined): boolean { + return proto3.util.equals(GitDiffResponse, a, b); + } +} + +/** + * @generated from enum rill.runtime.v1.GitDiffResponse.GitFileStatus + */ +export enum GitDiffResponse_GitFileStatus { + /** + * @generated from enum value: GIT_FILE_STATUS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * @generated from enum value: GIT_FILE_STATUS_ADDED = 1; + */ + ADDED = 1, + + /** + * @generated from enum value: GIT_FILE_STATUS_MODIFIED = 2; + */ + MODIFIED = 2, + + /** + * @generated from enum value: GIT_FILE_STATUS_DELETED = 3; + */ + DELETED = 3, + + /** + * @generated from enum value: GIT_FILE_STATUS_RENAMED = 4; + */ + RENAMED = 4, +} +// Retrieve enum metadata with: proto3.getEnumType(GitDiffResponse_GitFileStatus) +proto3.util.setEnumType(GitDiffResponse_GitFileStatus, "rill.runtime.v1.GitDiffResponse.GitFileStatus", [ + { no: 0, name: "GIT_FILE_STATUS_UNSPECIFIED" }, + { no: 1, name: "GIT_FILE_STATUS_ADDED" }, + { no: 2, name: "GIT_FILE_STATUS_MODIFIED" }, + { no: 3, name: "GIT_FILE_STATUS_DELETED" }, + { no: 4, name: "GIT_FILE_STATUS_RENAMED" }, +]); + +/** + * @generated from message rill.runtime.v1.GitDiffResponse.GitFileChange + */ +export class GitDiffResponse_GitFileChange extends Message$1 { + /** + * @generated from field: string path = 1; + */ + path = ""; + + /** + * @generated from field: rill.runtime.v1.GitDiffResponse.GitFileStatus status = 2; + */ + status = GitDiffResponse_GitFileStatus.UNSPECIFIED; + + /** + * old_path is the previous path; only set when status is GIT_FILE_STATUS_RENAMED. + * + * @generated from field: string old_path = 3; + */ + oldPath = ""; + + constructor(data?: PartialMessage) { + super(); + proto3.util.initPartial(data, this); + } + + static readonly runtime: typeof proto3 = proto3; + static readonly typeName = "rill.runtime.v1.GitDiffResponse.GitFileChange"; + static readonly fields: FieldList = proto3.util.newFieldList(() => [ + { no: 1, name: "path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + { no: 2, name: "status", kind: "enum", T: proto3.getEnumType(GitDiffResponse_GitFileStatus) }, + { no: 3, name: "old_path", kind: "scalar", T: 9 /* ScalarType.STRING */ }, + ]); + + static fromBinary(bytes: Uint8Array, options?: Partial): GitDiffResponse_GitFileChange { + return new GitDiffResponse_GitFileChange().fromBinary(bytes, options); + } + + static fromJson(jsonValue: JsonValue, options?: Partial): GitDiffResponse_GitFileChange { + return new GitDiffResponse_GitFileChange().fromJson(jsonValue, options); + } + + static fromJsonString(jsonString: string, options?: Partial): GitDiffResponse_GitFileChange { + return new GitDiffResponse_GitFileChange().fromJsonString(jsonString, options); + } + + static equals(a: GitDiffResponse_GitFileChange | PlainMessage | undefined, b: GitDiffResponse_GitFileChange | PlainMessage | undefined): boolean { + return proto3.util.equals(GitDiffResponse_GitFileChange, a, b); + } +} + /** * @generated from message rill.runtime.v1.ListGitBranchesRequest */ diff --git a/web-common/src/runtime-client/v2/codegen/config.spec.ts b/web-common/src/runtime-client/v2/codegen/config.spec.ts index bc11c0f6fd69..0703d08e80b2 100644 --- a/web-common/src/runtime-client/v2/codegen/config.spec.ts +++ b/web-common/src/runtime-client/v2/codegen/config.spec.ts @@ -32,6 +32,7 @@ describe("classifyMethod", () => { ["watchLogs", "skip"], ["watchResources", "skip"], ["completeStreaming", "skip"], + ["gitDiff", "query"], ["issueDevJWT", "query"], ["analyzeConnectors", "query"], ["analyzeVariables", "query"], diff --git a/web-common/src/runtime-client/v2/codegen/config.ts b/web-common/src/runtime-client/v2/codegen/config.ts index 3c818bb659e9..15f97bcc0f2f 100644 --- a/web-common/src/runtime-client/v2/codegen/config.ts +++ b/web-common/src/runtime-client/v2/codegen/config.ts @@ -34,6 +34,7 @@ export const methodOverrides: Record< completeStreaming: "skip", // Explicitly classified as queries (despite not matching Get/List prefix) gitStatus: "query", + gitDiff: "query", issueDevJWT: "query", analyzeConnectors: "query", analyzeVariables: "query", diff --git a/web-common/src/runtime-client/v2/gen/runtime-service.ts b/web-common/src/runtime-client/v2/gen/runtime-service.ts index 20996a9dcca3..e76af338fc69 100644 --- a/web-common/src/runtime-client/v2/gen/runtime-service.ts +++ b/web-common/src/runtime-client/v2/gen/runtime-service.ts @@ -36,6 +36,8 @@ import { GetModelPartitionsRequest, GetResourceRequest, GitCommitRequest, + GitDiffRequest, + GitDiffResponse, GitMergeToBranchRequest, GitPullRequest, GitPushRequest, @@ -2046,6 +2048,84 @@ export function createRuntimeServiceGitStatus( return createQuery(queryOptions, queryClient); } +/** + * Raw RPC call: RuntimeService.GitDiff + */ +export async function runtimeServiceGitDiff( + client: RuntimeClient, + request: Omit, "instanceId">, + options?: { signal?: AbortSignal }, +): Promise> { + const r = await client.runtimeService.gitDiff( + GitDiffRequest.fromJson( + stripUndefined({ + instanceId: client.instanceId, + ...request, + }) as unknown as JsonValue, + ), + { signal: options?.signal }, + ); + return r.toJson({ + emitDefaultValues: true, + }) as unknown as PartialMessage; +} + +export function getRuntimeServiceGitDiffQueryKey( + instanceId: string, + request?: Omit, "instanceId">, +): QueryKey { + return ["RuntimeService", "gitDiff", instanceId, request ?? {}] as const; +} + +export function getRuntimeServiceGitDiffQueryOptions< + TData = PartialMessage, +>( + client: RuntimeClient, + request: Omit, "instanceId">, + options?: { + query?: Partial< + CreateQueryOptions, ConnectError, TData> + >; + }, +): CreateQueryOptions, ConnectError, TData> & { + queryKey: QueryKey; +} { + const queryKey = getRuntimeServiceGitDiffQueryKey(client.instanceId, request); + const queryFn: QueryFunction> = ({ + signal, + }) => runtimeServiceGitDiff(client, request, { signal }); + return { + queryKey, + queryFn, + enabled: !!client.instanceId, + ...options?.query, + } as CreateQueryOptions< + PartialMessage, + ConnectError, + TData + > & { queryKey: QueryKey }; +} + +export function createRuntimeServiceGitDiff< + TData = PartialMessage, +>( + client: RuntimeClient, + request: Omit, "instanceId">, + options?: { + query?: Partial< + CreateQueryOptions, ConnectError, TData> + >; + }, + queryClient?: QueryClient, +): CreateQueryResult { + const queryOptions = getRuntimeServiceGitDiffQueryOptions( + client, + request, + options, + ); + return createQuery(queryOptions, queryClient); +} + /** * Raw RPC call: RuntimeService.ListGitBranches */