diff options
Diffstat (limited to 'proto')
-rw-r--r-- | proto/commit.proto | 202 | ||||
-rw-r--r-- | proto/diff.proto | 170 | ||||
-rw-r--r-- | proto/go/gitalypb/commit.pb.go | 1028 | ||||
-rw-r--r-- | proto/go/gitalypb/commit_grpc.pb.go | 52 | ||||
-rw-r--r-- | proto/go/gitalypb/diff.pb.go | 148 | ||||
-rw-r--r-- | proto/go/gitalypb/diff_grpc.pb.go | 36 | ||||
-rw-r--r-- | proto/go/gitalypb/log.pb.go | 51 | ||||
-rw-r--r-- | proto/go/gitalypb/operations.pb.go | 1265 | ||||
-rw-r--r-- | proto/go/gitalypb/operations_grpc.pb.go | 104 | ||||
-rw-r--r-- | proto/go/gitalypb/praefect.pb.go | 621 | ||||
-rw-r--r-- | proto/go/gitalypb/praefect_grpc.pb.go | 45 | ||||
-rw-r--r-- | proto/go/gitalypb/ref.pb.go | 13 | ||||
-rw-r--r-- | proto/go/gitalypb/shared.pb.go | 4 | ||||
-rw-r--r-- | proto/log.proto | 16 | ||||
-rw-r--r-- | proto/operations.proto | 258 | ||||
-rw-r--r-- | proto/praefect.proto | 51 | ||||
-rw-r--r-- | proto/ref.proto | 13 | ||||
-rw-r--r-- | proto/shared.proto | 4 |
18 files changed, 1791 insertions, 2290 deletions
diff --git a/proto/commit.proto b/proto/commit.proto index 3c247c8f0..d1d24a33f 100644 --- a/proto/commit.proto +++ b/proto/commit.proto @@ -69,7 +69,7 @@ service CommitService { } // ListFiles lists all the files (including files in sub-dirs) present in the working tree - // for a given revision. + // of a given treeish. rpc ListFiles(ListFilesRequest) returns (stream ListFilesResponse) { option (op_type) = { op: ACCESSOR @@ -90,7 +90,8 @@ service CommitService { }; } - // FindAllCommits lists all the commits for the provided revision. + // FindAllCommits lists all the commits which can be traversed from the + // provided commitish. rpc FindAllCommits(FindAllCommitsRequest) returns (stream FindAllCommitsResponse) { option (op_type) = { op: ACCESSOR @@ -98,8 +99,7 @@ service CommitService { } // FindCommits lists all the commits which are associated with the provided revision - // and paths. If no revision is provided, the commits on the default branch of the - // repository are listed. + // and paths. rpc FindCommits(FindCommitsRequest) returns (stream FindCommitsResponse) { option (op_type) = { op: ACCESSOR @@ -127,56 +127,56 @@ service CommitService { // The following special cases apply and have grown historically: // // - Absolute paths that or relative paths that escape the repository root will cause an error. - // - A nonexistent path inside the repostiory leads to a successful but empty response. + // - A nonexistent path inside the repository leads to a successful but empty response. rpc LastCommitForPath(LastCommitForPathRequest) returns (LastCommitForPathResponse) { option (op_type) = { op: ACCESSOR }; } - // ListLastCommitsForTree ... + // ListLastCommitsForTree lists the last commits for a given tree. rpc ListLastCommitsForTree(ListLastCommitsForTreeRequest) returns (stream ListLastCommitsForTreeResponse) { option (op_type) = { op: ACCESSOR }; } - // CommitsByMessage ... + // CommitsByMessage list commits which match the provided query. rpc CommitsByMessage(CommitsByMessageRequest) returns (stream CommitsByMessageResponse) { option (op_type) = { op: ACCESSOR }; } - // ListCommitsByOid ... + // ListCommitsByOid lists the commits for the provided commitish object IDs. rpc ListCommitsByOid(ListCommitsByOidRequest) returns (stream ListCommitsByOidResponse) { option (op_type) = { op: ACCESSOR }; } - // ListCommitsByRefName ... + // ListCommitsByRefName lists the commits for the provided references. rpc ListCommitsByRefName(ListCommitsByRefNameRequest) returns (stream ListCommitsByRefNameResponse) { option (op_type) = { op: ACCESSOR }; } - // FilterShasWithSignatures ... + // FilterShasWithSignatures filters out signed commits. rpc FilterShasWithSignatures(stream FilterShasWithSignaturesRequest) returns (stream FilterShasWithSignaturesResponse) { option (op_type) = { op: ACCESSOR }; } - // GetCommitSignatures ... + // GetCommitSignatures parses the commit signature information for the provided commitish object IDs. rpc GetCommitSignatures(GetCommitSignaturesRequest) returns (stream GetCommitSignaturesResponse) { option (op_type) = { op: ACCESSOR }; } - // GetCommitMessages ... + // GetCommitMessages returns the commits messages for the provided commitish object IDs. rpc GetCommitMessages(GetCommitMessagesRequest) returns (stream GetCommitMessagesResponse) { option (op_type) = { op: ACCESSOR @@ -185,7 +185,7 @@ service CommitService { // CheckObjectsExist will check for the existence of revisions against a // repository. It returns two sets of data. An array containing the revisions - // fromm the input that it found on the repository, and an array that contains all + // from the input that it found on the repository, and an array that contains all // revisions from the input it did not find on the repository. rpc CheckObjectsExist(stream CheckObjectsExistRequest) returns (stream CheckObjectsExistResponse) { option (op_type) = { @@ -220,9 +220,8 @@ message ListCommitsRequest { // Must not be empty. repeated string revisions = 2; - // pagination_params allows implementation of pagination. The page token is - // the last commit OID that was sent. It's expected to be the full object ID - // to guard against ambigious OIDs. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParameter pagination_params = 3; // order is the order in which commits should be traversed. Please refer to @@ -276,9 +275,8 @@ message ListAllCommitsRequest { // repository is the repository in which commits should be searched for. Repository repository = 1 [(target_repository)=true]; - // pagination_params allows implementation of pagination. The page token is - // the last commit OID that was sent. It's expected to be the full object ID - // to guard against ambigious OIDs. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParameter pagination_params = 2; } @@ -475,8 +473,8 @@ message GetTreeEntriesRequest { bool recursive = 4; // sort defines the sorting parameter. SortBy sort = 5; - // pagination_params allows implementation of pagination. The page token is - // the path of the last tree object that was sent. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParameter pagination_params = 6; // skip_flat_paths is an option to skip the expensive operation of populating flat paths. bool skip_flat_paths = 7; @@ -487,7 +485,8 @@ message GetTreeEntriesRequest { message GetTreeEntriesResponse { // entries denotes a list of tree entries. repeated TreeEntry entries = 1; - // pagination_cursor is a cursor to implement paginated requests. + // pagination_cursor defines the offset for subsequent requests. Refer to PaginationCursor + // documentation for further info. PaginationCursor pagination_cursor = 2; } @@ -535,41 +534,44 @@ message FindCommitResponse { GitCommit commit = 1; } -// ListCommitsByOidRequest ... +// ListCommitsByOidRequest is the request for the ListCommitsByOid RPC. message ListCommitsByOidRequest { - // repository ... + // repository is the repository to list commits from. Repository repository = 1 [(target_repository)=true]; - // oid ... + // oid is a set of commitish object IDs to list commits for. + // If there is no commit against a provided object ID, no error is thrown. It is simply ignored. repeated string oid = 2; // protolint:disable:this REPEATED_FIELD_NAMES_PLURALIZED } -// ListCommitsByOidResponse ... +// ListCommitsByOidResponse is the response for the ListCommitsByOid RPC. message ListCommitsByOidResponse { - // commits ... + // commits are the list of commits for the provided object IDs from the request. repeated GitCommit commits = 1; } -// ListCommitsByRefNameRequest ... +// ListCommitsByRefNameRequest is the request for the ListCommitsByRefName RPC. message ListCommitsByRefNameRequest { - // repository ... + // repository is the repository to list commits from. Repository repository = 1 [(target_repository)=true]; - // ref_names ... + // ref_names is a set of references to obtain commits for. + // If there is no commit against a provided reference, no error is thrown. It is simply ignored. repeated bytes ref_names = 2; } -// ListCommitsByRefNameResponse ... +// ListCommitsByRefNameResponse is the response for the ListCommitsByRefName RPC. message ListCommitsByRefNameResponse { reserved 1; - // CommitForRef ... + // CommitForRef holds the commit for a given reference. message CommitForRef { - // commit ... + // commit is the commit object against the reference. GitCommit commit = 1; - // ref_name ... + // ref_name is a reference from the repository. bytes ref_name = 2; } - // commit_refs ... + // commit_refs is a list of CommitForRef objects which provides the commits + // against the requested references. repeated CommitForRef commit_refs = 2; } @@ -648,7 +650,7 @@ message FindCommitsRequest { // before will only list commits which are older than the specified date. google.protobuf.Timestamp before = 10; // all is used to consider all refs (including HEAD) as the start point for the traversal. - // All and Revision options are mutually exclusive. + // `all` and `revision` options are mutually exclusive. bool all = 11; // first_parent ensures that only the first parent commit is followed in the traversal. bool first_parent = 12; @@ -718,7 +720,7 @@ message CommitLanguagesResponse { // RawBlameRequest is a request for the RawBlame RPC. message RawBlameRequest { - // repository is the repositroy where to perform the blame. + // repository is the repository to perform the blame on. Repository repository = 1 [(target_repository)=true]; // revision is the commitish at which to start the blame. bytes revision = 2; @@ -745,7 +747,7 @@ message RawBlameError { uint64 actual_lines = 1; } - // error ... + // error denotes the type of error encountered. oneof error { // path_not_found is returned when the blamed path cannot be found in the revision. PathNotFoundError path_not_found = 1; @@ -777,107 +779,96 @@ message LastCommitForPathResponse { GitCommit commit = 1; } -// ListLastCommitsForTreeRequest ... +// ListLastCommitsForTreeRequest is the request for the ListLastCommitsForTree RPC. message ListLastCommitsForTreeRequest { - // repository ... + // repository is the repository to run the query in. Repository repository = 1 [(target_repository)=true]; - // revision ... + // revision is the treeish to retrieve commits against. string revision = 2; - // path ... + // path is the relative path to further filter against the treeish revision. This path can either point to a blob + // or to a tree. The path must be relative and must not escape the repository root. If the path is empty or "/", then + // it will be replaced with the root of of the repository. bytes path = 3; - // limit ... + // limit is the number of tree entries to limit the response to. int32 limit = 4; - // offset ... + // offset is the offset of the tree entries from which to start the response. int32 offset = 5; - // literal_pathspec ... + // literal_pathspec is deprecated. bool literal_pathspec = 6 [deprecated = true]; - // global_options ... + // global_options contains the global options used to modify the behaviour of Git. GlobalOptions global_options = 7; } -// ListLastCommitsForTreeResponse ... +// ListLastCommitsForTreeResponse is the response for the ListLastCommitsForTree RPC. message ListLastCommitsForTreeResponse { - // CommitForTree ... + // CommitForTree denotes the last commit for associated path. message CommitForTree { reserved 1; - // commit ... + // commit is the commit that has last modified the path. GitCommit commit = 2; reserved 3; - // path_bytes ... + // path_bytes is the path associated with the commit. bytes path_bytes = 4; } - // commits ... + // commits is a set of CommitForTree objects. repeated CommitForTree commits = 1; } -// CommitsByMessageRequest ... +// CommitsByMessageRequest is the request for the CommitsByMessage RPC. message CommitsByMessageRequest { - // repository ... + // repository is the repository to run the query in. Repository repository = 1 [(target_repository)=true]; - // revision ... + // revision is the commitish to retrieve commits against. bytes revision = 2; - // offset ... + // offset is the offset from which to list commits. int32 offset = 3; - // limit ... + // limit is the maximum number of commits to list. int32 limit = 4; - // path ... + // path is the relative path to filter the commits to. bytes path = 5; - // query ... + // query is the search param to search commit messages against. string query = 6; - // global_options ... + // global_options contains the global options used to modify the behaviour of Git. GlobalOptions global_options = 7; } // CommitsByMessageResponse is the response for the CommitsByMessage RPC. -// One 'page' of the paginated response of CommitsByMessage +// One 'page' of the paginated response of CommitsByMessage. message CommitsByMessageResponse { - // commits ... + // commits is the list of commits which match the query from the request. repeated GitCommit commits = 1; } -// FilterShasWithSignaturesRequest ... +// FilterShasWithSignaturesRequest is the request for the FilterShasWithSignatures RPC. message FilterShasWithSignaturesRequest { - // repository ... + // repository is the repository to retrieve the commits from. Repository repository = 1 [(target_repository)=true]; - // shas ... + // shas is a set of commitish object IDs. If there is no corresponding commit for a + // provided sha, no error will be thrown. Only signed commits will be returned in the + // response. repeated bytes shas = 2; } -// FilterShasWithSignaturesResponse ... +// FilterShasWithSignaturesResponse is the response for the FilterShasWithSignatures RPC. message FilterShasWithSignaturesResponse { - // shas ... + // shas is the filtered list of shas from the request which have an associated signed + // commit. repeated bytes shas = 1; } -// ExtractCommitSignatureRequest ... -message ExtractCommitSignatureRequest { - // repository ... - Repository repository = 1 [(target_repository)=true]; - // commit_id ... - string commit_id = 2; -} - -// ExtractCommitSignatureResponse is the response for the ExtractCommitSignature RPC. -// Either of the 'signature' and 'signed_text' fields may be present. It -// is up to the caller to stitch them together. -message ExtractCommitSignatureResponse { - // signature ... - bytes signature = 1; - // signed_text ... - bytes signed_text = 2; -} - -// GetCommitSignaturesRequest ... +// GetCommitSignaturesRequest is the request for the GetCommitSignatures RPC. message GetCommitSignaturesRequest { - // repository ... + // repository is the repository to retrieve the commits from. Repository repository = 1 [(target_repository)=true]; - // commit_ids ... + // commit_ids is the list of commitish object IDs for whom we want to retrieve + // signature information. If a commit doesn't have associated signature information + // it will be ommitted from the results. repeated string commit_ids = 2; } -// GetCommitSignaturesResponse ... +// GetCommitSignaturesResponse is the response for the GetCommitSignatures RPC. message GetCommitSignaturesResponse { // Signer of the commit. A commit can be signed either by a user or by Gitaly itself. enum Signer { @@ -899,45 +890,46 @@ message GetCommitSignaturesResponse { Signer signer = 4; } -// GetCommitMessagesRequest ... +// GetCommitMessagesRequest is the request for the GetCommitMessages RPC. message GetCommitMessagesRequest { - // repository ... + // repository is the repository to retrieve the commits from. Repository repository = 1 [(target_repository)=true]; - // commit_ids ... + // commit_ids is the list of commitish object IDs for whom we want to retrieve + // the commit message. repeated string commit_ids = 2; } -// GetCommitMessagesResponse ... +// GetCommitMessagesResponse is the response for the GetCommitMessages RPC. message GetCommitMessagesResponse { - // commit_id ... - // Only present for a new commit message + // commit_id is the commit object ID. A response with commit_id set, will be followed with + // response with the message field set with the commit message for that commit. string commit_id = 1; - // message ... + // message is the commit message for the commit. bytes message = 2; } -// CheckObjectsExistRequest is a request for the CheckObjectsExist RPC. Only -// the initial request must contain a repository, the repository of all -// subsequent requests will be ignored. +// CheckObjectsExistRequest is a request for the CheckObjectsExist RPC. message CheckObjectsExistRequest { // repository is the repository in which existence of objects and refs - // are checked. + // are checked. Only the initial request must contain a repository, the repository of all + // subsequent requests will be ignored. Repository repository = 1 [(target_repository)=true]; // revisions contains the revisions that shall be checked for existence. This accepts all revisions - // as documented in gitrevisions(7) + // as documented in gitrevisions(7). repeated bytes revisions = 2; } -// CheckObjectsExistResponse ... +// CheckObjectsExistResponse is a response for the CheckObjectsExist RPC. message CheckObjectsExistResponse { - // RevisionExistence ... + // RevisionExistence lists a revision with information about its existence. message RevisionExistence { - // name ... + // name refers to the revision. bytes name = 1; - // exists ... + // exists is true if the revision exists in the repository. bool exists = 2; }; - // revisions ... + // revisions is the list of RevisionExistence objects used to indicate which + // revisions exist. repeated RevisionExistence revisions = 1; } diff --git a/proto/diff.proto b/proto/diff.proto index f2a961bf6..d140db71c 100644 --- a/proto/diff.proto +++ b/proto/diff.proto @@ -11,35 +11,43 @@ option go_package = "gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"; // introduced between a set of commits. service DiffService { - // CommitDiff returns stream of CommitDiffResponse with patches chunked over messages. + // CommitDiff returns a diff between two different commits. The patch data is + // chunked across messages and get streamed back to the client. rpc CommitDiff(CommitDiffRequest) returns (stream CommitDiffResponse) { option (op_type) = { op: ACCESSOR }; } - // CommitDelta returns a stream so we can divide the response in chunks of deltas. + // CommitDelta returns the deltas between two different commits. A delta + // includes everthing that changed about a set of paths except for the actual + // diff. rpc CommitDelta(CommitDeltaRequest) returns (stream CommitDeltaResponse) { option (op_type) = { op: ACCESSOR }; } - // RawDiff ... + // RawDiff returns a diff between two commits. The output is the unmodified + // output from git-diff(1). This is not to be confused with git-diff(1)'s + // --raw mode. rpc RawDiff(RawDiffRequest) returns (stream RawDiffResponse) { option (op_type) = { op: ACCESSOR }; } - // RawPatch ... + // RawPatch returns a diff between two commits in a formatted patch.The output + // is the unmodified output from git-format-patch(1). This is not to be confused with + // git-diff(1)'s --raw mode. rpc RawPatch(RawPatchRequest) returns (stream RawPatchResponse) { option (op_type) = { op: ACCESSOR }; } - // DiffStats ... + // DiffStats returns the diff stats between two commits such as number of lines + // changed, etc. rpc DiffStats(DiffStatsRequest) returns (stream DiffStatsResponse) { option (op_type) = { op: ACCESSOR @@ -64,9 +72,9 @@ service DiffService { } } -// CommitDiffRequest ... +// CommitDiffRequest is a request for the CommitDiff RPC. message CommitDiffRequest { - // DiffMode ... + // DiffMode determines the type of diff that will be returned. enum DiffMode { // DEFAULT is the standard diff mode and results in a linewise diff for textfiles. DEFAULT = 0; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH @@ -87,40 +95,46 @@ message CommitDiffRequest { WHITESPACE_CHANGES_IGNORE_ALL = 2; } - // repository ... + // repository is the one from which to get the diff. Repository repository = 1 [(target_repository)=true]; - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit>. string left_commit_id = 2; - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit>. string right_commit_id = 3; // This field is deprecated, use the `whitespace_changes` field instead. reserved "ignore_whitespace_change"; reserved 4; - // paths ... + + // paths is a list of paths that limits the diff to those specific paths. repeated bytes paths = 5; - // collapse_diffs ... + // collapse_diffs causes patches to be emptied after safe_max_files, + // safe_max_files, or safe_max_lines is reached. bool collapse_diffs = 6; - // enforce_limits ... + // enforce_limits causes parsing of diffs to stop if max_files, max_lines, + // or max_bytes is reached. bool enforce_limits = 7; - - // max_files ... - // The following set of limits are only enforced when enforce_limits == true. + // max_files is the maximum number of files in a diff. Once reached, parsing is stopped + // if enforce_limits is true. int32 max_files = 8; - // max_lines ... + // max_lines is the maximum number of lines in a diff. Once reached, parsing is stopped + // if enforce_limits is true. int32 max_lines = 9; - // max_bytes ... + // max_bytes is the maximum number of bytes in a diff. Once reached, parsing is stopped + // if enforce_limits is true. int32 max_bytes = 10; // max_patch_bytes is the limitation of a single diff patch, // patches surpassing this limit are pruned by default. // If this is 0 you will get back empty patches. int32 max_patch_bytes = 14; - // safe_max_files... - // These limits are only enforced if collapse_diffs == true. + // safe_max_files is the maximum number of files in a diff. Once reached, patches are emptied if + // collapse_diffs is true. int32 safe_max_files = 11; - // safe_max_lines ... + // safe_max_lines is the maximum number of lines in a diff. Once reached, patches are emptied if + // collapse_diffs is true. int32 safe_max_lines = 12; - // safe_max_bytes ... + // safe_max_bytes is the maximum number of bytes in a diff. Once reached, patches are emptied if + // collapse_diffs is true. int32 safe_max_bytes = 13; // diff_mode is the mode used for generating the diff. Please refer to the enum declaration for supported modes. @@ -147,23 +161,23 @@ message CommitDiffRequest { message CommitDiffResponse { reserved 8; - // from_path ... + // from_path is the path that to_path is getting compared to. bytes from_path = 1; - // to_path ... + // to_path is the path that from_path is getting compared against. bytes to_path = 2; - // from_id is the blob ID as returned via `git diff --full-index`. + // from_id is the id of the blob that is getting compared against. string from_id = 3; - // to_id ... + // to_id is the id of the blob that is getting compared to. string to_id = 4; - // old_mode ... + // old_mode is the mode of the file getting compared against. int32 old_mode = 5; - // new_mode ... + // new_mode is the mode of the file getting compared to. int32 new_mode = 6; - // binary ... + // binary indicates whether or not binary data is getting compared. bool binary = 7; - // raw_patch_data ... + // raw_patch_data is the unparsed data of the diff. bytes raw_patch_data = 9; - // end_of_patch ... + // end_of_patch indicates if this message represents the end of the diff. bool end_of_patch = 10; // overflow_marker Indicates if the diff file exceeded limitations, in which case // there will be no patch data sent, only information about the patch. @@ -176,97 +190,100 @@ message CommitDiffResponse { bool too_large = 13; } -// CommitDeltaRequest ... +// CommitDeltaRequest is a request for the CommitDelta RPC. message CommitDeltaRequest { - // repository ... + // repository is the one to get the commit deltas from. Repository repository = 1 [(target_repository)=true]; - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit>. string left_commit_id = 2; - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit>. string right_commit_id = 3; - // paths ... + // paths is a list of paths that limits the diff to those specific paths. repeated bytes paths = 4; } -// CommitDelta ... +// CommitDelta represents the metadata of a diff between two commits without the actual +// patch data. message CommitDelta { - // from_path ... + // from_path is the path that to_path is getting compared to. bytes from_path = 1; - // to_path ... + // to_path is the path that from_path is getting compared against. bytes to_path = 2; - // from_id is the blob ID as returned via `git diff --full-index`. + // from_id is the id of the blob that is getting compared to. string from_id = 3; - // to_id ... + // to_id is the id of the blob that is getting compared against. string to_id = 4; - // old_mode ... + // old_mode is the mode of the blob getting compared against. int32 old_mode = 5; - // new_mode ... + // new_mode is the mode of the blob getting compared to. int32 new_mode = 6; } -// CommitDeltaResponse ... +// CommitDeltaResponse is the response from a CommitDelta RPC call. message CommitDeltaResponse { - // deltas ... + // deltas is a list of CommitDeltas repeated CommitDelta deltas = 1; } -// RawDiffRequest ... +// RawDiffRequest is a request for the RawDiff RPC. message RawDiffRequest { - // repository ... + // repository is the one to get the diff from. Repository repository = 1 [(target_repository)=true]; - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit>. string left_commit_id = 2; - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit>. string right_commit_id = 3; } -// RawDiffResponse ... +// RawDiffResponse is a response for the RawDiff RPC. message RawDiffResponse { - // data ... + // data is a sequence of bytes representing the unmodified diff patch data + // returned from git-diff(1). bytes data = 1; } -// RawPatchRequest ... +// RawPatchRequest is a response for the RawPatch RPC. message RawPatchRequest { - // repository ... + // repository is the one to get the patch from. Repository repository = 1 [(target_repository)=true]; - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit>. string left_commit_id = 2; - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit> string right_commit_id = 3; } -// RawPatchResponse ... +// RawPatchResponse is a reponse for the RawPatch RPC. message RawPatchResponse { - // data ... + // data is a sequence of bytes representing the unmodified diff patch data + // returned from git-format-patch(1). bytes data = 1; } -// DiffStatsRequest ... +// DiffStatsRequest is a request for the DiffStats RPC. message DiffStatsRequest { - // repository ... + // repository is the one to get diff stats from. Repository repository = 1 [(target_repository)=true]; - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit> string left_commit_id = 2; - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit> string right_commit_id = 3; } -// DiffStats ... +// DiffStats represents diff statistics for a path. message DiffStats { - // path ... + // path is the path of the change. bytes path = 1; - // additions ... + // additions is the number of additions in a diff. int32 additions = 2; - // deletions ... - int32 deletions = 3; - // old_path ... + // deletions is the number of deletions in a diff. + int32 deletions = 3; + // old_path is the original path in the event of a rename. bytes old_path = 4; } -// DiffStatsResponse ... +// DiffStatsResponse is a response for the DiffStats RPC. message DiffStatsResponse { - // stats ... + // stats is a list of DiffStats. repeated DiffStats stats = 1; } @@ -343,15 +360,16 @@ message FindChangedPathsResponse { repeated ChangedPaths paths = 1; } -// ChangedPaths includes the path of the file, and the status of the change. +// ChangedPaths contains information about a changed file. It includes the path +// of the file, and the status of the change. message ChangedPaths { - // Status ... + // Status is an enum representing the type of change. enum Status { - // ADDED ... + // ADDED indicates a file was added. ADDED = 0; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH - // MODIFIED ... + // MODIFIED indicates a file was modified. MODIFIED = 1; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX - // DELETED ... + // DELETED indicates a file was deleted. DELETED = 2; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // TYPE_CHANGE ... TYPE_CHANGE = 3; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX @@ -359,9 +377,9 @@ message ChangedPaths { COPIED = 4; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX } - // path ... + // path is the path of the change in question. bytes path = 1; - // status ... + // status is the type of change. Status status = 2; // old_mode is the mode of the changed path previous to the change. May be one of the following values: // diff --git a/proto/go/gitalypb/commit.pb.go b/proto/go/gitalypb/commit.pb.go index 82c0e8435..c6321133c 100644 --- a/proto/go/gitalypb/commit.pb.go +++ b/proto/go/gitalypb/commit.pb.go @@ -398,7 +398,7 @@ func (x GetCommitSignaturesResponse_Signer) Number() protoreflect.EnumNumber { // Deprecated: Use GetCommitSignaturesResponse_Signer.Descriptor instead. func (GetCommitSignaturesResponse_Signer) EnumDescriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{46, 0} + return file_commit_proto_rawDescGZIP(), []int{44, 0} } // ListCommitsRequest is a request for the ListCommits RPC. @@ -414,9 +414,8 @@ type ListCommitsRequest struct { // the pseudo-revisions `--not` and `--all` as documented in git-rev-list(1). // Must not be empty. Revisions []string `protobuf:"bytes,2,rep,name=revisions,proto3" json:"revisions,omitempty"` - // pagination_params allows implementation of pagination. The page token is - // the last commit OID that was sent. It's expected to be the full object ID - // to guard against ambigious OIDs. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParams *PaginationParameter `protobuf:"bytes,3,opt,name=pagination_params,json=paginationParams,proto3" json:"pagination_params,omitempty"` // order is the order in which commits should be traversed. Please refer to // the enum's documentation for further information. @@ -629,9 +628,8 @@ type ListAllCommitsRequest struct { // repository is the repository in which commits should be searched for. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // pagination_params allows implementation of pagination. The page token is - // the last commit OID that was sent. It's expected to be the full object ID - // to guard against ambigious OIDs. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParams *PaginationParameter `protobuf:"bytes,2,opt,name=pagination_params,json=paginationParams,proto3" json:"pagination_params,omitempty"` } @@ -1563,8 +1561,8 @@ type GetTreeEntriesRequest struct { Recursive bool `protobuf:"varint,4,opt,name=recursive,proto3" json:"recursive,omitempty"` // sort defines the sorting parameter. Sort GetTreeEntriesRequest_SortBy `protobuf:"varint,5,opt,name=sort,proto3,enum=gitaly.GetTreeEntriesRequest_SortBy" json:"sort,omitempty"` - // pagination_params allows implementation of pagination. The page token is - // the path of the last tree object that was sent. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParams *PaginationParameter `protobuf:"bytes,6,opt,name=pagination_params,json=paginationParams,proto3" json:"pagination_params,omitempty"` // skip_flat_paths is an option to skip the expensive operation of populating flat paths. SkipFlatPaths bool `protobuf:"varint,7,opt,name=skip_flat_paths,json=skipFlatPaths,proto3" json:"skip_flat_paths,omitempty"` @@ -1660,7 +1658,8 @@ type GetTreeEntriesResponse struct { // entries denotes a list of tree entries. Entries []*TreeEntry `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"` - // pagination_cursor is a cursor to implement paginated requests. + // pagination_cursor defines the offset for subsequent requests. Refer to PaginationCursor + // documentation for further info. PaginationCursor *PaginationCursor `protobuf:"bytes,2,opt,name=pagination_cursor,json=paginationCursor,proto3" json:"pagination_cursor,omitempty"` } @@ -2021,15 +2020,16 @@ func (x *FindCommitResponse) GetCommit() *GitCommit { return nil } -// ListCommitsByOidRequest ... +// ListCommitsByOidRequest is the request for the ListCommitsByOid RPC. type ListCommitsByOidRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository to list commits from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // oid ... + // oid is a set of commitish object IDs to list commits for. + // If there is no commit against a provided object ID, no error is thrown. It is simply ignored. Oid []string `protobuf:"bytes,2,rep,name=oid,proto3" json:"oid,omitempty"` // protolint:disable:this REPEATED_FIELD_NAMES_PLURALIZED } @@ -2079,13 +2079,13 @@ func (x *ListCommitsByOidRequest) GetOid() []string { return nil } -// ListCommitsByOidResponse ... +// ListCommitsByOidResponse is the response for the ListCommitsByOid RPC. type ListCommitsByOidResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // commits ... + // commits are the list of commits for the provided object IDs from the request. Commits []*GitCommit `protobuf:"bytes,1,rep,name=commits,proto3" json:"commits,omitempty"` } @@ -2128,15 +2128,16 @@ func (x *ListCommitsByOidResponse) GetCommits() []*GitCommit { return nil } -// ListCommitsByRefNameRequest ... +// ListCommitsByRefNameRequest is the request for the ListCommitsByRefName RPC. type ListCommitsByRefNameRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository to list commits from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // ref_names ... + // ref_names is a set of references to obtain commits for. + // If there is no commit against a provided reference, no error is thrown. It is simply ignored. RefNames [][]byte `protobuf:"bytes,2,rep,name=ref_names,json=refNames,proto3" json:"ref_names,omitempty"` } @@ -2186,13 +2187,14 @@ func (x *ListCommitsByRefNameRequest) GetRefNames() [][]byte { return nil } -// ListCommitsByRefNameResponse ... +// ListCommitsByRefNameResponse is the response for the ListCommitsByRefName RPC. type ListCommitsByRefNameResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // commit_refs ... + // commit_refs is a list of CommitForRef objects which provides the commits + // against the requested references. CommitRefs []*ListCommitsByRefNameResponse_CommitForRef `protobuf:"bytes,2,rep,name=commit_refs,json=commitRefs,proto3" json:"commit_refs,omitempty"` } @@ -2405,7 +2407,7 @@ type FindCommitsRequest struct { // before will only list commits which are older than the specified date. Before *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=before,proto3" json:"before,omitempty"` // all is used to consider all refs (including HEAD) as the start point for the traversal. - // All and Revision options are mutually exclusive. + // `all` and `revision` options are mutually exclusive. All bool `protobuf:"varint,11,opt,name=all,proto3" json:"all,omitempty"` // first_parent ensures that only the first parent commit is followed in the traversal. FirstParent bool `protobuf:"varint,12,opt,name=first_parent,json=firstParent,proto3" json:"first_parent,omitempty"` @@ -2754,7 +2756,7 @@ type RawBlameRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository is the repositroy where to perform the blame. + // repository is the repository to perform the blame on. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // revision is the commitish at which to start the blame. Revision []byte `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"` @@ -2881,7 +2883,7 @@ type RawBlameError struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // error ... + // error denotes the type of error encountered. // // Types that are assignable to Error: // @@ -3098,27 +3100,29 @@ func (x *LastCommitForPathResponse) GetCommit() *GitCommit { return nil } -// ListLastCommitsForTreeRequest ... +// ListLastCommitsForTreeRequest is the request for the ListLastCommitsForTree RPC. type ListLastCommitsForTreeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository to run the query in. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // revision ... + // revision is the treeish to retrieve commits against. Revision string `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"` - // path ... + // path is the relative path to further filter against the treeish revision. This path can either point to a blob + // or to a tree. The path must be relative and must not escape the repository root. If the path is empty or "/", then + // it will be replaced with the root of of the repository. Path []byte `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - // limit ... + // limit is the number of tree entries to limit the response to. Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` - // offset ... + // offset is the offset of the tree entries from which to start the response. Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` - // literal_pathspec ... + // literal_pathspec is deprecated. // // Deprecated: Marked as deprecated in commit.proto. LiteralPathspec bool `protobuf:"varint,6,opt,name=literal_pathspec,json=literalPathspec,proto3" json:"literal_pathspec,omitempty"` - // global_options ... + // global_options contains the global options used to modify the behaviour of Git. GlobalOptions *GlobalOptions `protobuf:"bytes,7,opt,name=global_options,json=globalOptions,proto3" json:"global_options,omitempty"` } @@ -3204,13 +3208,13 @@ func (x *ListLastCommitsForTreeRequest) GetGlobalOptions() *GlobalOptions { return nil } -// ListLastCommitsForTreeResponse ... +// ListLastCommitsForTreeResponse is the response for the ListLastCommitsForTree RPC. type ListLastCommitsForTreeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // commits ... + // commits is a set of CommitForTree objects. Commits []*ListLastCommitsForTreeResponse_CommitForTree `protobuf:"bytes,1,rep,name=commits,proto3" json:"commits,omitempty"` } @@ -3253,25 +3257,25 @@ func (x *ListLastCommitsForTreeResponse) GetCommits() []*ListLastCommitsForTreeR return nil } -// CommitsByMessageRequest ... +// CommitsByMessageRequest is the request for the CommitsByMessage RPC. type CommitsByMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository to run the query in. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // revision ... + // revision is the commitish to retrieve commits against. Revision []byte `protobuf:"bytes,2,opt,name=revision,proto3" json:"revision,omitempty"` - // offset ... + // offset is the offset from which to list commits. Offset int32 `protobuf:"varint,3,opt,name=offset,proto3" json:"offset,omitempty"` - // limit ... + // limit is the maximum number of commits to list. Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` - // path ... + // path is the relative path to filter the commits to. Path []byte `protobuf:"bytes,5,opt,name=path,proto3" json:"path,omitempty"` - // query ... + // query is the search param to search commit messages against. Query string `protobuf:"bytes,6,opt,name=query,proto3" json:"query,omitempty"` - // global_options ... + // global_options contains the global options used to modify the behaviour of Git. GlobalOptions *GlobalOptions `protobuf:"bytes,7,opt,name=global_options,json=globalOptions,proto3" json:"global_options,omitempty"` } @@ -3357,13 +3361,13 @@ func (x *CommitsByMessageRequest) GetGlobalOptions() *GlobalOptions { } // CommitsByMessageResponse is the response for the CommitsByMessage RPC. -// One 'page' of the paginated response of CommitsByMessage +// One 'page' of the paginated response of CommitsByMessage. type CommitsByMessageResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // commits ... + // commits is the list of commits which match the query from the request. Commits []*GitCommit `protobuf:"bytes,1,rep,name=commits,proto3" json:"commits,omitempty"` } @@ -3406,15 +3410,17 @@ func (x *CommitsByMessageResponse) GetCommits() []*GitCommit { return nil } -// FilterShasWithSignaturesRequest ... +// FilterShasWithSignaturesRequest is the request for the FilterShasWithSignatures RPC. type FilterShasWithSignaturesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository to retrieve the commits from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // shas ... + // shas is a set of commitish object IDs. If there is no corresponding commit for a + // provided sha, no error will be thrown. Only signed commits will be returned in the + // response. Shas [][]byte `protobuf:"bytes,2,rep,name=shas,proto3" json:"shas,omitempty"` } @@ -3464,13 +3470,14 @@ func (x *FilterShasWithSignaturesRequest) GetShas() [][]byte { return nil } -// FilterShasWithSignaturesResponse ... +// FilterShasWithSignaturesResponse is the response for the FilterShasWithSignatures RPC. type FilterShasWithSignaturesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // shas ... + // shas is the filtered list of shas from the request which have an associated signed + // commit. Shas [][]byte `protobuf:"bytes,1,rep,name=shas,proto3" json:"shas,omitempty"` } @@ -3513,140 +3520,24 @@ func (x *FilterShasWithSignaturesResponse) GetShas() [][]byte { return nil } -// ExtractCommitSignatureRequest ... -type ExtractCommitSignatureRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // repository ... - Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // commit_id ... - CommitId string `protobuf:"bytes,2,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` -} - -func (x *ExtractCommitSignatureRequest) Reset() { - *x = ExtractCommitSignatureRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[43] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ExtractCommitSignatureRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExtractCommitSignatureRequest) ProtoMessage() {} - -func (x *ExtractCommitSignatureRequest) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[43] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExtractCommitSignatureRequest.ProtoReflect.Descriptor instead. -func (*ExtractCommitSignatureRequest) Descriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{43} -} - -func (x *ExtractCommitSignatureRequest) GetRepository() *Repository { - if x != nil { - return x.Repository - } - return nil -} - -func (x *ExtractCommitSignatureRequest) GetCommitId() string { - if x != nil { - return x.CommitId - } - return "" -} - -// ExtractCommitSignatureResponse is the response for the ExtractCommitSignature RPC. -// Either of the 'signature' and 'signed_text' fields may be present. It -// is up to the caller to stitch them together. -type ExtractCommitSignatureResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // signature ... - Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"` - // signed_text ... - SignedText []byte `protobuf:"bytes,2,opt,name=signed_text,json=signedText,proto3" json:"signed_text,omitempty"` -} - -func (x *ExtractCommitSignatureResponse) Reset() { - *x = ExtractCommitSignatureResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[44] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ExtractCommitSignatureResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ExtractCommitSignatureResponse) ProtoMessage() {} - -func (x *ExtractCommitSignatureResponse) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[44] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ExtractCommitSignatureResponse.ProtoReflect.Descriptor instead. -func (*ExtractCommitSignatureResponse) Descriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{44} -} - -func (x *ExtractCommitSignatureResponse) GetSignature() []byte { - if x != nil { - return x.Signature - } - return nil -} - -func (x *ExtractCommitSignatureResponse) GetSignedText() []byte { - if x != nil { - return x.SignedText - } - return nil -} - -// GetCommitSignaturesRequest ... +// GetCommitSignaturesRequest is the request for the GetCommitSignatures RPC. type GetCommitSignaturesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository to retrieve the commits from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // commit_ids ... + // commit_ids is the list of commitish object IDs for whom we want to retrieve + // signature information. If a commit doesn't have associated signature information + // it will be ommitted from the results. CommitIds []string `protobuf:"bytes,2,rep,name=commit_ids,json=commitIds,proto3" json:"commit_ids,omitempty"` } func (x *GetCommitSignaturesRequest) Reset() { *x = GetCommitSignaturesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[45] + mi := &file_commit_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3659,7 +3550,7 @@ func (x *GetCommitSignaturesRequest) String() string { func (*GetCommitSignaturesRequest) ProtoMessage() {} func (x *GetCommitSignaturesRequest) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[45] + mi := &file_commit_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3672,7 +3563,7 @@ func (x *GetCommitSignaturesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCommitSignaturesRequest.ProtoReflect.Descriptor instead. func (*GetCommitSignaturesRequest) Descriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{45} + return file_commit_proto_rawDescGZIP(), []int{43} } func (x *GetCommitSignaturesRequest) GetRepository() *Repository { @@ -3689,7 +3580,7 @@ func (x *GetCommitSignaturesRequest) GetCommitIds() []string { return nil } -// GetCommitSignaturesResponse ... +// GetCommitSignaturesResponse is the response for the GetCommitSignatures RPC. type GetCommitSignaturesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3708,7 +3599,7 @@ type GetCommitSignaturesResponse struct { func (x *GetCommitSignaturesResponse) Reset() { *x = GetCommitSignaturesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[46] + mi := &file_commit_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3721,7 +3612,7 @@ func (x *GetCommitSignaturesResponse) String() string { func (*GetCommitSignaturesResponse) ProtoMessage() {} func (x *GetCommitSignaturesResponse) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[46] + mi := &file_commit_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3734,7 +3625,7 @@ func (x *GetCommitSignaturesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCommitSignaturesResponse.ProtoReflect.Descriptor instead. func (*GetCommitSignaturesResponse) Descriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{46} + return file_commit_proto_rawDescGZIP(), []int{44} } func (x *GetCommitSignaturesResponse) GetCommitId() string { @@ -3765,22 +3656,23 @@ func (x *GetCommitSignaturesResponse) GetSigner() GetCommitSignaturesResponse_Si return GetCommitSignaturesResponse_SIGNER_UNSPECIFIED } -// GetCommitMessagesRequest ... +// GetCommitMessagesRequest is the request for the GetCommitMessages RPC. type GetCommitMessagesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository to retrieve the commits from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // commit_ids ... + // commit_ids is the list of commitish object IDs for whom we want to retrieve + // the commit message. CommitIds []string `protobuf:"bytes,2,rep,name=commit_ids,json=commitIds,proto3" json:"commit_ids,omitempty"` } func (x *GetCommitMessagesRequest) Reset() { *x = GetCommitMessagesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[47] + mi := &file_commit_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3793,7 +3685,7 @@ func (x *GetCommitMessagesRequest) String() string { func (*GetCommitMessagesRequest) ProtoMessage() {} func (x *GetCommitMessagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[47] + mi := &file_commit_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3806,7 +3698,7 @@ func (x *GetCommitMessagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCommitMessagesRequest.ProtoReflect.Descriptor instead. func (*GetCommitMessagesRequest) Descriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{47} + return file_commit_proto_rawDescGZIP(), []int{45} } func (x *GetCommitMessagesRequest) GetRepository() *Repository { @@ -3823,23 +3715,23 @@ func (x *GetCommitMessagesRequest) GetCommitIds() []string { return nil } -// GetCommitMessagesResponse ... +// GetCommitMessagesResponse is the response for the GetCommitMessages RPC. type GetCommitMessagesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // commit_id ... - // Only present for a new commit message + // commit_id is the commit object ID. A response with commit_id set, will be followed with + // response with the message field set with the commit message for that commit. CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` - // message ... + // message is the commit message for the commit. Message []byte `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` } func (x *GetCommitMessagesResponse) Reset() { *x = GetCommitMessagesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[48] + mi := &file_commit_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3852,7 +3744,7 @@ func (x *GetCommitMessagesResponse) String() string { func (*GetCommitMessagesResponse) ProtoMessage() {} func (x *GetCommitMessagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[48] + mi := &file_commit_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3865,7 +3757,7 @@ func (x *GetCommitMessagesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCommitMessagesResponse.ProtoReflect.Descriptor instead. func (*GetCommitMessagesResponse) Descriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{48} + return file_commit_proto_rawDescGZIP(), []int{46} } func (x *GetCommitMessagesResponse) GetCommitId() string { @@ -3882,26 +3774,25 @@ func (x *GetCommitMessagesResponse) GetMessage() []byte { return nil } -// CheckObjectsExistRequest is a request for the CheckObjectsExist RPC. Only -// the initial request must contain a repository, the repository of all -// subsequent requests will be ignored. +// CheckObjectsExistRequest is a request for the CheckObjectsExist RPC. type CheckObjectsExistRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // repository is the repository in which existence of objects and refs - // are checked. + // are checked. Only the initial request must contain a repository, the repository of all + // subsequent requests will be ignored. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // revisions contains the revisions that shall be checked for existence. This accepts all revisions - // as documented in gitrevisions(7) + // as documented in gitrevisions(7). Revisions [][]byte `protobuf:"bytes,2,rep,name=revisions,proto3" json:"revisions,omitempty"` } func (x *CheckObjectsExistRequest) Reset() { *x = CheckObjectsExistRequest{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[49] + mi := &file_commit_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3914,7 +3805,7 @@ func (x *CheckObjectsExistRequest) String() string { func (*CheckObjectsExistRequest) ProtoMessage() {} func (x *CheckObjectsExistRequest) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[49] + mi := &file_commit_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3927,7 +3818,7 @@ func (x *CheckObjectsExistRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckObjectsExistRequest.ProtoReflect.Descriptor instead. func (*CheckObjectsExistRequest) Descriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{49} + return file_commit_proto_rawDescGZIP(), []int{47} } func (x *CheckObjectsExistRequest) GetRepository() *Repository { @@ -3944,20 +3835,21 @@ func (x *CheckObjectsExistRequest) GetRevisions() [][]byte { return nil } -// CheckObjectsExistResponse ... +// CheckObjectsExistResponse is a response for the CheckObjectsExist RPC. type CheckObjectsExistResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // revisions ... + // revisions is the list of RevisionExistence objects used to indicate which + // revisions exist. Revisions []*CheckObjectsExistResponse_RevisionExistence `protobuf:"bytes,1,rep,name=revisions,proto3" json:"revisions,omitempty"` } func (x *CheckObjectsExistResponse) Reset() { *x = CheckObjectsExistResponse{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[50] + mi := &file_commit_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3970,7 +3862,7 @@ func (x *CheckObjectsExistResponse) String() string { func (*CheckObjectsExistResponse) ProtoMessage() {} func (x *CheckObjectsExistResponse) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[50] + mi := &file_commit_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3983,7 +3875,7 @@ func (x *CheckObjectsExistResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckObjectsExistResponse.ProtoReflect.Descriptor instead. func (*CheckObjectsExistResponse) Descriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{50} + return file_commit_proto_rawDescGZIP(), []int{48} } func (x *CheckObjectsExistResponse) GetRevisions() []*CheckObjectsExistResponse_RevisionExistence { @@ -3993,22 +3885,22 @@ func (x *CheckObjectsExistResponse) GetRevisions() []*CheckObjectsExistResponse_ return nil } -// CommitForRef ... +// CommitForRef holds the commit for a given reference. type ListCommitsByRefNameResponse_CommitForRef struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // commit ... + // commit is the commit object against the reference. Commit *GitCommit `protobuf:"bytes,1,opt,name=commit,proto3" json:"commit,omitempty"` - // ref_name ... + // ref_name is a reference from the repository. RefName []byte `protobuf:"bytes,2,opt,name=ref_name,json=refName,proto3" json:"ref_name,omitempty"` } func (x *ListCommitsByRefNameResponse_CommitForRef) Reset() { *x = ListCommitsByRefNameResponse_CommitForRef{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[51] + mi := &file_commit_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4021,7 +3913,7 @@ func (x *ListCommitsByRefNameResponse_CommitForRef) String() string { func (*ListCommitsByRefNameResponse_CommitForRef) ProtoMessage() {} func (x *ListCommitsByRefNameResponse_CommitForRef) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[51] + mi := &file_commit_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4073,7 +3965,7 @@ type CommitLanguagesResponse_Language struct { func (x *CommitLanguagesResponse_Language) Reset() { *x = CommitLanguagesResponse_Language{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[52] + mi := &file_commit_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4086,7 +3978,7 @@ func (x *CommitLanguagesResponse_Language) String() string { func (*CommitLanguagesResponse_Language) ProtoMessage() {} func (x *CommitLanguagesResponse_Language) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[52] + mi := &file_commit_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4144,7 +4036,7 @@ type RawBlameError_OutOfRangeError struct { func (x *RawBlameError_OutOfRangeError) Reset() { *x = RawBlameError_OutOfRangeError{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[53] + mi := &file_commit_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4157,7 +4049,7 @@ func (x *RawBlameError_OutOfRangeError) String() string { func (*RawBlameError_OutOfRangeError) ProtoMessage() {} func (x *RawBlameError_OutOfRangeError) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[53] + mi := &file_commit_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4180,22 +4072,22 @@ func (x *RawBlameError_OutOfRangeError) GetActualLines() uint64 { return 0 } -// CommitForTree ... +// CommitForTree denotes the last commit for associated path. type ListLastCommitsForTreeResponse_CommitForTree struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // commit ... + // commit is the commit that has last modified the path. Commit *GitCommit `protobuf:"bytes,2,opt,name=commit,proto3" json:"commit,omitempty"` - // path_bytes ... + // path_bytes is the path associated with the commit. PathBytes []byte `protobuf:"bytes,4,opt,name=path_bytes,json=pathBytes,proto3" json:"path_bytes,omitempty"` } func (x *ListLastCommitsForTreeResponse_CommitForTree) Reset() { *x = ListLastCommitsForTreeResponse_CommitForTree{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[54] + mi := &file_commit_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4208,7 +4100,7 @@ func (x *ListLastCommitsForTreeResponse_CommitForTree) String() string { func (*ListLastCommitsForTreeResponse_CommitForTree) ProtoMessage() {} func (x *ListLastCommitsForTreeResponse_CommitForTree) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[54] + mi := &file_commit_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4238,22 +4130,22 @@ func (x *ListLastCommitsForTreeResponse_CommitForTree) GetPathBytes() []byte { return nil } -// RevisionExistence ... +// RevisionExistence lists a revision with information about its existence. type CheckObjectsExistResponse_RevisionExistence struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // name ... + // name refers to the revision. Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // exists ... + // exists is true if the revision exists in the repository. Exists bool `protobuf:"varint,2,opt,name=exists,proto3" json:"exists,omitempty"` } func (x *CheckObjectsExistResponse_RevisionExistence) Reset() { *x = CheckObjectsExistResponse_RevisionExistence{} if protoimpl.UnsafeEnabled { - mi := &file_commit_proto_msgTypes[55] + mi := &file_commit_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4266,7 +4158,7 @@ func (x *CheckObjectsExistResponse_RevisionExistence) String() string { func (*CheckObjectsExistResponse_RevisionExistence) ProtoMessage() {} func (x *CheckObjectsExistResponse_RevisionExistence) ProtoReflect() protoreflect.Message { - mi := &file_commit_proto_msgTypes[55] + mi := &file_commit_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4279,7 +4171,7 @@ func (x *CheckObjectsExistResponse_RevisionExistence) ProtoReflect() protoreflec // Deprecated: Use CheckObjectsExistResponse_RevisionExistence.ProtoReflect.Descriptor instead. func (*CheckObjectsExistResponse_RevisionExistence) Descriptor() ([]byte, []int) { - return file_commit_proto_rawDescGZIP(), []int{50, 0} + return file_commit_proto_rawDescGZIP(), []int{48, 0} } func (x *CheckObjectsExistResponse_RevisionExistence) GetName() []byte { @@ -4764,214 +4656,201 @@ var file_commit_proto_rawDesc = []byte{ 0x22, 0x36, 0x0a, 0x20, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x68, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0c, 0x52, 0x04, 0x73, 0x68, 0x61, 0x73, 0x22, 0x76, 0x0a, 0x1d, 0x45, 0x78, 0x74, 0x72, - 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, - 0x22, 0x5f, 0x0a, 0x1e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x65, 0x78, - 0x74, 0x22, 0x75, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, - 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x73, 0x22, 0x83, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x65, - 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, - 0x54, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, - 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x22, 0x44, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, - 0x65, 0x72, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, - 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x49, - 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, - 0x49, 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x02, 0x22, 0x73, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, + 0x28, 0x0c, 0x52, 0x04, 0x73, 0x68, 0x61, 0x73, 0x22, 0x75, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, + 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x73, 0x22, + 0x83, 0x02, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x12, 0x42, 0x0a, 0x06, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x22, + 0x44, 0x0a, 0x06, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x12, 0x53, 0x49, 0x47, + 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x55, 0x53, 0x45, 0x52, + 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x49, 0x47, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x59, 0x53, + 0x54, 0x45, 0x4d, 0x10, 0x02, 0x22, 0x73, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, + 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x73, 0x22, 0x52, 0x0a, 0x19, 0x47, 0x65, + 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x72, + 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, + 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, - 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x49, 0x64, 0x73, 0x22, 0x52, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x72, 0x0a, 0x18, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, - 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, - 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, - 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x19, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x09, 0x72, 0x65, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x65, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3f, 0x0a, 0x11, - 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x78, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x32, 0xf1, 0x10, - 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x50, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1a, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, - 0x01, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5d, 0x0a, 0x10, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x73, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, - 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x49, 0x73, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x49, 0x73, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4a, 0x0a, 0x09, 0x54, - 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x54, 0x72, 0x65, 0x65, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, - 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x51, 0x0a, 0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x6c, 0x0a, 0x15, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x59, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, - 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x19, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x51, 0x0a, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, + 0x78, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x1a, 0x3f, 0x0a, 0x11, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, + 0x78, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x78, + 0x69, 0x73, 0x74, 0x73, 0x32, 0xf1, 0x10, 0x0a, 0x0d, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, + 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, + 0x02, 0x30, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x73, 0x41, + 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x73, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x73, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, + 0x08, 0x02, 0x12, 0x4a, 0x0a, 0x09, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x51, + 0x0a, 0x0c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1b, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, - 0x02, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x12, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, - 0x4b, 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x2e, + 0x02, 0x12, 0x6c, 0x0a, 0x15, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, + 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x69, + 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, + 0x69, 0x76, 0x65, 0x72, 0x67, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, + 0x59, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, + 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, + 0x65, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x72, 0x65, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x4a, 0x0a, 0x09, 0x4c, 0x69, + 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, + 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, + 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, + 0x02, 0x08, 0x02, 0x12, 0x4e, 0x0a, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, + 0x02, 0x08, 0x02, 0x12, 0x59, 0x0a, 0x0e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, + 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, + 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x50, + 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x4e, 0x0a, 0x0b, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x59, 0x0a, 0x0e, - 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1d, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x41, 0x6c, 0x6c, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, - 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x50, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x64, 0x43, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, - 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, - 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, - 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x47, 0x0a, 0x08, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x61, 0x6d, - 0x65, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, 0x42, 0x6c, - 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x60, - 0x0a, 0x11, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x50, - 0x61, 0x74, 0x68, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x61, 0x73, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, - 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x74, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, - 0x12, 0x71, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, + 0x12, 0x5a, 0x0a, 0x0f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, + 0x67, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x47, 0x0a, 0x08, + 0x52, 0x61, 0x77, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x52, 0x61, 0x77, 0x42, 0x6c, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x61, 0x77, 0x42, 0x6c, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, + 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x50, 0x61, 0x74, 0x68, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x6f, + 0x72, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, + 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x46, 0x6f, 0x72, 0x50, 0x61, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x12, 0x71, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4c, + 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65, + 0x65, 0x12, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, - 0x02, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, - 0x08, 0x02, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, 0x69, 0x64, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, - 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x73, 0x46, 0x6f, 0x72, 0x54, 0x72, 0x65, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, + 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, + 0x42, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x5f, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, 0x69, 0x64, 0x12, + 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, 0x69, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x4f, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x14, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, - 0x4f, 0x69, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, - 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x6b, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x42, 0x79, 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, - 0x30, 0x01, 0x12, 0x79, 0x0a, 0x18, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, - 0x57, 0x69, 0x74, 0x68, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x27, + 0x52, 0x65, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x79, 0x0a, 0x18, 0x46, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x69, 0x67, + 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x53, 0x68, 0x61, 0x73, 0x57, 0x69, 0x74, 0x68, 0x53, - 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x28, 0x01, 0x30, 0x01, 0x12, 0x68, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, - 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, - 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x62, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x64, 0x0a, 0x11, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x28, 0x01, 0x30, - 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2f, 0x76, 0x31, 0x36, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, + 0x28, 0x01, 0x30, 0x01, 0x12, 0x68, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x69, + 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, 0x30, 0x01, 0x12, 0x62, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x02, + 0x30, 0x01, 0x12, 0x64, 0x0a, 0x11, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x45, 0x78, 0x69, 0x73, 0x74, 0x12, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, 0x78, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x45, + 0x78, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, + 0x28, 0x02, 0x08, 0x02, 0x28, 0x01, 0x30, 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, + 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, + 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x36, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -4987,7 +4866,7 @@ func file_commit_proto_rawDescGZIP() []byte { } var file_commit_proto_enumTypes = make([]protoimpl.EnumInfo, 7) -var file_commit_proto_msgTypes = make([]protoimpl.MessageInfo, 56) +var file_commit_proto_msgTypes = make([]protoimpl.MessageInfo, 54) var file_commit_proto_goTypes = []interface{}{ (ListCommitsRequest_Order)(0), // 0: gitaly.ListCommitsRequest.Order (TreeEntryResponse_ObjectType)(0), // 1: gitaly.TreeEntryResponse.ObjectType @@ -5039,146 +4918,143 @@ var file_commit_proto_goTypes = []interface{}{ (*CommitsByMessageResponse)(nil), // 47: gitaly.CommitsByMessageResponse (*FilterShasWithSignaturesRequest)(nil), // 48: gitaly.FilterShasWithSignaturesRequest (*FilterShasWithSignaturesResponse)(nil), // 49: gitaly.FilterShasWithSignaturesResponse - (*ExtractCommitSignatureRequest)(nil), // 50: gitaly.ExtractCommitSignatureRequest - (*ExtractCommitSignatureResponse)(nil), // 51: gitaly.ExtractCommitSignatureResponse - (*GetCommitSignaturesRequest)(nil), // 52: gitaly.GetCommitSignaturesRequest - (*GetCommitSignaturesResponse)(nil), // 53: gitaly.GetCommitSignaturesResponse - (*GetCommitMessagesRequest)(nil), // 54: gitaly.GetCommitMessagesRequest - (*GetCommitMessagesResponse)(nil), // 55: gitaly.GetCommitMessagesResponse - (*CheckObjectsExistRequest)(nil), // 56: gitaly.CheckObjectsExistRequest - (*CheckObjectsExistResponse)(nil), // 57: gitaly.CheckObjectsExistResponse - (*ListCommitsByRefNameResponse_CommitForRef)(nil), // 58: gitaly.ListCommitsByRefNameResponse.CommitForRef - (*CommitLanguagesResponse_Language)(nil), // 59: gitaly.CommitLanguagesResponse.Language - (*RawBlameError_OutOfRangeError)(nil), // 60: gitaly.RawBlameError.OutOfRangeError - (*ListLastCommitsForTreeResponse_CommitForTree)(nil), // 61: gitaly.ListLastCommitsForTreeResponse.CommitForTree - (*CheckObjectsExistResponse_RevisionExistence)(nil), // 62: gitaly.CheckObjectsExistResponse.RevisionExistence - (*Repository)(nil), // 63: gitaly.Repository - (*PaginationParameter)(nil), // 64: gitaly.PaginationParameter - (*timestamppb.Timestamp)(nil), // 65: google.protobuf.Timestamp - (*GitCommit)(nil), // 66: gitaly.GitCommit - (*GlobalOptions)(nil), // 67: gitaly.GlobalOptions - (*PaginationCursor)(nil), // 68: gitaly.PaginationCursor - (*ResolveRevisionError)(nil), // 69: gitaly.ResolveRevisionError - (*PathError)(nil), // 70: gitaly.PathError - (*PathNotFoundError)(nil), // 71: gitaly.PathNotFoundError + (*GetCommitSignaturesRequest)(nil), // 50: gitaly.GetCommitSignaturesRequest + (*GetCommitSignaturesResponse)(nil), // 51: gitaly.GetCommitSignaturesResponse + (*GetCommitMessagesRequest)(nil), // 52: gitaly.GetCommitMessagesRequest + (*GetCommitMessagesResponse)(nil), // 53: gitaly.GetCommitMessagesResponse + (*CheckObjectsExistRequest)(nil), // 54: gitaly.CheckObjectsExistRequest + (*CheckObjectsExistResponse)(nil), // 55: gitaly.CheckObjectsExistResponse + (*ListCommitsByRefNameResponse_CommitForRef)(nil), // 56: gitaly.ListCommitsByRefNameResponse.CommitForRef + (*CommitLanguagesResponse_Language)(nil), // 57: gitaly.CommitLanguagesResponse.Language + (*RawBlameError_OutOfRangeError)(nil), // 58: gitaly.RawBlameError.OutOfRangeError + (*ListLastCommitsForTreeResponse_CommitForTree)(nil), // 59: gitaly.ListLastCommitsForTreeResponse.CommitForTree + (*CheckObjectsExistResponse_RevisionExistence)(nil), // 60: gitaly.CheckObjectsExistResponse.RevisionExistence + (*Repository)(nil), // 61: gitaly.Repository + (*PaginationParameter)(nil), // 62: gitaly.PaginationParameter + (*timestamppb.Timestamp)(nil), // 63: google.protobuf.Timestamp + (*GitCommit)(nil), // 64: gitaly.GitCommit + (*GlobalOptions)(nil), // 65: gitaly.GlobalOptions + (*PaginationCursor)(nil), // 66: gitaly.PaginationCursor + (*ResolveRevisionError)(nil), // 67: gitaly.ResolveRevisionError + (*PathError)(nil), // 68: gitaly.PathError + (*PathNotFoundError)(nil), // 69: gitaly.PathNotFoundError } var file_commit_proto_depIdxs = []int32{ - 63, // 0: gitaly.ListCommitsRequest.repository:type_name -> gitaly.Repository - 64, // 1: gitaly.ListCommitsRequest.pagination_params:type_name -> gitaly.PaginationParameter + 61, // 0: gitaly.ListCommitsRequest.repository:type_name -> gitaly.Repository + 62, // 1: gitaly.ListCommitsRequest.pagination_params:type_name -> gitaly.PaginationParameter 0, // 2: gitaly.ListCommitsRequest.order:type_name -> gitaly.ListCommitsRequest.Order - 65, // 3: gitaly.ListCommitsRequest.after:type_name -> google.protobuf.Timestamp - 65, // 4: gitaly.ListCommitsRequest.before:type_name -> google.protobuf.Timestamp - 66, // 5: gitaly.ListCommitsResponse.commits:type_name -> gitaly.GitCommit - 63, // 6: gitaly.ListAllCommitsRequest.repository:type_name -> gitaly.Repository - 64, // 7: gitaly.ListAllCommitsRequest.pagination_params:type_name -> gitaly.PaginationParameter - 66, // 8: gitaly.ListAllCommitsResponse.commits:type_name -> gitaly.GitCommit - 63, // 9: gitaly.CommitStatsRequest.repository:type_name -> gitaly.Repository - 63, // 10: gitaly.CommitIsAncestorRequest.repository:type_name -> gitaly.Repository - 63, // 11: gitaly.TreeEntryRequest.repository:type_name -> gitaly.Repository + 63, // 3: gitaly.ListCommitsRequest.after:type_name -> google.protobuf.Timestamp + 63, // 4: gitaly.ListCommitsRequest.before:type_name -> google.protobuf.Timestamp + 64, // 5: gitaly.ListCommitsResponse.commits:type_name -> gitaly.GitCommit + 61, // 6: gitaly.ListAllCommitsRequest.repository:type_name -> gitaly.Repository + 62, // 7: gitaly.ListAllCommitsRequest.pagination_params:type_name -> gitaly.PaginationParameter + 64, // 8: gitaly.ListAllCommitsResponse.commits:type_name -> gitaly.GitCommit + 61, // 9: gitaly.CommitStatsRequest.repository:type_name -> gitaly.Repository + 61, // 10: gitaly.CommitIsAncestorRequest.repository:type_name -> gitaly.Repository + 61, // 11: gitaly.TreeEntryRequest.repository:type_name -> gitaly.Repository 1, // 12: gitaly.TreeEntryResponse.type:type_name -> gitaly.TreeEntryResponse.ObjectType - 63, // 13: gitaly.CountCommitsRequest.repository:type_name -> gitaly.Repository - 65, // 14: gitaly.CountCommitsRequest.after:type_name -> google.protobuf.Timestamp - 65, // 15: gitaly.CountCommitsRequest.before:type_name -> google.protobuf.Timestamp - 67, // 16: gitaly.CountCommitsRequest.global_options:type_name -> gitaly.GlobalOptions - 63, // 17: gitaly.CountDivergingCommitsRequest.repository:type_name -> gitaly.Repository + 61, // 13: gitaly.CountCommitsRequest.repository:type_name -> gitaly.Repository + 63, // 14: gitaly.CountCommitsRequest.after:type_name -> google.protobuf.Timestamp + 63, // 15: gitaly.CountCommitsRequest.before:type_name -> google.protobuf.Timestamp + 65, // 16: gitaly.CountCommitsRequest.global_options:type_name -> gitaly.GlobalOptions + 61, // 17: gitaly.CountDivergingCommitsRequest.repository:type_name -> gitaly.Repository 2, // 18: gitaly.TreeEntry.type:type_name -> gitaly.TreeEntry.EntryType - 63, // 19: gitaly.GetTreeEntriesRequest.repository:type_name -> gitaly.Repository + 61, // 19: gitaly.GetTreeEntriesRequest.repository:type_name -> gitaly.Repository 3, // 20: gitaly.GetTreeEntriesRequest.sort:type_name -> gitaly.GetTreeEntriesRequest.SortBy - 64, // 21: gitaly.GetTreeEntriesRequest.pagination_params:type_name -> gitaly.PaginationParameter + 62, // 21: gitaly.GetTreeEntriesRequest.pagination_params:type_name -> gitaly.PaginationParameter 21, // 22: gitaly.GetTreeEntriesResponse.entries:type_name -> gitaly.TreeEntry - 68, // 23: gitaly.GetTreeEntriesResponse.pagination_cursor:type_name -> gitaly.PaginationCursor - 69, // 24: gitaly.GetTreeEntriesError.resolve_tree:type_name -> gitaly.ResolveRevisionError - 70, // 25: gitaly.GetTreeEntriesError.path:type_name -> gitaly.PathError - 63, // 26: gitaly.ListFilesRequest.repository:type_name -> gitaly.Repository - 63, // 27: gitaly.FindCommitRequest.repository:type_name -> gitaly.Repository - 66, // 28: gitaly.FindCommitResponse.commit:type_name -> gitaly.GitCommit - 63, // 29: gitaly.ListCommitsByOidRequest.repository:type_name -> gitaly.Repository - 66, // 30: gitaly.ListCommitsByOidResponse.commits:type_name -> gitaly.GitCommit - 63, // 31: gitaly.ListCommitsByRefNameRequest.repository:type_name -> gitaly.Repository - 58, // 32: gitaly.ListCommitsByRefNameResponse.commit_refs:type_name -> gitaly.ListCommitsByRefNameResponse.CommitForRef - 63, // 33: gitaly.FindAllCommitsRequest.repository:type_name -> gitaly.Repository + 66, // 23: gitaly.GetTreeEntriesResponse.pagination_cursor:type_name -> gitaly.PaginationCursor + 67, // 24: gitaly.GetTreeEntriesError.resolve_tree:type_name -> gitaly.ResolveRevisionError + 68, // 25: gitaly.GetTreeEntriesError.path:type_name -> gitaly.PathError + 61, // 26: gitaly.ListFilesRequest.repository:type_name -> gitaly.Repository + 61, // 27: gitaly.FindCommitRequest.repository:type_name -> gitaly.Repository + 64, // 28: gitaly.FindCommitResponse.commit:type_name -> gitaly.GitCommit + 61, // 29: gitaly.ListCommitsByOidRequest.repository:type_name -> gitaly.Repository + 64, // 30: gitaly.ListCommitsByOidResponse.commits:type_name -> gitaly.GitCommit + 61, // 31: gitaly.ListCommitsByRefNameRequest.repository:type_name -> gitaly.Repository + 56, // 32: gitaly.ListCommitsByRefNameResponse.commit_refs:type_name -> gitaly.ListCommitsByRefNameResponse.CommitForRef + 61, // 33: gitaly.FindAllCommitsRequest.repository:type_name -> gitaly.Repository 4, // 34: gitaly.FindAllCommitsRequest.order:type_name -> gitaly.FindAllCommitsRequest.Order - 66, // 35: gitaly.FindAllCommitsResponse.commits:type_name -> gitaly.GitCommit - 63, // 36: gitaly.FindCommitsRequest.repository:type_name -> gitaly.Repository - 65, // 37: gitaly.FindCommitsRequest.after:type_name -> google.protobuf.Timestamp - 65, // 38: gitaly.FindCommitsRequest.before:type_name -> google.protobuf.Timestamp + 64, // 35: gitaly.FindAllCommitsResponse.commits:type_name -> gitaly.GitCommit + 61, // 36: gitaly.FindCommitsRequest.repository:type_name -> gitaly.Repository + 63, // 37: gitaly.FindCommitsRequest.after:type_name -> google.protobuf.Timestamp + 63, // 38: gitaly.FindCommitsRequest.before:type_name -> google.protobuf.Timestamp 5, // 39: gitaly.FindCommitsRequest.order:type_name -> gitaly.FindCommitsRequest.Order - 67, // 40: gitaly.FindCommitsRequest.global_options:type_name -> gitaly.GlobalOptions - 66, // 41: gitaly.FindCommitsResponse.commits:type_name -> gitaly.GitCommit - 63, // 42: gitaly.CommitLanguagesRequest.repository:type_name -> gitaly.Repository - 59, // 43: gitaly.CommitLanguagesResponse.languages:type_name -> gitaly.CommitLanguagesResponse.Language - 63, // 44: gitaly.RawBlameRequest.repository:type_name -> gitaly.Repository - 71, // 45: gitaly.RawBlameError.path_not_found:type_name -> gitaly.PathNotFoundError - 60, // 46: gitaly.RawBlameError.out_of_range:type_name -> gitaly.RawBlameError.OutOfRangeError - 63, // 47: gitaly.LastCommitForPathRequest.repository:type_name -> gitaly.Repository - 67, // 48: gitaly.LastCommitForPathRequest.global_options:type_name -> gitaly.GlobalOptions - 66, // 49: gitaly.LastCommitForPathResponse.commit:type_name -> gitaly.GitCommit - 63, // 50: gitaly.ListLastCommitsForTreeRequest.repository:type_name -> gitaly.Repository - 67, // 51: gitaly.ListLastCommitsForTreeRequest.global_options:type_name -> gitaly.GlobalOptions - 61, // 52: gitaly.ListLastCommitsForTreeResponse.commits:type_name -> gitaly.ListLastCommitsForTreeResponse.CommitForTree - 63, // 53: gitaly.CommitsByMessageRequest.repository:type_name -> gitaly.Repository - 67, // 54: gitaly.CommitsByMessageRequest.global_options:type_name -> gitaly.GlobalOptions - 66, // 55: gitaly.CommitsByMessageResponse.commits:type_name -> gitaly.GitCommit - 63, // 56: gitaly.FilterShasWithSignaturesRequest.repository:type_name -> gitaly.Repository - 63, // 57: gitaly.ExtractCommitSignatureRequest.repository:type_name -> gitaly.Repository - 63, // 58: gitaly.GetCommitSignaturesRequest.repository:type_name -> gitaly.Repository - 6, // 59: gitaly.GetCommitSignaturesResponse.signer:type_name -> gitaly.GetCommitSignaturesResponse.Signer - 63, // 60: gitaly.GetCommitMessagesRequest.repository:type_name -> gitaly.Repository - 63, // 61: gitaly.CheckObjectsExistRequest.repository:type_name -> gitaly.Repository - 62, // 62: gitaly.CheckObjectsExistResponse.revisions:type_name -> gitaly.CheckObjectsExistResponse.RevisionExistence - 66, // 63: gitaly.ListCommitsByRefNameResponse.CommitForRef.commit:type_name -> gitaly.GitCommit - 66, // 64: gitaly.ListLastCommitsForTreeResponse.CommitForTree.commit:type_name -> gitaly.GitCommit - 7, // 65: gitaly.CommitService.ListCommits:input_type -> gitaly.ListCommitsRequest - 9, // 66: gitaly.CommitService.ListAllCommits:input_type -> gitaly.ListAllCommitsRequest - 13, // 67: gitaly.CommitService.CommitIsAncestor:input_type -> gitaly.CommitIsAncestorRequest - 15, // 68: gitaly.CommitService.TreeEntry:input_type -> gitaly.TreeEntryRequest - 17, // 69: gitaly.CommitService.CountCommits:input_type -> gitaly.CountCommitsRequest - 19, // 70: gitaly.CommitService.CountDivergingCommits:input_type -> gitaly.CountDivergingCommitsRequest - 22, // 71: gitaly.CommitService.GetTreeEntries:input_type -> gitaly.GetTreeEntriesRequest - 25, // 72: gitaly.CommitService.ListFiles:input_type -> gitaly.ListFilesRequest - 27, // 73: gitaly.CommitService.FindCommit:input_type -> gitaly.FindCommitRequest - 11, // 74: gitaly.CommitService.CommitStats:input_type -> gitaly.CommitStatsRequest - 33, // 75: gitaly.CommitService.FindAllCommits:input_type -> gitaly.FindAllCommitsRequest - 35, // 76: gitaly.CommitService.FindCommits:input_type -> gitaly.FindCommitsRequest - 37, // 77: gitaly.CommitService.CommitLanguages:input_type -> gitaly.CommitLanguagesRequest - 39, // 78: gitaly.CommitService.RawBlame:input_type -> gitaly.RawBlameRequest - 42, // 79: gitaly.CommitService.LastCommitForPath:input_type -> gitaly.LastCommitForPathRequest - 44, // 80: gitaly.CommitService.ListLastCommitsForTree:input_type -> gitaly.ListLastCommitsForTreeRequest - 46, // 81: gitaly.CommitService.CommitsByMessage:input_type -> gitaly.CommitsByMessageRequest - 29, // 82: gitaly.CommitService.ListCommitsByOid:input_type -> gitaly.ListCommitsByOidRequest - 31, // 83: gitaly.CommitService.ListCommitsByRefName:input_type -> gitaly.ListCommitsByRefNameRequest - 48, // 84: gitaly.CommitService.FilterShasWithSignatures:input_type -> gitaly.FilterShasWithSignaturesRequest - 52, // 85: gitaly.CommitService.GetCommitSignatures:input_type -> gitaly.GetCommitSignaturesRequest - 54, // 86: gitaly.CommitService.GetCommitMessages:input_type -> gitaly.GetCommitMessagesRequest - 56, // 87: gitaly.CommitService.CheckObjectsExist:input_type -> gitaly.CheckObjectsExistRequest - 8, // 88: gitaly.CommitService.ListCommits:output_type -> gitaly.ListCommitsResponse - 10, // 89: gitaly.CommitService.ListAllCommits:output_type -> gitaly.ListAllCommitsResponse - 14, // 90: gitaly.CommitService.CommitIsAncestor:output_type -> gitaly.CommitIsAncestorResponse - 16, // 91: gitaly.CommitService.TreeEntry:output_type -> gitaly.TreeEntryResponse - 18, // 92: gitaly.CommitService.CountCommits:output_type -> gitaly.CountCommitsResponse - 20, // 93: gitaly.CommitService.CountDivergingCommits:output_type -> gitaly.CountDivergingCommitsResponse - 23, // 94: gitaly.CommitService.GetTreeEntries:output_type -> gitaly.GetTreeEntriesResponse - 26, // 95: gitaly.CommitService.ListFiles:output_type -> gitaly.ListFilesResponse - 28, // 96: gitaly.CommitService.FindCommit:output_type -> gitaly.FindCommitResponse - 12, // 97: gitaly.CommitService.CommitStats:output_type -> gitaly.CommitStatsResponse - 34, // 98: gitaly.CommitService.FindAllCommits:output_type -> gitaly.FindAllCommitsResponse - 36, // 99: gitaly.CommitService.FindCommits:output_type -> gitaly.FindCommitsResponse - 38, // 100: gitaly.CommitService.CommitLanguages:output_type -> gitaly.CommitLanguagesResponse - 40, // 101: gitaly.CommitService.RawBlame:output_type -> gitaly.RawBlameResponse - 43, // 102: gitaly.CommitService.LastCommitForPath:output_type -> gitaly.LastCommitForPathResponse - 45, // 103: gitaly.CommitService.ListLastCommitsForTree:output_type -> gitaly.ListLastCommitsForTreeResponse - 47, // 104: gitaly.CommitService.CommitsByMessage:output_type -> gitaly.CommitsByMessageResponse - 30, // 105: gitaly.CommitService.ListCommitsByOid:output_type -> gitaly.ListCommitsByOidResponse - 32, // 106: gitaly.CommitService.ListCommitsByRefName:output_type -> gitaly.ListCommitsByRefNameResponse - 49, // 107: gitaly.CommitService.FilterShasWithSignatures:output_type -> gitaly.FilterShasWithSignaturesResponse - 53, // 108: gitaly.CommitService.GetCommitSignatures:output_type -> gitaly.GetCommitSignaturesResponse - 55, // 109: gitaly.CommitService.GetCommitMessages:output_type -> gitaly.GetCommitMessagesResponse - 57, // 110: gitaly.CommitService.CheckObjectsExist:output_type -> gitaly.CheckObjectsExistResponse - 88, // [88:111] is the sub-list for method output_type - 65, // [65:88] is the sub-list for method input_type - 65, // [65:65] is the sub-list for extension type_name - 65, // [65:65] is the sub-list for extension extendee - 0, // [0:65] is the sub-list for field type_name + 65, // 40: gitaly.FindCommitsRequest.global_options:type_name -> gitaly.GlobalOptions + 64, // 41: gitaly.FindCommitsResponse.commits:type_name -> gitaly.GitCommit + 61, // 42: gitaly.CommitLanguagesRequest.repository:type_name -> gitaly.Repository + 57, // 43: gitaly.CommitLanguagesResponse.languages:type_name -> gitaly.CommitLanguagesResponse.Language + 61, // 44: gitaly.RawBlameRequest.repository:type_name -> gitaly.Repository + 69, // 45: gitaly.RawBlameError.path_not_found:type_name -> gitaly.PathNotFoundError + 58, // 46: gitaly.RawBlameError.out_of_range:type_name -> gitaly.RawBlameError.OutOfRangeError + 61, // 47: gitaly.LastCommitForPathRequest.repository:type_name -> gitaly.Repository + 65, // 48: gitaly.LastCommitForPathRequest.global_options:type_name -> gitaly.GlobalOptions + 64, // 49: gitaly.LastCommitForPathResponse.commit:type_name -> gitaly.GitCommit + 61, // 50: gitaly.ListLastCommitsForTreeRequest.repository:type_name -> gitaly.Repository + 65, // 51: gitaly.ListLastCommitsForTreeRequest.global_options:type_name -> gitaly.GlobalOptions + 59, // 52: gitaly.ListLastCommitsForTreeResponse.commits:type_name -> gitaly.ListLastCommitsForTreeResponse.CommitForTree + 61, // 53: gitaly.CommitsByMessageRequest.repository:type_name -> gitaly.Repository + 65, // 54: gitaly.CommitsByMessageRequest.global_options:type_name -> gitaly.GlobalOptions + 64, // 55: gitaly.CommitsByMessageResponse.commits:type_name -> gitaly.GitCommit + 61, // 56: gitaly.FilterShasWithSignaturesRequest.repository:type_name -> gitaly.Repository + 61, // 57: gitaly.GetCommitSignaturesRequest.repository:type_name -> gitaly.Repository + 6, // 58: gitaly.GetCommitSignaturesResponse.signer:type_name -> gitaly.GetCommitSignaturesResponse.Signer + 61, // 59: gitaly.GetCommitMessagesRequest.repository:type_name -> gitaly.Repository + 61, // 60: gitaly.CheckObjectsExistRequest.repository:type_name -> gitaly.Repository + 60, // 61: gitaly.CheckObjectsExistResponse.revisions:type_name -> gitaly.CheckObjectsExistResponse.RevisionExistence + 64, // 62: gitaly.ListCommitsByRefNameResponse.CommitForRef.commit:type_name -> gitaly.GitCommit + 64, // 63: gitaly.ListLastCommitsForTreeResponse.CommitForTree.commit:type_name -> gitaly.GitCommit + 7, // 64: gitaly.CommitService.ListCommits:input_type -> gitaly.ListCommitsRequest + 9, // 65: gitaly.CommitService.ListAllCommits:input_type -> gitaly.ListAllCommitsRequest + 13, // 66: gitaly.CommitService.CommitIsAncestor:input_type -> gitaly.CommitIsAncestorRequest + 15, // 67: gitaly.CommitService.TreeEntry:input_type -> gitaly.TreeEntryRequest + 17, // 68: gitaly.CommitService.CountCommits:input_type -> gitaly.CountCommitsRequest + 19, // 69: gitaly.CommitService.CountDivergingCommits:input_type -> gitaly.CountDivergingCommitsRequest + 22, // 70: gitaly.CommitService.GetTreeEntries:input_type -> gitaly.GetTreeEntriesRequest + 25, // 71: gitaly.CommitService.ListFiles:input_type -> gitaly.ListFilesRequest + 27, // 72: gitaly.CommitService.FindCommit:input_type -> gitaly.FindCommitRequest + 11, // 73: gitaly.CommitService.CommitStats:input_type -> gitaly.CommitStatsRequest + 33, // 74: gitaly.CommitService.FindAllCommits:input_type -> gitaly.FindAllCommitsRequest + 35, // 75: gitaly.CommitService.FindCommits:input_type -> gitaly.FindCommitsRequest + 37, // 76: gitaly.CommitService.CommitLanguages:input_type -> gitaly.CommitLanguagesRequest + 39, // 77: gitaly.CommitService.RawBlame:input_type -> gitaly.RawBlameRequest + 42, // 78: gitaly.CommitService.LastCommitForPath:input_type -> gitaly.LastCommitForPathRequest + 44, // 79: gitaly.CommitService.ListLastCommitsForTree:input_type -> gitaly.ListLastCommitsForTreeRequest + 46, // 80: gitaly.CommitService.CommitsByMessage:input_type -> gitaly.CommitsByMessageRequest + 29, // 81: gitaly.CommitService.ListCommitsByOid:input_type -> gitaly.ListCommitsByOidRequest + 31, // 82: gitaly.CommitService.ListCommitsByRefName:input_type -> gitaly.ListCommitsByRefNameRequest + 48, // 83: gitaly.CommitService.FilterShasWithSignatures:input_type -> gitaly.FilterShasWithSignaturesRequest + 50, // 84: gitaly.CommitService.GetCommitSignatures:input_type -> gitaly.GetCommitSignaturesRequest + 52, // 85: gitaly.CommitService.GetCommitMessages:input_type -> gitaly.GetCommitMessagesRequest + 54, // 86: gitaly.CommitService.CheckObjectsExist:input_type -> gitaly.CheckObjectsExistRequest + 8, // 87: gitaly.CommitService.ListCommits:output_type -> gitaly.ListCommitsResponse + 10, // 88: gitaly.CommitService.ListAllCommits:output_type -> gitaly.ListAllCommitsResponse + 14, // 89: gitaly.CommitService.CommitIsAncestor:output_type -> gitaly.CommitIsAncestorResponse + 16, // 90: gitaly.CommitService.TreeEntry:output_type -> gitaly.TreeEntryResponse + 18, // 91: gitaly.CommitService.CountCommits:output_type -> gitaly.CountCommitsResponse + 20, // 92: gitaly.CommitService.CountDivergingCommits:output_type -> gitaly.CountDivergingCommitsResponse + 23, // 93: gitaly.CommitService.GetTreeEntries:output_type -> gitaly.GetTreeEntriesResponse + 26, // 94: gitaly.CommitService.ListFiles:output_type -> gitaly.ListFilesResponse + 28, // 95: gitaly.CommitService.FindCommit:output_type -> gitaly.FindCommitResponse + 12, // 96: gitaly.CommitService.CommitStats:output_type -> gitaly.CommitStatsResponse + 34, // 97: gitaly.CommitService.FindAllCommits:output_type -> gitaly.FindAllCommitsResponse + 36, // 98: gitaly.CommitService.FindCommits:output_type -> gitaly.FindCommitsResponse + 38, // 99: gitaly.CommitService.CommitLanguages:output_type -> gitaly.CommitLanguagesResponse + 40, // 100: gitaly.CommitService.RawBlame:output_type -> gitaly.RawBlameResponse + 43, // 101: gitaly.CommitService.LastCommitForPath:output_type -> gitaly.LastCommitForPathResponse + 45, // 102: gitaly.CommitService.ListLastCommitsForTree:output_type -> gitaly.ListLastCommitsForTreeResponse + 47, // 103: gitaly.CommitService.CommitsByMessage:output_type -> gitaly.CommitsByMessageResponse + 30, // 104: gitaly.CommitService.ListCommitsByOid:output_type -> gitaly.ListCommitsByOidResponse + 32, // 105: gitaly.CommitService.ListCommitsByRefName:output_type -> gitaly.ListCommitsByRefNameResponse + 49, // 106: gitaly.CommitService.FilterShasWithSignatures:output_type -> gitaly.FilterShasWithSignaturesResponse + 51, // 107: gitaly.CommitService.GetCommitSignatures:output_type -> gitaly.GetCommitSignaturesResponse + 53, // 108: gitaly.CommitService.GetCommitMessages:output_type -> gitaly.GetCommitMessagesResponse + 55, // 109: gitaly.CommitService.CheckObjectsExist:output_type -> gitaly.CheckObjectsExistResponse + 87, // [87:110] is the sub-list for method output_type + 64, // [64:87] is the sub-list for method input_type + 64, // [64:64] is the sub-list for extension type_name + 64, // [64:64] is the sub-list for extension extendee + 0, // [0:64] is the sub-list for field type_name } func init() { file_commit_proto_init() } @@ -5707,30 +5583,6 @@ func file_commit_proto_init() { } } file_commit_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtractCommitSignatureRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_commit_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExtractCommitSignatureResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_commit_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCommitSignaturesRequest); i { case 0: return &v.state @@ -5742,7 +5594,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCommitSignaturesResponse); i { case 0: return &v.state @@ -5754,7 +5606,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCommitMessagesRequest); i { case 0: return &v.state @@ -5766,7 +5618,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCommitMessagesResponse); i { case 0: return &v.state @@ -5778,7 +5630,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckObjectsExistRequest); i { case 0: return &v.state @@ -5790,7 +5642,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckObjectsExistResponse); i { case 0: return &v.state @@ -5802,7 +5654,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCommitsByRefNameResponse_CommitForRef); i { case 0: return &v.state @@ -5814,7 +5666,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CommitLanguagesResponse_Language); i { case 0: return &v.state @@ -5826,7 +5678,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RawBlameError_OutOfRangeError); i { case 0: return &v.state @@ -5838,7 +5690,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLastCommitsForTreeResponse_CommitForTree); i { case 0: return &v.state @@ -5850,7 +5702,7 @@ func file_commit_proto_init() { return nil } } - file_commit_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_commit_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckObjectsExistResponse_RevisionExistence); i { case 0: return &v.state @@ -5877,7 +5729,7 @@ func file_commit_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_commit_proto_rawDesc, NumEnums: 7, - NumMessages: 56, + NumMessages: 54, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/go/gitalypb/commit_grpc.pb.go b/proto/go/gitalypb/commit_grpc.pb.go index c7492c6f7..23730a064 100644 --- a/proto/go/gitalypb/commit_grpc.pb.go +++ b/proto/go/gitalypb/commit_grpc.pb.go @@ -43,17 +43,17 @@ type CommitServiceClient interface { // subtrees present under the tree with the option of recursive fetching. GetTreeEntries(ctx context.Context, in *GetTreeEntriesRequest, opts ...grpc.CallOption) (CommitService_GetTreeEntriesClient, error) // ListFiles lists all the files (including files in sub-dirs) present in the working tree - // for a given revision. + // of a given treeish. ListFiles(ctx context.Context, in *ListFilesRequest, opts ...grpc.CallOption) (CommitService_ListFilesClient, error) // FindCommit finds a commit for a given commitish. Returns nil if the commit is not found. FindCommit(ctx context.Context, in *FindCommitRequest, opts ...grpc.CallOption) (*FindCommitResponse, error) // CommitStats provides the stats for a given commitish. CommitStats(ctx context.Context, in *CommitStatsRequest, opts ...grpc.CallOption) (*CommitStatsResponse, error) - // FindAllCommits lists all the commits for the provided revision. + // FindAllCommits lists all the commits which can be traversed from the + // provided commitish. FindAllCommits(ctx context.Context, in *FindAllCommitsRequest, opts ...grpc.CallOption) (CommitService_FindAllCommitsClient, error) // FindCommits lists all the commits which are associated with the provided revision - // and paths. If no revision is provided, the commits on the default branch of the - // repository are listed. + // and paths. FindCommits(ctx context.Context, in *FindCommitsRequest, opts ...grpc.CallOption) (CommitService_FindCommitsClient, error) // CommitLanguages detects the source code languages of the whole tree for a // given commit. Returns an error in case no languages could be detected. @@ -66,25 +66,25 @@ type CommitServiceClient interface { // The following special cases apply and have grown historically: // // - Absolute paths that or relative paths that escape the repository root will cause an error. - // - A nonexistent path inside the repostiory leads to a successful but empty response. + // - A nonexistent path inside the repository leads to a successful but empty response. LastCommitForPath(ctx context.Context, in *LastCommitForPathRequest, opts ...grpc.CallOption) (*LastCommitForPathResponse, error) - // ListLastCommitsForTree ... + // ListLastCommitsForTree lists the last commits for a given tree. ListLastCommitsForTree(ctx context.Context, in *ListLastCommitsForTreeRequest, opts ...grpc.CallOption) (CommitService_ListLastCommitsForTreeClient, error) - // CommitsByMessage ... + // CommitsByMessage list commits which match the provided query. CommitsByMessage(ctx context.Context, in *CommitsByMessageRequest, opts ...grpc.CallOption) (CommitService_CommitsByMessageClient, error) - // ListCommitsByOid ... + // ListCommitsByOid lists the commits for the provided commitish object IDs. ListCommitsByOid(ctx context.Context, in *ListCommitsByOidRequest, opts ...grpc.CallOption) (CommitService_ListCommitsByOidClient, error) - // ListCommitsByRefName ... + // ListCommitsByRefName lists the commits for the provided references. ListCommitsByRefName(ctx context.Context, in *ListCommitsByRefNameRequest, opts ...grpc.CallOption) (CommitService_ListCommitsByRefNameClient, error) - // FilterShasWithSignatures ... + // FilterShasWithSignatures filters out signed commits. FilterShasWithSignatures(ctx context.Context, opts ...grpc.CallOption) (CommitService_FilterShasWithSignaturesClient, error) - // GetCommitSignatures ... + // GetCommitSignatures parses the commit signature information for the provided commitish object IDs. GetCommitSignatures(ctx context.Context, in *GetCommitSignaturesRequest, opts ...grpc.CallOption) (CommitService_GetCommitSignaturesClient, error) - // GetCommitMessages ... + // GetCommitMessages returns the commits messages for the provided commitish object IDs. GetCommitMessages(ctx context.Context, in *GetCommitMessagesRequest, opts ...grpc.CallOption) (CommitService_GetCommitMessagesClient, error) // CheckObjectsExist will check for the existence of revisions against a // repository. It returns two sets of data. An array containing the revisions - // fromm the input that it found on the repository, and an array that contains all + // from the input that it found on the repository, and an array that contains all // revisions from the input it did not find on the repository. CheckObjectsExist(ctx context.Context, opts ...grpc.CallOption) (CommitService_CheckObjectsExistClient, error) } @@ -695,17 +695,17 @@ type CommitServiceServer interface { // subtrees present under the tree with the option of recursive fetching. GetTreeEntries(*GetTreeEntriesRequest, CommitService_GetTreeEntriesServer) error // ListFiles lists all the files (including files in sub-dirs) present in the working tree - // for a given revision. + // of a given treeish. ListFiles(*ListFilesRequest, CommitService_ListFilesServer) error // FindCommit finds a commit for a given commitish. Returns nil if the commit is not found. FindCommit(context.Context, *FindCommitRequest) (*FindCommitResponse, error) // CommitStats provides the stats for a given commitish. CommitStats(context.Context, *CommitStatsRequest) (*CommitStatsResponse, error) - // FindAllCommits lists all the commits for the provided revision. + // FindAllCommits lists all the commits which can be traversed from the + // provided commitish. FindAllCommits(*FindAllCommitsRequest, CommitService_FindAllCommitsServer) error // FindCommits lists all the commits which are associated with the provided revision - // and paths. If no revision is provided, the commits on the default branch of the - // repository are listed. + // and paths. FindCommits(*FindCommitsRequest, CommitService_FindCommitsServer) error // CommitLanguages detects the source code languages of the whole tree for a // given commit. Returns an error in case no languages could be detected. @@ -718,25 +718,25 @@ type CommitServiceServer interface { // The following special cases apply and have grown historically: // // - Absolute paths that or relative paths that escape the repository root will cause an error. - // - A nonexistent path inside the repostiory leads to a successful but empty response. + // - A nonexistent path inside the repository leads to a successful but empty response. LastCommitForPath(context.Context, *LastCommitForPathRequest) (*LastCommitForPathResponse, error) - // ListLastCommitsForTree ... + // ListLastCommitsForTree lists the last commits for a given tree. ListLastCommitsForTree(*ListLastCommitsForTreeRequest, CommitService_ListLastCommitsForTreeServer) error - // CommitsByMessage ... + // CommitsByMessage list commits which match the provided query. CommitsByMessage(*CommitsByMessageRequest, CommitService_CommitsByMessageServer) error - // ListCommitsByOid ... + // ListCommitsByOid lists the commits for the provided commitish object IDs. ListCommitsByOid(*ListCommitsByOidRequest, CommitService_ListCommitsByOidServer) error - // ListCommitsByRefName ... + // ListCommitsByRefName lists the commits for the provided references. ListCommitsByRefName(*ListCommitsByRefNameRequest, CommitService_ListCommitsByRefNameServer) error - // FilterShasWithSignatures ... + // FilterShasWithSignatures filters out signed commits. FilterShasWithSignatures(CommitService_FilterShasWithSignaturesServer) error - // GetCommitSignatures ... + // GetCommitSignatures parses the commit signature information for the provided commitish object IDs. GetCommitSignatures(*GetCommitSignaturesRequest, CommitService_GetCommitSignaturesServer) error - // GetCommitMessages ... + // GetCommitMessages returns the commits messages for the provided commitish object IDs. GetCommitMessages(*GetCommitMessagesRequest, CommitService_GetCommitMessagesServer) error // CheckObjectsExist will check for the existence of revisions against a // repository. It returns two sets of data. An array containing the revisions - // fromm the input that it found on the repository, and an array that contains all + // from the input that it found on the repository, and an array that contains all // revisions from the input it did not find on the repository. CheckObjectsExist(CommitService_CheckObjectsExistServer) error mustEmbedUnimplementedCommitServiceServer() diff --git a/proto/go/gitalypb/diff.pb.go b/proto/go/gitalypb/diff.pb.go index 275cccadf..c34c019eb 100644 --- a/proto/go/gitalypb/diff.pb.go +++ b/proto/go/gitalypb/diff.pb.go @@ -20,7 +20,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// DiffMode ... +// DiffMode determines the type of diff that will be returned. type CommitDiffRequest_DiffMode int32 const ( @@ -182,15 +182,15 @@ func (FindChangedPathsRequest_MergeCommitDiffMode) EnumDescriptor() ([]byte, []i return file_diff_proto_rawDescGZIP(), []int{12, 0} } -// Status ... +// Status is an enum representing the type of change. type ChangedPaths_Status int32 const ( - // ADDED ... + // ADDED indicates a file was added. ChangedPaths_ADDED ChangedPaths_Status = 0 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH - // MODIFIED ... + // MODIFIED indicates a file was modified. ChangedPaths_MODIFIED ChangedPaths_Status = 1 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX - // DELETED ... + // DELETED indicates a file was deleted. ChangedPaths_DELETED ChangedPaths_Status = 2 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX // TYPE_CHANGE ... ChangedPaths_TYPE_CHANGE ChangedPaths_Status = 3 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX @@ -243,41 +243,47 @@ func (ChangedPaths_Status) EnumDescriptor() ([]byte, []int) { return file_diff_proto_rawDescGZIP(), []int{14, 0} } -// CommitDiffRequest ... +// CommitDiffRequest is a request for the CommitDiff RPC. type CommitDiffRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the one from which to get the diff. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit>. LeftCommitId string `protobuf:"bytes,2,opt,name=left_commit_id,json=leftCommitId,proto3" json:"left_commit_id,omitempty"` - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit>. RightCommitId string `protobuf:"bytes,3,opt,name=right_commit_id,json=rightCommitId,proto3" json:"right_commit_id,omitempty"` - // paths ... + // paths is a list of paths that limits the diff to those specific paths. Paths [][]byte `protobuf:"bytes,5,rep,name=paths,proto3" json:"paths,omitempty"` - // collapse_diffs ... + // collapse_diffs causes patches to be emptied after safe_max_files, + // safe_max_files, or safe_max_lines is reached. CollapseDiffs bool `protobuf:"varint,6,opt,name=collapse_diffs,json=collapseDiffs,proto3" json:"collapse_diffs,omitempty"` - // enforce_limits ... + // enforce_limits causes parsing of diffs to stop if max_files, max_lines, + // or max_bytes is reached. EnforceLimits bool `protobuf:"varint,7,opt,name=enforce_limits,json=enforceLimits,proto3" json:"enforce_limits,omitempty"` - // max_files ... - // The following set of limits are only enforced when enforce_limits == true. + // max_files is the maximum number of files in a diff. Once reached, parsing is stopped + // if enforce_limits is true. MaxFiles int32 `protobuf:"varint,8,opt,name=max_files,json=maxFiles,proto3" json:"max_files,omitempty"` - // max_lines ... + // max_lines is the maximum number of lines in a diff. Once reached, parsing is stopped + // if enforce_limits is true. MaxLines int32 `protobuf:"varint,9,opt,name=max_lines,json=maxLines,proto3" json:"max_lines,omitempty"` - // max_bytes ... + // max_bytes is the maximum number of bytes in a diff. Once reached, parsing is stopped + // if enforce_limits is true. MaxBytes int32 `protobuf:"varint,10,opt,name=max_bytes,json=maxBytes,proto3" json:"max_bytes,omitempty"` // max_patch_bytes is the limitation of a single diff patch, // patches surpassing this limit are pruned by default. // If this is 0 you will get back empty patches. MaxPatchBytes int32 `protobuf:"varint,14,opt,name=max_patch_bytes,json=maxPatchBytes,proto3" json:"max_patch_bytes,omitempty"` - // safe_max_files... - // These limits are only enforced if collapse_diffs == true. + // safe_max_files is the maximum number of files in a diff. Once reached, patches are emptied if + // collapse_diffs is true. SafeMaxFiles int32 `protobuf:"varint,11,opt,name=safe_max_files,json=safeMaxFiles,proto3" json:"safe_max_files,omitempty"` - // safe_max_lines ... + // safe_max_lines is the maximum number of lines in a diff. Once reached, patches are emptied if + // collapse_diffs is true. SafeMaxLines int32 `protobuf:"varint,12,opt,name=safe_max_lines,json=safeMaxLines,proto3" json:"safe_max_lines,omitempty"` - // safe_max_bytes ... + // safe_max_bytes is the maximum number of bytes in a diff. Once reached, patches are emptied if + // collapse_diffs is true. SafeMaxBytes int32 `protobuf:"varint,13,opt,name=safe_max_bytes,json=safeMaxBytes,proto3" json:"safe_max_bytes,omitempty"` // diff_mode is the mode used for generating the diff. Please refer to the enum declaration for supported modes. DiffMode CommitDiffRequest_DiffMode `protobuf:"varint,15,opt,name=diff_mode,json=diffMode,proto3,enum=gitaly.CommitDiffRequest_DiffMode" json:"diff_mode,omitempty"` @@ -453,23 +459,23 @@ type CommitDiffResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // from_path ... + // from_path is the path that to_path is getting compared to. FromPath []byte `protobuf:"bytes,1,opt,name=from_path,json=fromPath,proto3" json:"from_path,omitempty"` - // to_path ... + // to_path is the path that from_path is getting compared against. ToPath []byte `protobuf:"bytes,2,opt,name=to_path,json=toPath,proto3" json:"to_path,omitempty"` - // from_id is the blob ID as returned via `git diff --full-index`. + // from_id is the id of the blob that is getting compared against. FromId string `protobuf:"bytes,3,opt,name=from_id,json=fromId,proto3" json:"from_id,omitempty"` - // to_id ... + // to_id is the id of the blob that is getting compared to. ToId string `protobuf:"bytes,4,opt,name=to_id,json=toId,proto3" json:"to_id,omitempty"` - // old_mode ... + // old_mode is the mode of the file getting compared against. OldMode int32 `protobuf:"varint,5,opt,name=old_mode,json=oldMode,proto3" json:"old_mode,omitempty"` - // new_mode ... + // new_mode is the mode of the file getting compared to. NewMode int32 `protobuf:"varint,6,opt,name=new_mode,json=newMode,proto3" json:"new_mode,omitempty"` - // binary ... + // binary indicates whether or not binary data is getting compared. Binary bool `protobuf:"varint,7,opt,name=binary,proto3" json:"binary,omitempty"` - // raw_patch_data ... + // raw_patch_data is the unparsed data of the diff. RawPatchData []byte `protobuf:"bytes,9,opt,name=raw_patch_data,json=rawPatchData,proto3" json:"raw_patch_data,omitempty"` - // end_of_patch ... + // end_of_patch indicates if this message represents the end of the diff. EndOfPatch bool `protobuf:"varint,10,opt,name=end_of_patch,json=endOfPatch,proto3" json:"end_of_patch,omitempty"` // overflow_marker Indicates if the diff file exceeded limitations, in which case // there will be no patch data sent, only information about the patch. @@ -598,19 +604,19 @@ func (x *CommitDiffResponse) GetTooLarge() bool { return false } -// CommitDeltaRequest ... +// CommitDeltaRequest is a request for the CommitDelta RPC. type CommitDeltaRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the one to get the commit deltas from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit>. LeftCommitId string `protobuf:"bytes,2,opt,name=left_commit_id,json=leftCommitId,proto3" json:"left_commit_id,omitempty"` - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit>. RightCommitId string `protobuf:"bytes,3,opt,name=right_commit_id,json=rightCommitId,proto3" json:"right_commit_id,omitempty"` - // paths ... + // paths is a list of paths that limits the diff to those specific paths. Paths [][]byte `protobuf:"bytes,4,rep,name=paths,proto3" json:"paths,omitempty"` } @@ -674,23 +680,24 @@ func (x *CommitDeltaRequest) GetPaths() [][]byte { return nil } -// CommitDelta ... +// CommitDelta represents the metadata of a diff between two commits without the actual +// patch data. type CommitDelta struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // from_path ... + // from_path is the path that to_path is getting compared to. FromPath []byte `protobuf:"bytes,1,opt,name=from_path,json=fromPath,proto3" json:"from_path,omitempty"` - // to_path ... + // to_path is the path that from_path is getting compared against. ToPath []byte `protobuf:"bytes,2,opt,name=to_path,json=toPath,proto3" json:"to_path,omitempty"` - // from_id is the blob ID as returned via `git diff --full-index`. + // from_id is the id of the blob that is getting compared to. FromId string `protobuf:"bytes,3,opt,name=from_id,json=fromId,proto3" json:"from_id,omitempty"` - // to_id ... + // to_id is the id of the blob that is getting compared against. ToId string `protobuf:"bytes,4,opt,name=to_id,json=toId,proto3" json:"to_id,omitempty"` - // old_mode ... + // old_mode is the mode of the blob getting compared against. OldMode int32 `protobuf:"varint,5,opt,name=old_mode,json=oldMode,proto3" json:"old_mode,omitempty"` - // new_mode ... + // new_mode is the mode of the blob getting compared to. NewMode int32 `protobuf:"varint,6,opt,name=new_mode,json=newMode,proto3" json:"new_mode,omitempty"` } @@ -768,13 +775,13 @@ func (x *CommitDelta) GetNewMode() int32 { return 0 } -// CommitDeltaResponse ... +// CommitDeltaResponse is the response from a CommitDelta RPC call. type CommitDeltaResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // deltas ... + // deltas is a list of CommitDeltas Deltas []*CommitDelta `protobuf:"bytes,1,rep,name=deltas,proto3" json:"deltas,omitempty"` } @@ -817,17 +824,17 @@ func (x *CommitDeltaResponse) GetDeltas() []*CommitDelta { return nil } -// RawDiffRequest ... +// RawDiffRequest is a request for the RawDiff RPC. type RawDiffRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the one to get the diff from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit>. LeftCommitId string `protobuf:"bytes,2,opt,name=left_commit_id,json=leftCommitId,proto3" json:"left_commit_id,omitempty"` - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit>. RightCommitId string `protobuf:"bytes,3,opt,name=right_commit_id,json=rightCommitId,proto3" json:"right_commit_id,omitempty"` } @@ -884,13 +891,14 @@ func (x *RawDiffRequest) GetRightCommitId() string { return "" } -// RawDiffResponse ... +// RawDiffResponse is a response for the RawDiff RPC. type RawDiffResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // data ... + // data is a sequence of bytes representing the unmodified diff patch data + // returned from git-diff(1). Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` } @@ -933,17 +941,17 @@ func (x *RawDiffResponse) GetData() []byte { return nil } -// RawPatchRequest ... +// RawPatchRequest is a response for the RawPatch RPC. type RawPatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the one to get the patch from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit>. LeftCommitId string `protobuf:"bytes,2,opt,name=left_commit_id,json=leftCommitId,proto3" json:"left_commit_id,omitempty"` - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit> RightCommitId string `protobuf:"bytes,3,opt,name=right_commit_id,json=rightCommitId,proto3" json:"right_commit_id,omitempty"` } @@ -1000,13 +1008,14 @@ func (x *RawPatchRequest) GetRightCommitId() string { return "" } -// RawPatchResponse ... +// RawPatchResponse is a reponse for the RawPatch RPC. type RawPatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // data ... + // data is a sequence of bytes representing the unmodified diff patch data + // returned from git-format-patch(1). Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` } @@ -1049,17 +1058,17 @@ func (x *RawPatchResponse) GetData() []byte { return nil } -// DiffStatsRequest ... +// DiffStatsRequest is a request for the DiffStats RPC. type DiffStatsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the one to get diff stats from. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // left_commit_id ... + // left_commit_id is the left commit ID in <left commit>..<right commit> LeftCommitId string `protobuf:"bytes,2,opt,name=left_commit_id,json=leftCommitId,proto3" json:"left_commit_id,omitempty"` - // right_commit_id ... + // right_commit_id is the right commit ID in <left commit>..<right commit> RightCommitId string `protobuf:"bytes,3,opt,name=right_commit_id,json=rightCommitId,proto3" json:"right_commit_id,omitempty"` } @@ -1116,19 +1125,19 @@ func (x *DiffStatsRequest) GetRightCommitId() string { return "" } -// DiffStats ... +// DiffStats represents diff statistics for a path. type DiffStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // path ... + // path is the path of the change. Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - // additions ... + // additions is the number of additions in a diff. Additions int32 `protobuf:"varint,2,opt,name=additions,proto3" json:"additions,omitempty"` - // deletions ... + // deletions is the number of deletions in a diff. Deletions int32 `protobuf:"varint,3,opt,name=deletions,proto3" json:"deletions,omitempty"` - // old_path ... + // old_path is the original path in the event of a rename. OldPath []byte `protobuf:"bytes,4,opt,name=old_path,json=oldPath,proto3" json:"old_path,omitempty"` } @@ -1192,13 +1201,13 @@ func (x *DiffStats) GetOldPath() []byte { return nil } -// DiffStatsResponse ... +// DiffStatsResponse is a response for the DiffStats RPC. type DiffStatsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // stats ... + // stats is a list of DiffStats. Stats []*DiffStats `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"` } @@ -1377,15 +1386,16 @@ func (x *FindChangedPathsResponse) GetPaths() []*ChangedPaths { return nil } -// ChangedPaths includes the path of the file, and the status of the change. +// ChangedPaths contains information about a changed file. It includes the path +// of the file, and the status of the change. type ChangedPaths struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // path ... + // path is the path of the change in question. Path []byte `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - // status ... + // status is the type of change. Status ChangedPaths_Status `protobuf:"varint,2,opt,name=status,proto3,enum=gitaly.ChangedPaths_Status" json:"status,omitempty"` // old_mode is the mode of the changed path previous to the change. May be one of the following values: // diff --git a/proto/go/gitalypb/diff_grpc.pb.go b/proto/go/gitalypb/diff_grpc.pb.go index 3e53571a6..a16c0e63e 100644 --- a/proto/go/gitalypb/diff_grpc.pb.go +++ b/proto/go/gitalypb/diff_grpc.pb.go @@ -22,15 +22,23 @@ const _ = grpc.SupportPackageIsVersion7 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type DiffServiceClient interface { - // CommitDiff returns stream of CommitDiffResponse with patches chunked over messages. + // CommitDiff returns a diff between two different commits. The patch data is + // chunked across messages and get streamed back to the client. CommitDiff(ctx context.Context, in *CommitDiffRequest, opts ...grpc.CallOption) (DiffService_CommitDiffClient, error) - // CommitDelta returns a stream so we can divide the response in chunks of deltas. + // CommitDelta returns the deltas between two different commits. A delta + // includes everthing that changed about a set of paths except for the actual + // diff. CommitDelta(ctx context.Context, in *CommitDeltaRequest, opts ...grpc.CallOption) (DiffService_CommitDeltaClient, error) - // RawDiff ... + // RawDiff returns a diff between two commits. The output is the unmodified + // output from git-diff(1). This is not to be confused with git-diff(1)'s + // --raw mode. RawDiff(ctx context.Context, in *RawDiffRequest, opts ...grpc.CallOption) (DiffService_RawDiffClient, error) - // RawPatch ... + // RawPatch returns a diff between two commits in a formatted patch.The output + // is the unmodified output from git-format-patch(1). This is not to be confused with + // git-diff(1)'s --raw mode. RawPatch(ctx context.Context, in *RawPatchRequest, opts ...grpc.CallOption) (DiffService_RawPatchClient, error) - // DiffStats ... + // DiffStats returns the diff stats between two commits such as number of lines + // changed, etc. DiffStats(ctx context.Context, in *DiffStatsRequest, opts ...grpc.CallOption) (DiffService_DiffStatsClient, error) // FindChangedPaths returns a list of files changed along with the status of each file FindChangedPaths(ctx context.Context, in *FindChangedPathsRequest, opts ...grpc.CallOption) (DiffService_FindChangedPathsClient, error) @@ -254,15 +262,23 @@ func (c *diffServiceClient) GetPatchID(ctx context.Context, in *GetPatchIDReques // All implementations must embed UnimplementedDiffServiceServer // for forward compatibility type DiffServiceServer interface { - // CommitDiff returns stream of CommitDiffResponse with patches chunked over messages. + // CommitDiff returns a diff between two different commits. The patch data is + // chunked across messages and get streamed back to the client. CommitDiff(*CommitDiffRequest, DiffService_CommitDiffServer) error - // CommitDelta returns a stream so we can divide the response in chunks of deltas. + // CommitDelta returns the deltas between two different commits. A delta + // includes everthing that changed about a set of paths except for the actual + // diff. CommitDelta(*CommitDeltaRequest, DiffService_CommitDeltaServer) error - // RawDiff ... + // RawDiff returns a diff between two commits. The output is the unmodified + // output from git-diff(1). This is not to be confused with git-diff(1)'s + // --raw mode. RawDiff(*RawDiffRequest, DiffService_RawDiffServer) error - // RawPatch ... + // RawPatch returns a diff between two commits in a formatted patch.The output + // is the unmodified output from git-format-patch(1). This is not to be confused with + // git-diff(1)'s --raw mode. RawPatch(*RawPatchRequest, DiffService_RawPatchServer) error - // DiffStats ... + // DiffStats returns the diff stats between two commits such as number of lines + // changed, etc. DiffStats(*DiffStatsRequest, DiffService_DiffStatsServer) error // FindChangedPaths returns a list of files changed along with the status of each file FindChangedPaths(*FindChangedPathsRequest, DiffService_FindChangedPathsServer) error diff --git a/proto/go/gitalypb/log.pb.go b/proto/go/gitalypb/log.pb.go index eb49c09f9..ad27bf6a0 100644 --- a/proto/go/gitalypb/log.pb.go +++ b/proto/go/gitalypb/log.pb.go @@ -20,10 +20,10 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// LogEntry is a single entry in a repository's write-ahead log. +// LogEntry is a single entry in a partition's write-ahead log. // // Schema for : -// - `repository/<repository_id>/log/entry/<log_index>`. +// - `partition/<partition_id>/log/entry/<log_index>`. type LogEntry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -122,22 +122,22 @@ func (x *LogEntry) GetRepositoryDeletion() *LogEntry_RepositoryDeletion { return nil } -// LogIndex serializes a log index. It's used for storing a repository's -// applied log index in the database. +// LSN serializes a log sequence number. It's used for storing a partition's +// applied LSN in the database. // // Schema for: -// - `repository/<repository_id>/log/index/applied` -type LogIndex struct { +// - `partition/<partition_id>/applied_lsn` +type LSN struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // log_index is an index pointing to a position in the log. - LogIndex uint64 `protobuf:"varint,1,opt,name=log_index,json=logIndex,proto3" json:"log_index,omitempty"` + // value is an LSN pointing to a position in the log. + Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` } -func (x *LogIndex) Reset() { - *x = LogIndex{} +func (x *LSN) Reset() { + *x = LSN{} if protoimpl.UnsafeEnabled { mi := &file_log_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -145,13 +145,13 @@ func (x *LogIndex) Reset() { } } -func (x *LogIndex) String() string { +func (x *LSN) String() string { return protoimpl.X.MessageStringOf(x) } -func (*LogIndex) ProtoMessage() {} +func (*LSN) ProtoMessage() {} -func (x *LogIndex) ProtoReflect() protoreflect.Message { +func (x *LSN) ProtoReflect() protoreflect.Message { mi := &file_log_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -163,14 +163,14 @@ func (x *LogIndex) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use LogIndex.ProtoReflect.Descriptor instead. -func (*LogIndex) Descriptor() ([]byte, []int) { +// Deprecated: Use LSN.ProtoReflect.Descriptor instead. +func (*LSN) Descriptor() ([]byte, []int) { return file_log_proto_rawDescGZIP(), []int{1} } -func (x *LogIndex) GetLogIndex() uint64 { +func (x *LSN) GetValue() uint64 { if x != nil { - return x.LogIndex + return x.Value } return 0 } @@ -421,13 +421,12 @@ var file_log_proto_rawDesc = []byte{ 0x74, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x54, 0x61, 0x72, 0x1a, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x27, 0x0a, 0x08, 0x4c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6c, - 0x6f, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, - 0x6c, 0x6f, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, - 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, - 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x36, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x1b, 0x0a, 0x03, 0x4c, 0x53, 0x4e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x34, 0x5a, 0x32, + 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, + 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x36, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -445,7 +444,7 @@ func file_log_proto_rawDescGZIP() []byte { var file_log_proto_msgTypes = make([]protoimpl.MessageInfo, 6) var file_log_proto_goTypes = []interface{}{ (*LogEntry)(nil), // 0: gitaly.LogEntry - (*LogIndex)(nil), // 1: gitaly.LogIndex + (*LSN)(nil), // 1: gitaly.LSN (*LogEntry_ReferenceUpdate)(nil), // 2: gitaly.LogEntry.ReferenceUpdate (*LogEntry_DefaultBranchUpdate)(nil), // 3: gitaly.LogEntry.DefaultBranchUpdate (*LogEntry_CustomHooksUpdate)(nil), // 4: gitaly.LogEntry.CustomHooksUpdate @@ -482,7 +481,7 @@ func file_log_proto_init() { } } file_log_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LogIndex); i { + switch v := v.(*LSN); i { case 0: return &v.state case 1: diff --git a/proto/go/gitalypb/operations.pb.go b/proto/go/gitalypb/operations.pb.go index b11521a5d..333c8b088 100644 --- a/proto/go/gitalypb/operations.pb.go +++ b/proto/go/gitalypb/operations.pb.go @@ -76,7 +76,7 @@ func (UserRevertResponse_CreateTreeError) EnumDescriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{27, 0} } -// ActionType ... +// ActionType is the type of action to perform. type UserCommitFilesActionHeader_ActionType int32 const ( @@ -141,19 +141,21 @@ func (UserCommitFilesActionHeader_ActionType) EnumDescriptor() ([]byte, []int) { return file_operations_proto_rawDescGZIP(), []int{28, 0} } -// UserCreateBranchRequest ... +// UserCreateBranchRequest is a request for the UserCreateBranch RPC. type UserCreateBranchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository in which the branch should be created. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // branch_name ... + // branch_name is the name of the branch to create. BranchName []byte `protobuf:"bytes,2,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` - // user ... + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` - // start_point ... + // start_point is the Git revision to start the branch at. See the gitrevisions(1) + // man pages for supported syntax. StartPoint []byte `protobuf:"bytes,4,opt,name=start_point,json=startPoint,proto3" json:"start_point,omitempty"` } @@ -217,13 +219,13 @@ func (x *UserCreateBranchRequest) GetStartPoint() []byte { return nil } -// UserCreateBranchResponse ... +// UserCreateBranchResponse is a response for the UserCreateBranch RPC. type UserCreateBranchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // branch ... + // branch is the branch that was created. Branch *Branch `protobuf:"bytes,1,opt,name=branch,proto3" json:"branch,omitempty"` } @@ -337,21 +339,22 @@ type UserCreateBranchError_CustomHook struct { func (*UserCreateBranchError_CustomHook) isUserCreateBranchError_Error() {} -// UserUpdateBranchRequest ... +// UserUpdateBranchRequest is a request for the UserUpdateBranch RPC. type UserUpdateBranchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository to update the branch in. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // branch_name ... + // branch_name is the name of the branch to update. BranchName []byte `protobuf:"bytes,2,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` - // user ... + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` - // newrev ... + // newrev is the Git revision which the branch will point to. Newrev []byte `protobuf:"bytes,4,opt,name=newrev,proto3" json:"newrev,omitempty"` - // oldrev ... + // oldrev is the Git revision which the branch currently points to. Oldrev []byte `protobuf:"bytes,5,opt,name=oldrev,proto3" json:"oldrev,omitempty"` } @@ -422,13 +425,13 @@ func (x *UserUpdateBranchRequest) GetOldrev() []byte { return nil } -// UserUpdateBranchResponse ... +// UserUpdateBranchResponse is a response for the UserUpdateBranch RPC. type UserUpdateBranchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // pre_receive_error ... + // pre_receive_error indicates an error that occurred while executing custom hooks. PreReceiveError string `protobuf:"bytes,1,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` } @@ -483,9 +486,8 @@ type UserDeleteBranchRequest struct { // name only, e.g. in case you want to delete `refs/heads/main` the request needs to only contain // `main` as the branch name. BranchName []byte `protobuf:"bytes,2,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"` - // user is the user on whose behalf we should delete the branch. This information is used to - // perform access checks against the Rails `/internal/allowed` API. This user is also exposed to - // any custom hooks executed as part of this RPC call. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been @@ -676,7 +678,7 @@ type isUserDeleteBranchError_Error interface { } type UserDeleteBranchError_AccessCheck struct { - // access_checkError is set if the RPC failed because `/internal/allowed` failed. + // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,1,opt,name=access_check,json=accessCheck,proto3,oneof"` } @@ -698,17 +700,18 @@ func (*UserDeleteBranchError_ReferenceUpdate) isUserDeleteBranchError_Error() {} func (*UserDeleteBranchError_CustomHook) isUserDeleteBranchError_Error() {} -// UserDeleteTagRequest ... +// UserDeleteTagRequest is a request for the UserDeleteTag RPC. type UserDeleteTagRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // repository ... + // repository is the repository from which the tag should be deleted. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // tag_name ... + // tag_name is the name of the tag to delete. TagName []byte `protobuf:"bytes,2,opt,name=tag_name,json=tagName,proto3" json:"tag_name,omitempty"` - // user ... + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` // expected_old_oid is the object ID which tag is expected to point to. // This is used as a safety guard to avoid races when tag has been @@ -780,13 +783,13 @@ func (x *UserDeleteTagRequest) GetExpectedOldOid() string { return "" } -// UserDeleteTagResponse ... +// UserDeleteTagResponse is a response for the UserDeleteTag RPC. type UserDeleteTagResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // pre_receive_error ... + // pre_receive_error indicates an error that occurred while executing custom hooks. PreReceiveError string `protobuf:"bytes,1,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` } @@ -840,8 +843,8 @@ type UserCreateTagRequest struct { // tag_name is the name of the tag that shall be created. Note that this should be set to the name // only: if you want to create a tag `refs/heads/v1.0`, you need to pass `v1.0` as TagName. TagName []byte `protobuf:"bytes,2,opt,name=tag_name,json=tagName,proto3" json:"tag_name,omitempty"` - // user is the user as which the tag shall be created. This user is used to perform access checks - // against Rails' `/internal/allowed` endpoint. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` // target_revision is the revision that the newly created tag should be pointing to. Note that if // the revision points to a tag, that tag will be peeled to the commit it is pointing to. If the @@ -1066,7 +1069,7 @@ type isUserCreateTagError_Error interface { } type UserCreateTagError_AccessCheck struct { - // access_checkError is set if the RPC failed because `/internal/allowed` failed. + // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,1,opt,name=access_check,json=accessCheck,proto3,oneof"` } @@ -1095,9 +1098,9 @@ func (*UserCreateTagError_CustomHook) isUserCreateTagError_Error() {} func (*UserCreateTagError_ReferenceExists) isUserCreateTagError_Error() {} -// UserMergeBranchRequest ... -// The first set of parameters must only be set in the first message to declare -// parameters for the merge. +// UserMergeBranchRequest is a request for the UserMergeBranch RPC. +// All mandatory parameters except for `apply` should be set in the first +// message. type UserMergeBranchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1105,8 +1108,8 @@ type UserMergeBranchRequest struct { // repository is the repository to compute the merge for. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is the user to compute the merge as. Its name and mail address are - // used as author and committer of the merge. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // commit_id is the object ID (hash) of the object that shall be merged into // the target branch. @@ -1128,9 +1131,8 @@ type UserMergeBranchRequest struct { // zero object ID in case the branch should be created. Otherwise, this RPC // will return an error. ExpectedOldOid string `protobuf:"bytes,8,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"` - // apply must only be set in the second message. Only if this second message - // is sent and if apply is set to true will the branch be updated to point to - // the merge commit. + // apply is used in the second message. Setting it to true will proceed with + // the merge. Setting it to false will abort the merge. Apply bool `protobuf:"varint,6,opt,name=apply,proto3" json:"apply,omitempty"` } @@ -1222,18 +1224,18 @@ func (x *UserMergeBranchRequest) GetApply() bool { return false } -// UserMergeBranchResponse ... +// UserMergeBranchResponse is a response for the UserMergeBranch RPC. type UserMergeBranchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // commit_id is the merge commit the branch will be updated to. - // The caller can still abort the merge. - // First message. + // commit_id is the merge commit the branch will be updated to. This is sent + // as the response to the first request. CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` - // branch_update if set, is the merge has been applied to the branch. - // Second message + // branch_update contains the commit ID of the merge commit if the merge has + // been applied to the branch. This is sent as the response to the second + // request. BranchUpdate *OperationBranchUpdate `protobuf:"bytes,3,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"` } @@ -1371,7 +1373,7 @@ type isUserMergeBranchError_Error interface { } type UserMergeBranchError_AccessCheck struct { - // access_checkError is set if the RPC failed because `/internal/allowed` failed. + // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,1,opt,name=access_check,json=accessCheck,proto3,oneof"` } @@ -1400,7 +1402,7 @@ func (*UserMergeBranchError_CustomHook) isUserMergeBranchError_Error() {} func (*UserMergeBranchError_MergeConflict) isUserMergeBranchError_Error() {} -// UserMergeToRefRequest ... +// UserMergeToRefRequest is a request for the UserMergeToRef RPC. type UserMergeToRefRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1408,13 +1410,16 @@ type UserMergeToRefRequest struct { // repository is the repository in which the merge shall be computed. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is the user as which the merge commit shall be created. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // source_sha is the object ID of the second parent of the computed merge. SourceSha string `protobuf:"bytes,3,opt,name=source_sha,json=sourceSha,proto3" json:"source_sha,omitempty"` // branch contains the name of the branch which should be used as the first // parent of the computed merge. It is deprecated in favor of // `first_parent_ref` and will be ignored in case it is set. + // + // Deprecated: Marked as deprecated in operations.proto. Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` // target_ref contains the fully qualified reference which should be updated // with the computed merge commit. @@ -1501,6 +1506,7 @@ func (x *UserMergeToRefRequest) GetSourceSha() string { return "" } +// Deprecated: Marked as deprecated in operations.proto. func (x *UserMergeToRefRequest) GetBranch() []byte { if x != nil { return x.Branch @@ -1551,7 +1557,7 @@ func (x *UserMergeToRefRequest) GetExpectedOldOid() string { return "" } -// UserMergeToRefResponse ... +// UserMergeToRefResponse is a response for the UserMergeToRef RPC. type UserMergeToRefResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1608,7 +1614,8 @@ type UserRebaseToRefRequest struct { // repository is the repository in which the rebase shall be computed. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is the user as which the rebased commits shall be created. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // source_sha is the object ID of the commit to be rebased. SourceSha string `protobuf:"bytes,3,opt,name=source_sha,json=sourceSha,proto3" json:"source_sha,omitempty"` @@ -1831,7 +1838,7 @@ func (x *OperationBranchUpdate) GetBranchCreated() bool { return false } -// UserFFBranchRequest contains parameters for the UserFFBranch RPC. +// UserFFBranchRequest is a request for the UserFFBranch RPC. type UserFFBranchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1839,12 +1846,12 @@ type UserFFBranchRequest struct { // repository is the repository for which to perform the fast-forward merge. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is the user which to perform the fast-forward merge as. This is used - // for authorization checks. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` - // commit_id is the commit ID to update the branch to. + // commit_id is the commit ID to fast-forward the branch to. CommitId string `protobuf:"bytes,3,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"` - // branch is the name of the branch that shall be update. This must be the + // branch is the name of the branch to fast-forward. This must be the // branch name only and not a fully qualified reference, e.g. "master" // instead of "refs/heads/master". Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"` @@ -1926,15 +1933,16 @@ func (x *UserFFBranchRequest) GetExpectedOldOid() string { return "" } -// UserFFBranchResponse ... +// UserFFBranchResponse is a response for the UserFFBranch RPC. type UserFFBranchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // branch_update ... + // branch_update contains details of the fast-forwarded branch. BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"` - // pre_receive_error ... + // pre_receive_error is set in the case of an `Internal` error and contains + // details of the failed custom hook. PreReceiveError string `protobuf:"bytes,2,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` } @@ -1984,7 +1992,7 @@ func (x *UserFFBranchResponse) GetPreReceiveError() string { return "" } -// UserCherryPickRequest ... +// UserCherryPickRequest is a request for the UserCherryPick RPC. type UserCherryPickRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1993,8 +2001,8 @@ type UserCherryPickRequest struct { // repository is the repository into which the cherry-pick shall be // performed. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is the user to perform the cherry-pick as. This is used for - // authorization checks and as the committer of the computed cherry-pick. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // commit is the commit to cherry-pick onto the given branch. Commit *GitCommit `protobuf:"bytes,3,opt,name=commit,proto3" json:"commit,omitempty"` @@ -2129,7 +2137,7 @@ func (x *UserCherryPickRequest) GetExpectedOldOid() string { return "" } -// UserCherryPickResponse ... +// UserCherryPickResponse is a response for the UserCherryPick RPC. type UserCherryPickResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2286,8 +2294,7 @@ type UserCherryPickError_ChangesAlreadyApplied struct { } type UserCherryPickError_AccessCheck struct { - // access_check is returned in case GitLab's `/internal/allowed` endpoint rejected - // the change. + // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,4,opt,name=access_check,json=accessCheck,proto3,oneof"` } @@ -2299,7 +2306,7 @@ func (*UserCherryPickError_ChangesAlreadyApplied) isUserCherryPickError_Error() func (*UserCherryPickError_AccessCheck) isUserCherryPickError_Error() {} -// UserRevertRequest ... +// UserRevertRequest is a request for the UserRevert RPC. type UserRevertRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2307,10 +2314,10 @@ type UserRevertRequest struct { // repository is the repository in which the revert shall be applied. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is the user to perform the revert as. This is used both for - // authorization and as author/committer for the revert commit. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` - // commit iis the commit to revert. + // commit is the commit to revert. Only the `id` field is required. Commit *GitCommit `protobuf:"bytes,3,opt,name=commit,proto3" json:"commit,omitempty"` // branch_name is the name of the branch onto which the reverted commit shall // be committed. @@ -2443,7 +2450,7 @@ func (x *UserRevertRequest) GetExpectedOldOid() string { return "" } -// UserRevertResponse ... +// UserRevertResponse is a response for the UserRevert RPC. type UserRevertResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2733,7 +2740,8 @@ type UserCommitFilesRequestHeader struct { // repository is the target repository where to apply the commit. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is the user peforming the call. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // branch_name is the name of the branch to point to the new commit. If start_sha and start_branch_name // are not defined, the commit of branch_name is used as the parent commit. @@ -3122,7 +3130,7 @@ type isUserCommitFilesError_Error interface { } type UserCommitFilesError_AccessCheck struct { - // access_checkError is set if the RPC failed because `/internal/allowed` failed. + // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,1,opt,name=access_check,json=accessCheck,proto3,oneof"` } @@ -3144,7 +3152,7 @@ func (*UserCommitFilesError_IndexUpdate) isUserCommitFilesError_Error() {} func (*UserCommitFilesError_CustomHook) isUserCommitFilesError_Error() {} -// UserRebaseConfirmableRequest ... +// UserRebaseConfirmableRequest is a request for the UserRebaseConfirmable RPC. type UserRebaseConfirmableRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3232,7 +3240,7 @@ func (*UserRebaseConfirmableRequest_Header_) isUserRebaseConfirmableRequest_User func (*UserRebaseConfirmableRequest_Apply) isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload() { } -// UserRebaseConfirmableResponse ... +// UserRebaseConfirmableResponse is a response for the UserRebaseConfirmable RPC. type UserRebaseConfirmableResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3243,11 +3251,6 @@ type UserRebaseConfirmableResponse struct { // *UserRebaseConfirmableResponse_RebaseSha // *UserRebaseConfirmableResponse_RebaseApplied UserRebaseConfirmableResponsePayload isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload `protobuf_oneof:"user_rebase_confirmable_response_payload"` - // pre_receive_error contains an error message if the rebase failed because - // of an error raised by hooks. - PreReceiveError string `protobuf:"bytes,3,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"` - // git_error contains an error message if git operations have failed. - GitError string `protobuf:"bytes,4,opt,name=git_error,json=gitError,proto3" json:"git_error,omitempty"` } func (x *UserRebaseConfirmableResponse) Reset() { @@ -3303,20 +3306,6 @@ func (x *UserRebaseConfirmableResponse) GetRebaseApplied() bool { return false } -func (x *UserRebaseConfirmableResponse) GetPreReceiveError() string { - if x != nil { - return x.PreReceiveError - } - return "" -} - -func (x *UserRebaseConfirmableResponse) GetGitError() string { - if x != nil { - return x.GitError - } - return "" -} - type isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload interface { isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload() } @@ -3339,7 +3328,7 @@ func (*UserRebaseConfirmableResponse_RebaseSha) isUserRebaseConfirmableResponse_ func (*UserRebaseConfirmableResponse_RebaseApplied) isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload() { } -// UserSquashRequest ... +// UserSquashRequest is a request for the UserSquash RPC. type UserSquashRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3348,7 +3337,8 @@ type UserSquashRequest struct { // repository is the repository into which the squashed commit shall be // written. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is used for authorization checks. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // start_sha is the object ID of the start commit of the range which shall be // squashed. Must be an ancestor of end_sha. @@ -3446,7 +3436,7 @@ func (x *UserSquashRequest) GetTimestamp() *timestamppb.Timestamp { return nil } -// UserSquashResponse ... +// UserSquashResponse is a response for the UserSquash RPC. type UserSquashResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3495,7 +3485,7 @@ func (x *UserSquashResponse) GetSquashSha() string { return "" } -// UserRebaseConfirmableError ... +// UserRebaseConfirmableError is a structured error for the UserRebaseConfirmable RPC. type UserRebaseConfirmableError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3573,8 +3563,7 @@ type UserRebaseConfirmableError_RebaseConflict struct { } type UserRebaseConfirmableError_AccessCheck struct { - // access_checkError is returned in case GitLab's `/internal/allowed` endpoint rejected - // the change. + // access_check is set if the RPC failed due to an external access check. AccessCheck *AccessCheckError `protobuf:"bytes,2,opt,name=access_check,json=accessCheck,proto3,oneof"` } @@ -3669,7 +3658,7 @@ func (*UserSquashError_ResolveRevision) isUserSquashError_Error() {} func (*UserSquashError_RebaseConflict) isUserSquashError_Error() {} -// UserApplyPatchRequest ... +// UserApplyPatchRequest is a request for the UserApplyPatch RPC. type UserApplyPatchRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3754,7 +3743,7 @@ func (*UserApplyPatchRequest_Header_) isUserApplyPatchRequest_UserApplyPatchRequ func (*UserApplyPatchRequest_Patches) isUserApplyPatchRequest_UserApplyPatchRequestPayload() {} -// UserApplyPatchResponse ... +// UserApplyPatchResponse is a response for the UserApplyPatch RPC. type UserApplyPatchResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3803,7 +3792,7 @@ func (x *UserApplyPatchResponse) GetBranchUpdate() *OperationBranchUpdate { return nil } -// UserUpdateSubmoduleRequest ... +// UserUpdateSubmoduleRequest is a request for the UserUpdateSubmodule RPC. type UserUpdateSubmoduleRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3811,8 +3800,8 @@ type UserUpdateSubmoduleRequest struct { // repository is the repository in which the submodule shall be updated. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is used both for authorization and as author/committer of the - // resulting commit. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // commit_sha is the object ID the submodule shall be updated to. CommitSha string `protobuf:"bytes,3,opt,name=commit_sha,json=commitSha,proto3" json:"commit_sha,omitempty"` @@ -3926,7 +3915,7 @@ func (x *UserUpdateSubmoduleRequest) GetExpectedOldOid() string { return "" } -// UserUpdateSubmoduleResponse ... +// UserUpdateSubmoduleResponse is a response for the UserUpdateSubmodule RPC. type UserUpdateSubmoduleResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -4004,8 +3993,8 @@ type UserRebaseConfirmableRequest_Header struct { // repository is the repository in which the rebase will be computed and // applied. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is the user to compute the rebase as. It will be used as - // "committer" of rebased commits. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // rebase_id does nothing anymore. // @@ -4135,7 +4124,8 @@ type UserApplyPatchRequest_Header struct { // repository is the repository to which the patches shall be applied to. Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` - // user is used for authentication. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User *User `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` // target_branch is the branch onto which the patches shall be applied. TargetBranch []byte `protobuf:"bytes,3,opt,name=target_branch,json=targetBranch,proto3" json:"target_branch,omitempty"` @@ -4406,7 +4396,7 @@ var file_operations_proto_rawDesc = []byte{ 0x6c, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, - 0x9e, 0x03, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, + 0xa2, 0x03, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, @@ -4415,557 +4405,556 @@ var file_operations_proto_rawDesc = []byte{ 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x53, 0x68, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0e, 0x66, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x12, - 0x2b, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, - 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, 0x61, 0x6c, - 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x38, 0x0a, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, - 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, - 0x22, 0x4e, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, - 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x52, 0x11, 0x70, - 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x22, 0xc0, 0x02, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, - 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x0e, 0x66, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x66, 0x12, - 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, - 0x4f, 0x69, 0x64, 0x22, 0x36, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, + 0x65, 0x53, 0x68, 0x61, 0x12, 0x1a, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0c, 0x42, 0x02, 0x18, 0x01, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x66, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x66, 0x12, 0x2b, 0x0a, 0x0f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x6e, + 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x73, + 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, + 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, + 0x64, 0x4f, 0x69, 0x64, 0x22, 0x4e, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x22, 0x7e, 0x0a, 0x15, 0x4f, - 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, - 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x6f, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x63, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, 0xd0, 0x01, 0x0a, 0x13, - 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, - 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, - 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0x86, - 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, - 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, - 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc1, 0x03, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, - 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, + 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x4a, 0x04, 0x08, 0x02, 0x10, + 0x03, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc0, 0x02, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, + 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x53, 0x68, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x72, + 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x65, 0x66, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x66, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x66, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, + 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0x36, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, 0x22, + 0x7e, 0x0a, 0x15, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x72, 0x65, 0x70, + 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x22, + 0xd0, 0x01, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, + 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, + 0x69, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc1, 0x03, 0x0a, 0x15, + 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, + 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, + 0xc0, 0x01, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, + 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x04, + 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, + 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, + 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, + 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x16, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x22, 0xdd, 0x02, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, + 0x79, 0x50, 0x69, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x14, 0x63, 0x68, + 0x65, 0x72, 0x72, 0x79, 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x12, 0x63, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, + 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x50, 0x0a, 0x16, 0x74, 0x61, + 0x72, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x64, 0x69, 0x76, 0x65, + 0x72, 0x67, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x4e, 0x6f, 0x74, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x17, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x41, 0x6c, + 0x72, 0x65, 0x61, 0x64, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x48, 0x00, 0x52, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x41, 0x6c, 0x72, 0x65, + 0x61, 0x64, 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0xbd, 0x03, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, + 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, + 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x69, + 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x38, + 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, + 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, + 0x69, 0x64, 0x22, 0xea, 0x02, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, + 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x72, 0x65, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x11, + 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, + 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x5f, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x52, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, + 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x34, 0x0a, 0x0f, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x08, 0x0a, 0x04, + 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, + 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x10, 0x02, 0x22, + 0xf5, 0x02, 0x0a, 0x1b, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, + 0x46, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x2e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, + 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x72, 0x65, + 0x76, 0x69, 0x6f, 0x75, 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x61, 0x73, + 0x65, 0x36, 0x34, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x12, 0x29, 0x0a, 0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x78, 0x65, 0x63, + 0x75, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, + 0x6e, 0x66, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0c, 0x69, 0x6e, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x22, 0x55, 0x0a, 0x0a, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, + 0x0a, 0x06, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, + 0x45, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x49, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, + 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x03, + 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, + 0x43, 0x48, 0x4d, 0x4f, 0x44, 0x10, 0x05, 0x22, 0x96, 0x01, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, + 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x3d, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x12, 0x1a, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0c, 0x48, 0x00, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x22, 0x0a, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x22, 0xa2, 0x04, 0x0a, 0x1c, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x29, 0x0a, - 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, + 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, + 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, + 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x45, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0f, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x17, - 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, - 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0xc0, 0x01, 0x0a, 0x16, - 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, - 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, - 0x10, 0x06, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x22, 0xdd, - 0x02, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, - 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x14, 0x63, 0x68, 0x65, 0x72, 0x72, 0x79, - 0x5f, 0x70, 0x69, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, - 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x12, 0x63, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x43, 0x6f, - 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x50, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x64, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x4e, 0x6f, 0x74, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x44, 0x69, 0x76, 0x65, 0x72, 0x67, 0x65, 0x64, 0x12, 0x5c, 0x0a, 0x17, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x5f, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x5f, 0x61, 0x70, 0x70, 0x6c, - 0x69, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, - 0x79, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, - 0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x41, - 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xbd, - 0x03, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, - 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, - 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x12, 0x29, 0x0a, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x69, 0x74, 0x43, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x6d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x10, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, - 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, - 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0xea, - 0x02, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x12, 0x5f, 0x0a, 0x16, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x52, 0x13, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x72, 0x65, 0x65, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x34, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x72, 0x65, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, 0x10, 0x01, 0x12, 0x0c, 0x0a, - 0x08, 0x43, 0x4f, 0x4e, 0x46, 0x4c, 0x49, 0x43, 0x54, 0x10, 0x02, 0x22, 0xf5, 0x02, 0x0a, 0x1b, - 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, - 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, - 0x73, 0x50, 0x61, 0x74, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x36, 0x34, 0x5f, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x62, - 0x61, 0x73, 0x65, 0x36, 0x34, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x10, - 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6d, 0x6f, 0x64, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x66, 0x65, 0x72, - 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x69, 0x6e, 0x66, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x55, 0x0a, 0x0a, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, - 0x5f, 0x44, 0x49, 0x52, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, - 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x48, 0x4d, 0x4f, - 0x44, 0x10, 0x05, 0x22, 0x96, 0x01, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, - 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x07, - 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, - 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x42, 0x22, 0x0a, 0x20, 0x75, 0x73, 0x65, 0x72, - 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x61, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xa2, 0x04, 0x0a, - 0x1c, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, + 0x6f, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x68, + 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x68, + 0x61, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, + 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, + 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0xb6, 0x01, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x3e, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x12, 0x37, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, + 0x00, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x0a, 0x21, 0x75, 0x73, 0x65, + 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xaa, + 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, + 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd3, 0x01, 0x0a, 0x14, + 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x12, 0x37, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, + 0x0b, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0b, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, + 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, + 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x22, 0xb1, 0x04, 0x0a, 0x1c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, + 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x05, 0x61, 0x70, 0x70, + 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, + 0x79, 0x1a, 0x86, 0x03, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0a, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x09, 0x72, 0x65, 0x62, 0x61, + 0x73, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x08, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x73, 0x68, 0x61, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x53, 0x68, 0x61, + 0x12, 0x3f, 0x0a, 0x11, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x62, 0x72, 0x61, 0x6e, + 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x69, 0x74, 0x5f, 0x70, 0x75, + 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0e, 0x67, 0x69, 0x74, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x29, 0x0a, 0x27, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, + 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xbf, 0x01, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x72, 0x65, 0x62, 0x61, 0x73, + 0x65, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x72, + 0x65, 0x62, 0x61, 0x73, 0x65, 0x53, 0x68, 0x61, 0x12, 0x27, 0x0a, 0x0e, 0x72, 0x65, 0x62, 0x61, + 0x73, 0x65, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, + 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, + 0x64, 0x42, 0x2a, 0x0a, 0x28, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x4a, 0x04, 0x08, + 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, + 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x09, 0x67, 0x69, + 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc3, 0x02, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, - 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x10, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x2e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, - 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x10, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6f, - 0x72, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x66, 0x6f, 0x72, 0x63, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x68, 0x61, 0x12, 0x38, 0x0a, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, - 0x64, 0x22, 0xb6, 0x01, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x23, 0x0a, 0x21, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x17, 0x55, - 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, - 0x64, 0x65, 0x78, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2a, 0x0a, 0x11, 0x70, - 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xd3, 0x01, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, - 0x37, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x49, - 0x6e, 0x64, 0x65, 0x78, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x6f, 0x6f, - 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x48, 0x6f, 0x6f, 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xb1, 0x04, - 0x0a, 0x1c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, - 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, - 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x1a, 0x86, 0x03, - 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x12, 0x1f, 0x0a, 0x09, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x69, - 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x08, 0x72, 0x65, 0x62, - 0x61, 0x73, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1d, 0x0a, - 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x09, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x53, 0x68, 0x61, 0x12, 0x3f, 0x0a, 0x11, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x10, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, - 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x67, 0x69, 0x74, 0x5f, 0x70, 0x75, 0x73, 0x68, 0x5f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x69, - 0x74, 0x50, 0x75, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x38, 0x0a, 0x09, + 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x53, 0x68, 0x61, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x68, + 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x64, 0x53, 0x68, 0x61, 0x12, + 0x24, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x06, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x63, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x29, 0x0a, 0x27, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, - 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, - 0x64, 0x22, 0xde, 0x01, 0x0a, 0x1d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x68, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x09, 0x72, 0x65, 0x62, 0x61, 0x73, - 0x65, 0x53, 0x68, 0x61, 0x12, 0x27, 0x0a, 0x0e, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x61, - 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0d, - 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x65, 0x64, 0x12, 0x2a, 0x0a, - 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, - 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x69, 0x74, - 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x69, - 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x42, 0x2a, 0x0a, 0x28, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x72, - 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, - 0x61, 0x64, 0x22, 0xc3, 0x02, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, - 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x68, - 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x68, - 0x61, 0x12, 0x17, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x65, 0x6e, 0x64, 0x53, 0x68, 0x61, 0x12, 0x24, 0x0a, 0x06, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x09, 0x73, - 0x71, 0x75, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x22, 0x5d, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, - 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x71, 0x75, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x71, 0x75, 0x61, 0x73, 0x68, 0x53, 0x68, 0x61, 0x4a, 0x04, 0x08, - 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x09, 0x67, 0x69, - 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xab, 0x01, 0x0a, 0x1a, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, - 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, - 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x72, - 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x3d, 0x0a, - 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, - 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x07, 0x0a, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xac, 0x01, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, - 0x75, 0x61, 0x73, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x49, 0x0a, 0x10, 0x72, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x73, - 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x76, 0x69, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, - 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x62, - 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x22, 0x87, 0x03, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, - 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, - 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x1a, - 0x0a, 0x07, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, - 0x00, 0x52, 0x07, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x1a, 0xed, 0x01, 0x0a, 0x06, 0x48, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, - 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, - 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, - 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, - 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x42, 0x22, 0x0a, 0x20, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x5c, - 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, - 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0xd8, 0x02, 0x0a, - 0x1a, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, - 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x0a, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6d, - 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1c, - 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, - 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, - 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, - 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, - 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0xc9, 0x01, 0x0a, 0x1b, 0x55, 0x73, 0x65, 0x72, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, - 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, - 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63, 0x65, 0x69, - 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, - 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, - 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, 0x65, 0x65, 0x5f, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x32, 0xc9, 0x0b, 0x0a, 0x10, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, - 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, - 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, - 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, - 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x55, - 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, - 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, - 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, - 0x52, 0x65, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5a, 0x0a, 0x0f, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x12, 0x1e, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, - 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, - 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, - 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5e, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, - 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, - 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, - 0x08, 0x01, 0x28, 0x01, 0x30, 0x01, 0x12, 0x51, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, - 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1b, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x55, 0x73, 0x65, - 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x12, 0x1d, 0x2e, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, - 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, - 0x08, 0x01, 0x12, 0x5c, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, - 0x12, 0x70, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, - 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, - 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, - 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, - 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x4a, 0x04, 0x08, 0x04, + 0x10, 0x05, 0x52, 0x09, 0x73, 0x71, 0x75, 0x61, 0x73, 0x68, 0x5f, 0x69, 0x64, 0x22, 0x5d, 0x0a, + 0x12, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x71, 0x75, 0x61, 0x73, 0x68, 0x5f, 0x73, 0x68, + 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x71, 0x75, 0x61, 0x73, 0x68, 0x53, + 0x68, 0x61, 0x4a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x11, + 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x52, 0x09, 0x67, 0x69, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xab, 0x01, 0x0a, + 0x1a, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x45, 0x0a, 0x0f, 0x72, + 0x65, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x48, 0x00, 0x52, 0x0e, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, + 0x63, 0x74, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x68, 0x65, + 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xac, 0x01, 0x0a, 0x0f, 0x55, + 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x49, + 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, + 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x76, + 0x65, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0f, 0x72, 0x65, 0x62, + 0x61, 0x73, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x65, 0x72, 0x67, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, + 0x52, 0x0e, 0x72, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, + 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x87, 0x03, 0x0a, 0x15, 0x55, 0x73, + 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x07, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x1a, + 0xed, 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x5f, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x74, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x38, 0x0a, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x42, + 0x22, 0x0a, 0x20, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x5f, 0x70, 0x61, + 0x74, 0x63, 0x68, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, + 0x6f, 0x61, 0x64, 0x22, 0x5c, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, + 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, + 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, + 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x22, 0xd8, 0x02, 0x0a, 0x1a, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x38, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x04, 0x98, 0xc6, 0x2c, 0x01, 0x52, 0x0a, + 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x62, + 0x72, 0x61, 0x6e, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x62, 0x72, 0x61, + 0x6e, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, + 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, + 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, + 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0xc9, 0x01, 0x0a, + 0x1b, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x0d, + 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x52, 0x0c, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, + 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4a, + 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x72, + 0x65, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x32, 0xc9, 0x0b, 0x0a, 0x10, 0x4f, 0x70, 0x65, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5d, 0x0a, + 0x10, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5d, 0x0a, 0x10, + 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, + 0x12, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x55, + 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, + 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x73, + 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, + 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, + 0x67, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, + 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x57, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, + 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, - 0x4b, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x12, 0x19, 0x2e, + 0x5a, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, + 0x65, 0x66, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x54, 0x6f, 0x52, 0x65, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5e, 0x0a, 0x0f, 0x55, + 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1e, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, + 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, + 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x30, 0x01, 0x12, 0x51, 0x0a, 0x0c, 0x55, + 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x12, 0x1b, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, + 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x46, 0x46, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x57, + 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, + 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, + 0x65, 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, + 0x72, 0x72, 0x79, 0x50, 0x69, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x5c, 0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x69, 0x74, + 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, + 0x02, 0x08, 0x01, 0x28, 0x01, 0x12, 0x70, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, + 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, + 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, + 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, + 0x62, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, + 0x02, 0x08, 0x01, 0x28, 0x01, 0x30, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x76, 0x65, 0x72, 0x74, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x76, 0x65, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, + 0x28, 0x02, 0x08, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, + 0x73, 0x68, 0x12, 0x19, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, - 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x71, 0x75, 0x61, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x12, 0x59, 0x0a, 0x0e, - 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1d, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, - 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, - 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, - 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x12, 0x66, 0x0a, 0x13, 0x55, 0x73, 0x65, 0x72, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x22, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x42, - 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, - 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, - 0x76, 0x31, 0x36, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, + 0x01, 0x12, 0x59, 0x0a, 0x0e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, + 0x74, 0x63, 0x68, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x41, 0x70, 0x70, 0x6c, 0x79, 0x50, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, 0x28, 0x02, 0x08, 0x01, 0x28, 0x01, 0x12, 0x66, 0x0a, 0x13, + 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, + 0x75, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x6f, + 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x06, 0xfa, 0x97, + 0x28, 0x02, 0x08, 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x36, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, + 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( diff --git a/proto/go/gitalypb/operations_grpc.pb.go b/proto/go/gitalypb/operations_grpc.pb.go index 9cdb266e7..1e628127e 100644 --- a/proto/go/gitalypb/operations_grpc.pb.go +++ b/proto/go/gitalypb/operations_grpc.pb.go @@ -22,9 +22,23 @@ const _ = grpc.SupportPackageIsVersion7 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type OperationServiceClient interface { - // UserCreateBranch ... + // UserCreateBranch creates a single branch in the context of a specific user. It executes + // hooks and contacts Rails to verify that the user is allowed to create the branch. The + // following known error conditions may happen: + // + // - `FailedPrecondition` if the Git revision provided in start_point can't be found or updated. + // - `InvalidArgument` if the commit ID resolved from the start_point can't be parsed. + // - `PermissionDenied` with an embedded `UserCreateBranchError` if any custom hooks return a + // non-zero exit code. UserCreateBranch(ctx context.Context, in *UserCreateBranchRequest, opts ...grpc.CallOption) (*UserCreateBranchResponse, error) - // UserUpdateBranch ... + // UserUpdateBranch updates a branch to point to a new revision. It executes hooks and + // contacts Rails to verify that the user is allowed to update the branch. The following + // known error conditions may happen: + // + // - `InvalidArgument` if any of the request fields can't be validated. + // - `Internal` if the newrev or oldrev are invalid in the context of the repository. + // - `UserUpdateBranchResponse` with the `PreReceiveError` field set, if any custom hooks + // return a non-zero exit code. UserUpdateBranch(ctx context.Context, in *UserUpdateBranchRequest, opts ...grpc.CallOption) (*UserUpdateBranchResponse, error) // UserDeleteBranch force-deletes a single branch in the context of a specific user. It executes // hooks and contacts Rails to verify that the user is indeed allowed to delete that branch. The @@ -44,7 +58,14 @@ type OperationServiceClient interface { // UserCreateTag creates a new tag. This RPC knows to create both lightweight and annotated tags // depending on whether a message is set. UserCreateTag(ctx context.Context, in *UserCreateTagRequest, opts ...grpc.CallOption) (*UserCreateTagResponse, error) - // UserDeleteTag ... + // UserDeleteTag deletes an existing tag. It executes hooks and contacts Rails to verify that + // the user is allowed to delete the tag. The following known error conditions may happen: + // + // - `InvalidArgument` if the repository, tag_name, user, or expected_old_oid (if provided) + // are invalid. + // - `FailedPrecondition` if the tag_name can't be found, or the ref couldn't be deleted due + // to a concurrent write to the same ref. + // - `Internal` if the tag_name can't be resolved or an unknown error occurs. UserDeleteTag(ctx context.Context, in *UserDeleteTagRequest, opts ...grpc.CallOption) (*UserDeleteTagResponse, error) // UserMergeToRef creates a merge commit and updates target_ref to point to that // new commit. The first parent of the merge commit (the main line) is taken @@ -60,14 +81,25 @@ type OperationServiceClient interface { // The merge commit is created with the given user as author/committer and // the given message. // - // This RPC requires confirmation to make any user-visible changes to the - // repository. The first request sent shall contain details about the - // requested merge, which will result in a response with the created merge - // commit ID. Only if a second message with `apply = true` is sent will the - // merge be applied. + // This is a two-stage RPC that requires confirmation to make user-visible + // changes to the repository: + // - The first request contains details about the requested merge, which + // will result in a response with the created merge commit ID. + // - The second request should set `apply = true` to apply the merge. + // + // After the second request, it executes hooks and contacts Rails to verify + // that the user is allowed to update the branch. The following known error + // conditions may happen: + // + // - `InvalidArgument` if request fields can't be validated or resolved. + // - `NotFound` if the branch can't be found. + // - `FailedPrecondition` if there are merge conflicts, if the merge is + // aborted by setting `apply = false` in the second request, or if the + // merge fails due to a concurrent write to the same ref. + // - `PermissionDenied` if the user doesn't have permissions to merge a branch. UserMergeBranch(ctx context.Context, opts ...grpc.CallOption) (OperationService_UserMergeBranchClient, error) - // UserFFBranch tries to perform a fast-forward merge of the given branch to - // the given commit. If the merge is not a fast-forward merge, the request + // UserFFBranch tries to perform a fast-forward merge of a given commit into + // the given branch. If the merge is not a fast-forward merge, the request // will fail. The RPC will return an empty response in case updating the // reference fails e.g. because of a race. UserFFBranch(ctx context.Context, in *UserFFBranchRequest, opts ...grpc.CallOption) (*UserFFBranchResponse, error) @@ -352,9 +384,23 @@ func (c *operationServiceClient) UserUpdateSubmodule(ctx context.Context, in *Us // All implementations must embed UnimplementedOperationServiceServer // for forward compatibility type OperationServiceServer interface { - // UserCreateBranch ... + // UserCreateBranch creates a single branch in the context of a specific user. It executes + // hooks and contacts Rails to verify that the user is allowed to create the branch. The + // following known error conditions may happen: + // + // - `FailedPrecondition` if the Git revision provided in start_point can't be found or updated. + // - `InvalidArgument` if the commit ID resolved from the start_point can't be parsed. + // - `PermissionDenied` with an embedded `UserCreateBranchError` if any custom hooks return a + // non-zero exit code. UserCreateBranch(context.Context, *UserCreateBranchRequest) (*UserCreateBranchResponse, error) - // UserUpdateBranch ... + // UserUpdateBranch updates a branch to point to a new revision. It executes hooks and + // contacts Rails to verify that the user is allowed to update the branch. The following + // known error conditions may happen: + // + // - `InvalidArgument` if any of the request fields can't be validated. + // - `Internal` if the newrev or oldrev are invalid in the context of the repository. + // - `UserUpdateBranchResponse` with the `PreReceiveError` field set, if any custom hooks + // return a non-zero exit code. UserUpdateBranch(context.Context, *UserUpdateBranchRequest) (*UserUpdateBranchResponse, error) // UserDeleteBranch force-deletes a single branch in the context of a specific user. It executes // hooks and contacts Rails to verify that the user is indeed allowed to delete that branch. The @@ -374,7 +420,14 @@ type OperationServiceServer interface { // UserCreateTag creates a new tag. This RPC knows to create both lightweight and annotated tags // depending on whether a message is set. UserCreateTag(context.Context, *UserCreateTagRequest) (*UserCreateTagResponse, error) - // UserDeleteTag ... + // UserDeleteTag deletes an existing tag. It executes hooks and contacts Rails to verify that + // the user is allowed to delete the tag. The following known error conditions may happen: + // + // - `InvalidArgument` if the repository, tag_name, user, or expected_old_oid (if provided) + // are invalid. + // - `FailedPrecondition` if the tag_name can't be found, or the ref couldn't be deleted due + // to a concurrent write to the same ref. + // - `Internal` if the tag_name can't be resolved or an unknown error occurs. UserDeleteTag(context.Context, *UserDeleteTagRequest) (*UserDeleteTagResponse, error) // UserMergeToRef creates a merge commit and updates target_ref to point to that // new commit. The first parent of the merge commit (the main line) is taken @@ -390,14 +443,25 @@ type OperationServiceServer interface { // The merge commit is created with the given user as author/committer and // the given message. // - // This RPC requires confirmation to make any user-visible changes to the - // repository. The first request sent shall contain details about the - // requested merge, which will result in a response with the created merge - // commit ID. Only if a second message with `apply = true` is sent will the - // merge be applied. + // This is a two-stage RPC that requires confirmation to make user-visible + // changes to the repository: + // - The first request contains details about the requested merge, which + // will result in a response with the created merge commit ID. + // - The second request should set `apply = true` to apply the merge. + // + // After the second request, it executes hooks and contacts Rails to verify + // that the user is allowed to update the branch. The following known error + // conditions may happen: + // + // - `InvalidArgument` if request fields can't be validated or resolved. + // - `NotFound` if the branch can't be found. + // - `FailedPrecondition` if there are merge conflicts, if the merge is + // aborted by setting `apply = false` in the second request, or if the + // merge fails due to a concurrent write to the same ref. + // - `PermissionDenied` if the user doesn't have permissions to merge a branch. UserMergeBranch(OperationService_UserMergeBranchServer) error - // UserFFBranch tries to perform a fast-forward merge of the given branch to - // the given commit. If the merge is not a fast-forward merge, the request + // UserFFBranch tries to perform a fast-forward merge of a given commit into + // the given branch. If the merge is not a fast-forward merge, the request // will fail. The RPC will return an empty response in case updating the // reference fails e.g. because of a race. UserFFBranch(context.Context, *UserFFBranchRequest) (*UserFFBranchResponse, error) diff --git a/proto/go/gitalypb/praefect.pb.go b/proto/go/gitalypb/praefect.pb.go index 640e589a0..9984195bf 100644 --- a/proto/go/gitalypb/praefect.pb.go +++ b/proto/go/gitalypb/praefect.pb.go @@ -690,118 +690,6 @@ func (x *DatalossResponse) GetRepositories() []*DatalossResponse_Repository { return nil } -// DatalossCheckRequest ... -// -// Deprecated: Marked as deprecated in praefect.proto. -type DatalossCheckRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // virtual_storage ... - VirtualStorage string `protobuf:"bytes,1,opt,name=virtual_storage,json=virtualStorage,proto3" json:"virtual_storage,omitempty"` - // include_partially_replicated indicates whether to include repositories which are available but - // are unavailable on some assigned storages. - IncludePartiallyReplicated bool `protobuf:"varint,2,opt,name=include_partially_replicated,json=includePartiallyReplicated,proto3" json:"include_partially_replicated,omitempty"` -} - -func (x *DatalossCheckRequest) Reset() { - *x = DatalossCheckRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DatalossCheckRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DatalossCheckRequest) ProtoMessage() {} - -func (x *DatalossCheckRequest) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DatalossCheckRequest.ProtoReflect.Descriptor instead. -func (*DatalossCheckRequest) Descriptor() ([]byte, []int) { - return file_praefect_proto_rawDescGZIP(), []int{10} -} - -func (x *DatalossCheckRequest) GetVirtualStorage() string { - if x != nil { - return x.VirtualStorage - } - return "" -} - -func (x *DatalossCheckRequest) GetIncludePartiallyReplicated() bool { - if x != nil { - return x.IncludePartiallyReplicated - } - return false -} - -// DatalossCheckResponse ... -// -// Deprecated: Marked as deprecated in praefect.proto. -type DatalossCheckResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // repositories with data loss - Repositories []*DatalossCheckResponse_Repository `protobuf:"bytes,2,rep,name=repositories,proto3" json:"repositories,omitempty"` -} - -func (x *DatalossCheckResponse) Reset() { - *x = DatalossCheckResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DatalossCheckResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DatalossCheckResponse) ProtoMessage() {} - -func (x *DatalossCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DatalossCheckResponse.ProtoReflect.Descriptor instead. -func (*DatalossCheckResponse) Descriptor() ([]byte, []int) { - return file_praefect_proto_rawDescGZIP(), []int{11} -} - -func (x *DatalossCheckResponse) GetRepositories() []*DatalossCheckResponse_Repository { - if x != nil { - return x.Repositories - } - return nil -} - // RepositoryReplicasRequest ... type RepositoryReplicasRequest struct { state protoimpl.MessageState @@ -815,7 +703,7 @@ type RepositoryReplicasRequest struct { func (x *RepositoryReplicasRequest) Reset() { *x = RepositoryReplicasRequest{} if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[12] + mi := &file_praefect_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -828,7 +716,7 @@ func (x *RepositoryReplicasRequest) String() string { func (*RepositoryReplicasRequest) ProtoMessage() {} func (x *RepositoryReplicasRequest) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[12] + mi := &file_praefect_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -841,7 +729,7 @@ func (x *RepositoryReplicasRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryReplicasRequest.ProtoReflect.Descriptor instead. func (*RepositoryReplicasRequest) Descriptor() ([]byte, []int) { - return file_praefect_proto_rawDescGZIP(), []int{12} + return file_praefect_proto_rawDescGZIP(), []int{10} } func (x *RepositoryReplicasRequest) GetRepository() *Repository { @@ -866,7 +754,7 @@ type RepositoryReplicasResponse struct { func (x *RepositoryReplicasResponse) Reset() { *x = RepositoryReplicasResponse{} if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[13] + mi := &file_praefect_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -879,7 +767,7 @@ func (x *RepositoryReplicasResponse) String() string { func (*RepositoryReplicasResponse) ProtoMessage() {} func (x *RepositoryReplicasResponse) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[13] + mi := &file_praefect_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -892,7 +780,7 @@ func (x *RepositoryReplicasResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RepositoryReplicasResponse.ProtoReflect.Descriptor instead. func (*RepositoryReplicasResponse) Descriptor() ([]byte, []int) { - return file_praefect_proto_rawDescGZIP(), []int{13} + return file_praefect_proto_rawDescGZIP(), []int{11} } func (x *RepositoryReplicasResponse) GetPrimary() *RepositoryReplicasResponse_RepositoryDetails { @@ -924,7 +812,7 @@ type MarkUnverifiedRequest_Storage struct { func (x *MarkUnverifiedRequest_Storage) Reset() { *x = MarkUnverifiedRequest_Storage{} if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[14] + mi := &file_praefect_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -937,7 +825,7 @@ func (x *MarkUnverifiedRequest_Storage) String() string { func (*MarkUnverifiedRequest_Storage) ProtoMessage() {} func (x *MarkUnverifiedRequest_Storage) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[14] + mi := &file_praefect_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -982,7 +870,7 @@ type GetRepositoryMetadataRequest_Path struct { func (x *GetRepositoryMetadataRequest_Path) Reset() { *x = GetRepositoryMetadataRequest_Path{} if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[15] + mi := &file_praefect_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -995,7 +883,7 @@ func (x *GetRepositoryMetadataRequest_Path) String() string { func (*GetRepositoryMetadataRequest_Path) ProtoMessage() {} func (x *GetRepositoryMetadataRequest_Path) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[15] + mi := &file_praefect_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1049,7 +937,7 @@ type GetRepositoryMetadataResponse_Replica struct { func (x *GetRepositoryMetadataResponse_Replica) Reset() { *x = GetRepositoryMetadataResponse_Replica{} if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[16] + mi := &file_praefect_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1062,7 +950,7 @@ func (x *GetRepositoryMetadataResponse_Replica) String() string { func (*GetRepositoryMetadataResponse_Replica) ProtoMessage() {} func (x *GetRepositoryMetadataResponse_Replica) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[16] + mi := &file_praefect_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1139,7 +1027,7 @@ type DatalossResponse_Repository struct { func (x *DatalossResponse_Repository) Reset() { *x = DatalossResponse_Repository{} if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[17] + mi := &file_praefect_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1152,7 +1040,7 @@ func (x *DatalossResponse_Repository) String() string { func (*DatalossResponse_Repository) ProtoMessage() {} func (x *DatalossResponse_Repository) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[17] + mi := &file_praefect_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1217,7 +1105,7 @@ type DatalossResponse_Repository_Storage struct { func (x *DatalossResponse_Repository_Storage) Reset() { *x = DatalossResponse_Repository_Storage{} if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[18] + mi := &file_praefect_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1230,7 +1118,7 @@ func (x *DatalossResponse_Repository_Storage) String() string { func (*DatalossResponse_Repository_Storage) ProtoMessage() {} func (x *DatalossResponse_Repository_Storage) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[18] + mi := &file_praefect_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1281,167 +1169,6 @@ func (x *DatalossResponse_Repository_Storage) GetValidPrimary() bool { return false } -// Repository ... -type DatalossCheckResponse_Repository struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // relative_path of the repository with outdated replicas - RelativePath string `protobuf:"bytes,1,opt,name=relative_path,json=relativePath,proto3" json:"relative_path,omitempty"` - // storages on which the repository is outdated - Storages []*DatalossCheckResponse_Repository_Storage `protobuf:"bytes,2,rep,name=storages,proto3" json:"storages,omitempty"` - // unavailable indicates whether the repository is in unavailable. - Unavailable bool `protobuf:"varint,3,opt,name=unavailable,proto3" json:"unavailable,omitempty"` - // primary is the current primary storage of the repository. - Primary string `protobuf:"bytes,4,opt,name=primary,proto3" json:"primary,omitempty"` -} - -func (x *DatalossCheckResponse_Repository) Reset() { - *x = DatalossCheckResponse_Repository{} - if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DatalossCheckResponse_Repository) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DatalossCheckResponse_Repository) ProtoMessage() {} - -func (x *DatalossCheckResponse_Repository) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DatalossCheckResponse_Repository.ProtoReflect.Descriptor instead. -func (*DatalossCheckResponse_Repository) Descriptor() ([]byte, []int) { - return file_praefect_proto_rawDescGZIP(), []int{11, 0} -} - -func (x *DatalossCheckResponse_Repository) GetRelativePath() string { - if x != nil { - return x.RelativePath - } - return "" -} - -func (x *DatalossCheckResponse_Repository) GetStorages() []*DatalossCheckResponse_Repository_Storage { - if x != nil { - return x.Storages - } - return nil -} - -func (x *DatalossCheckResponse_Repository) GetUnavailable() bool { - if x != nil { - return x.Unavailable - } - return false -} - -func (x *DatalossCheckResponse_Repository) GetPrimary() string { - if x != nil { - return x.Primary - } - return "" -} - -// Storage ... -type DatalossCheckResponse_Repository_Storage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // name of the storage - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // behind_by indicates how many generations this storage is behind. - BehindBy int64 `protobuf:"varint,2,opt,name=behind_by,json=behindBy,proto3" json:"behind_by,omitempty"` - // assigned indicates whether the storage is assigned to host the repository. - Assigned bool `protobuf:"varint,3,opt,name=assigned,proto3" json:"assigned,omitempty"` - // healthy indicates whether the storage is considered healthy by the consensus of Praefect nodes. - Healthy bool `protobuf:"varint,4,opt,name=healthy,proto3" json:"healthy,omitempty"` - // valid_primary indicates whether the storage is ready to act as the primary if necessary. - ValidPrimary bool `protobuf:"varint,5,opt,name=valid_primary,json=validPrimary,proto3" json:"valid_primary,omitempty"` -} - -func (x *DatalossCheckResponse_Repository_Storage) Reset() { - *x = DatalossCheckResponse_Repository_Storage{} - if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DatalossCheckResponse_Repository_Storage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DatalossCheckResponse_Repository_Storage) ProtoMessage() {} - -func (x *DatalossCheckResponse_Repository_Storage) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DatalossCheckResponse_Repository_Storage.ProtoReflect.Descriptor instead. -func (*DatalossCheckResponse_Repository_Storage) Descriptor() ([]byte, []int) { - return file_praefect_proto_rawDescGZIP(), []int{11, 0, 0} -} - -func (x *DatalossCheckResponse_Repository_Storage) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *DatalossCheckResponse_Repository_Storage) GetBehindBy() int64 { - if x != nil { - return x.BehindBy - } - return 0 -} - -func (x *DatalossCheckResponse_Repository_Storage) GetAssigned() bool { - if x != nil { - return x.Assigned - } - return false -} - -func (x *DatalossCheckResponse_Repository_Storage) GetHealthy() bool { - if x != nil { - return x.Healthy - } - return false -} - -func (x *DatalossCheckResponse_Repository_Storage) GetValidPrimary() bool { - if x != nil { - return x.ValidPrimary - } - return false -} - // RepositoryDetails ... type RepositoryReplicasResponse_RepositoryDetails struct { state protoimpl.MessageState @@ -1457,7 +1184,7 @@ type RepositoryReplicasResponse_RepositoryDetails struct { func (x *RepositoryReplicasResponse_RepositoryDetails) Reset() { *x = RepositoryReplicasResponse_RepositoryDetails{} if protoimpl.UnsafeEnabled { - mi := &file_praefect_proto_msgTypes[21] + mi := &file_praefect_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1470,7 +1197,7 @@ func (x *RepositoryReplicasResponse_RepositoryDetails) String() string { func (*RepositoryReplicasResponse_RepositoryDetails) ProtoMessage() {} func (x *RepositoryReplicasResponse_RepositoryDetails) ProtoReflect() protoreflect.Message { - mi := &file_praefect_proto_msgTypes[21] + mi := &file_praefect_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1483,7 +1210,7 @@ func (x *RepositoryReplicasResponse_RepositoryDetails) ProtoReflect() protorefle // Deprecated: Use RepositoryReplicasResponse_RepositoryDetails.ProtoReflect.Descriptor instead. func (*RepositoryReplicasResponse_RepositoryDetails) Descriptor() ([]byte, []int) { - return file_praefect_proto_rawDescGZIP(), []int{13, 0} + return file_praefect_proto_rawDescGZIP(), []int{11, 0} } func (x *RepositoryReplicasResponse_RepositoryDetails) GetRepository() *Repository { @@ -1638,112 +1365,70 @@ var file_praefect_proto_rawDesc = []byte{ 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, - 0x79, 0x22, 0x85, 0x01, 0x0a, 0x14, 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x76, 0x69, - 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x53, 0x74, 0x6f, 0x72, - 0x61, 0x67, 0x65, 0x12, 0x40, 0x0a, 0x1c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xbf, 0x03, 0x0a, 0x15, 0x44, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x6f, 0x72, 0x79, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x65, - 0x73, 0x1a, 0xd3, 0x02, 0x0a, 0x0a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, - 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x4c, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, - 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, + 0x79, 0x22, 0x4f, 0x0a, 0x19, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, + 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x22, 0xa3, 0x02, 0x0a, 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4e, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x61, - 0x67, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x6e, 0x61, 0x76, 0x61, 0x69, - 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x1a, - 0x95, 0x01, 0x0a, 0x07, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1b, 0x0a, 0x09, 0x62, 0x65, 0x68, 0x69, 0x6e, 0x64, 0x5f, 0x62, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x08, 0x62, 0x65, 0x68, 0x69, 0x6e, 0x64, 0x42, 0x79, 0x12, 0x1a, 0x0a, 0x08, - 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x70, 0x72, 0x69, 0x6d, - 0x61, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x69, 0x64, - 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x4f, 0x0a, 0x19, 0x52, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, + 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x50, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, + 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x73, 0x1a, 0x63, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, + 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0xa3, 0x02, 0x0a, - 0x1a, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x07, 0x70, - 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, - 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x52, 0x07, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x50, 0x0a, 0x08, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, - 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x1a, 0x63, 0x0a, - 0x11, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x73, 0x12, 0x32, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, - 0x75, 0x6d, 0x32, 0x92, 0x05, 0x0a, 0x13, 0x50, 0x72, 0x61, 0x65, 0x66, 0x65, 0x63, 0x74, 0x49, - 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x12, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, - 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, - 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0d, 0x44, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, 0x3f, 0x0a, 0x08, 0x44, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6a, 0x0a, 0x17, 0x53, - 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, - 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, - 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, - 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, - 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0e, 0x4d, 0x61, 0x72, 0x6b, 0x55, - 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x69, 0x74, 0x61, - 0x6c, 0x79, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x55, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, - 0x79, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x55, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, - 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, + 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x32, 0xbf, 0x04, 0x0a, 0x13, 0x50, 0x72, 0x61, + 0x65, 0x66, 0x65, 0x63, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x5b, 0x0a, 0x12, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x73, 0x12, 0x21, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, + 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, + 0x08, 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x12, 0x17, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x44, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x6a, + 0x0a, 0x17, 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, + 0x76, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x12, 0x26, 0x2e, 0x67, 0x69, 0x74, 0x61, + 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, + 0x69, 0x76, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x27, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, 0x41, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x0e, 0x4d, 0x61, + 0x72, 0x6b, 0x55, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x65, 0x64, 0x12, 0x1d, 0x2e, 0x67, + 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x55, 0x6e, 0x76, 0x65, 0x72, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x69, + 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x4d, 0x61, 0x72, 0x6b, 0x55, 0x6e, 0x76, 0x65, 0x72, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x61, 0x0a, 0x14, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, - 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x67, 0x69, 0x74, - 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, - 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x1a, 0x04, 0xf0, 0x97, 0x28, 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x6c, 0x61, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, 0x6f, 0x72, 0x67, - 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x36, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x6f, 0x72, 0x12, 0x23, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x53, 0x65, 0x74, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, + 0x79, 0x2e, 0x53, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x64, + 0x0a, 0x15, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x6f, 0x72, 0x79, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x04, 0xf0, 0x97, 0x28, 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, + 0x74, 0x6c, 0x61, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x69, 0x74, 0x6c, 0x61, 0x62, 0x2d, + 0x6f, 0x72, 0x67, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2f, 0x76, 0x31, 0x36, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1758,7 +1443,7 @@ func file_praefect_proto_rawDescGZIP() []byte { return file_praefect_proto_rawDescData } -var file_praefect_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_praefect_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_praefect_proto_goTypes = []interface{}{ (*MarkUnverifiedRequest)(nil), // 0: gitaly.MarkUnverifiedRequest (*MarkUnverifiedResponse)(nil), // 1: gitaly.MarkUnverifiedResponse @@ -1770,53 +1455,45 @@ var file_praefect_proto_goTypes = []interface{}{ (*SetAuthoritativeStorageResponse)(nil), // 7: gitaly.SetAuthoritativeStorageResponse (*DatalossRequest)(nil), // 8: gitaly.DatalossRequest (*DatalossResponse)(nil), // 9: gitaly.DatalossResponse - (*DatalossCheckRequest)(nil), // 10: gitaly.DatalossCheckRequest - (*DatalossCheckResponse)(nil), // 11: gitaly.DatalossCheckResponse - (*RepositoryReplicasRequest)(nil), // 12: gitaly.RepositoryReplicasRequest - (*RepositoryReplicasResponse)(nil), // 13: gitaly.RepositoryReplicasResponse - (*MarkUnverifiedRequest_Storage)(nil), // 14: gitaly.MarkUnverifiedRequest.Storage - (*GetRepositoryMetadataRequest_Path)(nil), // 15: gitaly.GetRepositoryMetadataRequest.Path - (*GetRepositoryMetadataResponse_Replica)(nil), // 16: gitaly.GetRepositoryMetadataResponse.Replica - (*DatalossResponse_Repository)(nil), // 17: gitaly.DatalossResponse.Repository - (*DatalossResponse_Repository_Storage)(nil), // 18: gitaly.DatalossResponse.Repository.Storage - (*DatalossCheckResponse_Repository)(nil), // 19: gitaly.DatalossCheckResponse.Repository - (*DatalossCheckResponse_Repository_Storage)(nil), // 20: gitaly.DatalossCheckResponse.Repository.Storage - (*RepositoryReplicasResponse_RepositoryDetails)(nil), // 21: gitaly.RepositoryReplicasResponse.RepositoryDetails - (*Repository)(nil), // 22: gitaly.Repository - (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp + (*RepositoryReplicasRequest)(nil), // 10: gitaly.RepositoryReplicasRequest + (*RepositoryReplicasResponse)(nil), // 11: gitaly.RepositoryReplicasResponse + (*MarkUnverifiedRequest_Storage)(nil), // 12: gitaly.MarkUnverifiedRequest.Storage + (*GetRepositoryMetadataRequest_Path)(nil), // 13: gitaly.GetRepositoryMetadataRequest.Path + (*GetRepositoryMetadataResponse_Replica)(nil), // 14: gitaly.GetRepositoryMetadataResponse.Replica + (*DatalossResponse_Repository)(nil), // 15: gitaly.DatalossResponse.Repository + (*DatalossResponse_Repository_Storage)(nil), // 16: gitaly.DatalossResponse.Repository.Storage + (*RepositoryReplicasResponse_RepositoryDetails)(nil), // 17: gitaly.RepositoryReplicasResponse.RepositoryDetails + (*Repository)(nil), // 18: gitaly.Repository + (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp } var file_praefect_proto_depIdxs = []int32{ - 14, // 0: gitaly.MarkUnverifiedRequest.storage:type_name -> gitaly.MarkUnverifiedRequest.Storage - 15, // 1: gitaly.GetRepositoryMetadataRequest.path:type_name -> gitaly.GetRepositoryMetadataRequest.Path - 16, // 2: gitaly.GetRepositoryMetadataResponse.replicas:type_name -> gitaly.GetRepositoryMetadataResponse.Replica - 17, // 3: gitaly.DatalossResponse.repositories:type_name -> gitaly.DatalossResponse.Repository - 19, // 4: gitaly.DatalossCheckResponse.repositories:type_name -> gitaly.DatalossCheckResponse.Repository - 22, // 5: gitaly.RepositoryReplicasRequest.repository:type_name -> gitaly.Repository - 21, // 6: gitaly.RepositoryReplicasResponse.primary:type_name -> gitaly.RepositoryReplicasResponse.RepositoryDetails - 21, // 7: gitaly.RepositoryReplicasResponse.replicas:type_name -> gitaly.RepositoryReplicasResponse.RepositoryDetails - 23, // 8: gitaly.GetRepositoryMetadataResponse.Replica.verified_at:type_name -> google.protobuf.Timestamp - 18, // 9: gitaly.DatalossResponse.Repository.storages:type_name -> gitaly.DatalossResponse.Repository.Storage - 20, // 10: gitaly.DatalossCheckResponse.Repository.storages:type_name -> gitaly.DatalossCheckResponse.Repository.Storage - 22, // 11: gitaly.RepositoryReplicasResponse.RepositoryDetails.repository:type_name -> gitaly.Repository - 12, // 12: gitaly.PraefectInfoService.RepositoryReplicas:input_type -> gitaly.RepositoryReplicasRequest - 10, // 13: gitaly.PraefectInfoService.DatalossCheck:input_type -> gitaly.DatalossCheckRequest - 8, // 14: gitaly.PraefectInfoService.Dataloss:input_type -> gitaly.DatalossRequest - 6, // 15: gitaly.PraefectInfoService.SetAuthoritativeStorage:input_type -> gitaly.SetAuthoritativeStorageRequest - 0, // 16: gitaly.PraefectInfoService.MarkUnverified:input_type -> gitaly.MarkUnverifiedRequest - 4, // 17: gitaly.PraefectInfoService.SetReplicationFactor:input_type -> gitaly.SetReplicationFactorRequest - 2, // 18: gitaly.PraefectInfoService.GetRepositoryMetadata:input_type -> gitaly.GetRepositoryMetadataRequest - 13, // 19: gitaly.PraefectInfoService.RepositoryReplicas:output_type -> gitaly.RepositoryReplicasResponse - 11, // 20: gitaly.PraefectInfoService.DatalossCheck:output_type -> gitaly.DatalossCheckResponse - 9, // 21: gitaly.PraefectInfoService.Dataloss:output_type -> gitaly.DatalossResponse - 7, // 22: gitaly.PraefectInfoService.SetAuthoritativeStorage:output_type -> gitaly.SetAuthoritativeStorageResponse - 1, // 23: gitaly.PraefectInfoService.MarkUnverified:output_type -> gitaly.MarkUnverifiedResponse - 5, // 24: gitaly.PraefectInfoService.SetReplicationFactor:output_type -> gitaly.SetReplicationFactorResponse - 3, // 25: gitaly.PraefectInfoService.GetRepositoryMetadata:output_type -> gitaly.GetRepositoryMetadataResponse - 19, // [19:26] is the sub-list for method output_type - 12, // [12:19] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 12, // 0: gitaly.MarkUnverifiedRequest.storage:type_name -> gitaly.MarkUnverifiedRequest.Storage + 13, // 1: gitaly.GetRepositoryMetadataRequest.path:type_name -> gitaly.GetRepositoryMetadataRequest.Path + 14, // 2: gitaly.GetRepositoryMetadataResponse.replicas:type_name -> gitaly.GetRepositoryMetadataResponse.Replica + 15, // 3: gitaly.DatalossResponse.repositories:type_name -> gitaly.DatalossResponse.Repository + 18, // 4: gitaly.RepositoryReplicasRequest.repository:type_name -> gitaly.Repository + 17, // 5: gitaly.RepositoryReplicasResponse.primary:type_name -> gitaly.RepositoryReplicasResponse.RepositoryDetails + 17, // 6: gitaly.RepositoryReplicasResponse.replicas:type_name -> gitaly.RepositoryReplicasResponse.RepositoryDetails + 19, // 7: gitaly.GetRepositoryMetadataResponse.Replica.verified_at:type_name -> google.protobuf.Timestamp + 16, // 8: gitaly.DatalossResponse.Repository.storages:type_name -> gitaly.DatalossResponse.Repository.Storage + 18, // 9: gitaly.RepositoryReplicasResponse.RepositoryDetails.repository:type_name -> gitaly.Repository + 10, // 10: gitaly.PraefectInfoService.RepositoryReplicas:input_type -> gitaly.RepositoryReplicasRequest + 8, // 11: gitaly.PraefectInfoService.Dataloss:input_type -> gitaly.DatalossRequest + 6, // 12: gitaly.PraefectInfoService.SetAuthoritativeStorage:input_type -> gitaly.SetAuthoritativeStorageRequest + 0, // 13: gitaly.PraefectInfoService.MarkUnverified:input_type -> gitaly.MarkUnverifiedRequest + 4, // 14: gitaly.PraefectInfoService.SetReplicationFactor:input_type -> gitaly.SetReplicationFactorRequest + 2, // 15: gitaly.PraefectInfoService.GetRepositoryMetadata:input_type -> gitaly.GetRepositoryMetadataRequest + 11, // 16: gitaly.PraefectInfoService.RepositoryReplicas:output_type -> gitaly.RepositoryReplicasResponse + 9, // 17: gitaly.PraefectInfoService.Dataloss:output_type -> gitaly.DatalossResponse + 7, // 18: gitaly.PraefectInfoService.SetAuthoritativeStorage:output_type -> gitaly.SetAuthoritativeStorageResponse + 1, // 19: gitaly.PraefectInfoService.MarkUnverified:output_type -> gitaly.MarkUnverifiedResponse + 5, // 20: gitaly.PraefectInfoService.SetReplicationFactor:output_type -> gitaly.SetReplicationFactorResponse + 3, // 21: gitaly.PraefectInfoService.GetRepositoryMetadata:output_type -> gitaly.GetRepositoryMetadataResponse + 16, // [16:22] is the sub-list for method output_type + 10, // [10:16] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_praefect_proto_init() } @@ -1948,30 +1625,6 @@ func file_praefect_proto_init() { } } file_praefect_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatalossCheckRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_praefect_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatalossCheckResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_praefect_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepositoryReplicasRequest); i { case 0: return &v.state @@ -1983,7 +1636,7 @@ func file_praefect_proto_init() { return nil } } - file_praefect_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_praefect_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepositoryReplicasResponse); i { case 0: return &v.state @@ -1995,7 +1648,7 @@ func file_praefect_proto_init() { return nil } } - file_praefect_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_praefect_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MarkUnverifiedRequest_Storage); i { case 0: return &v.state @@ -2007,7 +1660,7 @@ func file_praefect_proto_init() { return nil } } - file_praefect_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_praefect_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepositoryMetadataRequest_Path); i { case 0: return &v.state @@ -2019,7 +1672,7 @@ func file_praefect_proto_init() { return nil } } - file_praefect_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_praefect_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepositoryMetadataResponse_Replica); i { case 0: return &v.state @@ -2031,7 +1684,7 @@ func file_praefect_proto_init() { return nil } } - file_praefect_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_praefect_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DatalossResponse_Repository); i { case 0: return &v.state @@ -2043,7 +1696,7 @@ func file_praefect_proto_init() { return nil } } - file_praefect_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_praefect_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DatalossResponse_Repository_Storage); i { case 0: return &v.state @@ -2055,31 +1708,7 @@ func file_praefect_proto_init() { return nil } } - file_praefect_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatalossCheckResponse_Repository); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_praefect_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DatalossCheckResponse_Repository_Storage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_praefect_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_praefect_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RepositoryReplicasResponse_RepositoryDetails); i { case 0: return &v.state @@ -2107,7 +1736,7 @@ func file_praefect_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_praefect_proto_rawDesc, NumEnums: 0, - NumMessages: 22, + NumMessages: 18, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/go/gitalypb/praefect_grpc.pb.go b/proto/go/gitalypb/praefect_grpc.pb.go index 5420f3393..1d533c064 100644 --- a/proto/go/gitalypb/praefect_grpc.pb.go +++ b/proto/go/gitalypb/praefect_grpc.pb.go @@ -24,11 +24,6 @@ const _ = grpc.SupportPackageIsVersion7 type PraefectInfoServiceClient interface { // RepositoryReplicas ... RepositoryReplicas(ctx context.Context, in *RepositoryReplicasRequest, opts ...grpc.CallOption) (*RepositoryReplicasResponse, error) - // Deprecated: Do not use. - // DatalossCheck provides information on repositories in Praefect that are in a degraded state and - // thus susceptible to dataloss. A repository is considered degraded when its replicas are - // outdated and/or unavailable. - DatalossCheck(ctx context.Context, in *DatalossCheckRequest, opts ...grpc.CallOption) (*DatalossCheckResponse, error) // Dataloss provides information on repositories in Praefect that are in a degraded state and // thus susceptible to dataloss. A repository is considered degraded when its replicas are // outdated and/or unavailable. @@ -70,16 +65,6 @@ func (c *praefectInfoServiceClient) RepositoryReplicas(ctx context.Context, in * return out, nil } -// Deprecated: Do not use. -func (c *praefectInfoServiceClient) DatalossCheck(ctx context.Context, in *DatalossCheckRequest, opts ...grpc.CallOption) (*DatalossCheckResponse, error) { - out := new(DatalossCheckResponse) - err := c.cc.Invoke(ctx, "/gitaly.PraefectInfoService/DatalossCheck", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *praefectInfoServiceClient) Dataloss(ctx context.Context, in *DatalossRequest, opts ...grpc.CallOption) (PraefectInfoService_DatalossClient, error) { stream, err := c.cc.NewStream(ctx, &PraefectInfoService_ServiceDesc.Streams[0], "/gitaly.PraefectInfoService/Dataloss", opts...) if err != nil { @@ -154,11 +139,6 @@ func (c *praefectInfoServiceClient) GetRepositoryMetadata(ctx context.Context, i type PraefectInfoServiceServer interface { // RepositoryReplicas ... RepositoryReplicas(context.Context, *RepositoryReplicasRequest) (*RepositoryReplicasResponse, error) - // Deprecated: Do not use. - // DatalossCheck provides information on repositories in Praefect that are in a degraded state and - // thus susceptible to dataloss. A repository is considered degraded when its replicas are - // outdated and/or unavailable. - DatalossCheck(context.Context, *DatalossCheckRequest) (*DatalossCheckResponse, error) // Dataloss provides information on repositories in Praefect that are in a degraded state and // thus susceptible to dataloss. A repository is considered degraded when its replicas are // outdated and/or unavailable. @@ -191,9 +171,6 @@ type UnimplementedPraefectInfoServiceServer struct { func (UnimplementedPraefectInfoServiceServer) RepositoryReplicas(context.Context, *RepositoryReplicasRequest) (*RepositoryReplicasResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RepositoryReplicas not implemented") } -func (UnimplementedPraefectInfoServiceServer) DatalossCheck(context.Context, *DatalossCheckRequest) (*DatalossCheckResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DatalossCheck not implemented") -} func (UnimplementedPraefectInfoServiceServer) Dataloss(*DatalossRequest, PraefectInfoService_DatalossServer) error { return status.Errorf(codes.Unimplemented, "method Dataloss not implemented") } @@ -240,24 +217,6 @@ func _PraefectInfoService_RepositoryReplicas_Handler(srv interface{}, ctx contex return interceptor(ctx, in, info, handler) } -func _PraefectInfoService_DatalossCheck_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DatalossCheckRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(PraefectInfoServiceServer).DatalossCheck(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/gitaly.PraefectInfoService/DatalossCheck", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(PraefectInfoServiceServer).DatalossCheck(ctx, req.(*DatalossCheckRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _PraefectInfoService_Dataloss_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(DatalossRequest) if err := stream.RecvMsg(m); err != nil { @@ -363,10 +322,6 @@ var PraefectInfoService_ServiceDesc = grpc.ServiceDesc{ Handler: _PraefectInfoService_RepositoryReplicas_Handler, }, { - MethodName: "DatalossCheck", - Handler: _PraefectInfoService_DatalossCheck_Handler, - }, - { MethodName: "SetAuthoritativeStorage", Handler: _PraefectInfoService_SetAuthoritativeStorage_Handler, }, diff --git a/proto/go/gitalypb/ref.pb.go b/proto/go/gitalypb/ref.pb.go index 9cb175c6b..498868230 100644 --- a/proto/go/gitalypb/ref.pb.go +++ b/proto/go/gitalypb/ref.pb.go @@ -361,11 +361,8 @@ type FindLocalBranchesRequest struct { Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // sort_by ... SortBy FindLocalBranchesRequest_SortBy `protobuf:"varint,2,opt,name=sort_by,json=sortBy,proto3,enum=gitaly.FindLocalBranchesRequest_SortBy" json:"sort_by,omitempty"` - // pagination_params is used for pagination of the objects. - // The page token is the branch name, with the `refs/heads/` prefix, for - // example "refs/heads/master". After the first branch name is encountered - // which lexicographically exceeds the page token, it will be the first result - // send as part of the response. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParams *PaginationParameter `protobuf:"bytes,3,opt,name=pagination_params,json=paginationParams,proto3" json:"pagination_params,omitempty"` } @@ -777,10 +774,8 @@ type FindAllTagsRequest struct { Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"` // sort_by allows to request tags in particular order. SortBy *FindAllTagsRequest_SortBy `protobuf:"bytes,2,opt,name=sort_by,json=sortBy,proto3" json:"sort_by,omitempty"` - // pagination_paramsi is used for pagination of the objects. - // The page token is the tags name, with the `refs/tags/` prefix, for - // example "refs/tags/v1.0.0". When the tag name matches the page token, - // the tag following it will be the first result send as part of the response. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParams *PaginationParameter `protobuf:"bytes,3,opt,name=pagination_params,json=paginationParams,proto3" json:"pagination_params,omitempty"` } diff --git a/proto/go/gitalypb/shared.pb.go b/proto/go/gitalypb/shared.pb.go index cb8385f0a..3090af28e 100644 --- a/proto/go/gitalypb/shared.pb.go +++ b/proto/go/gitalypb/shared.pb.go @@ -1063,7 +1063,7 @@ func (x *ObjectPool) GetRepository() *Repository { return nil } -// PaginationParameter ... +// PaginationParameter controls pagination within RPCs. type PaginationParameter struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1130,7 +1130,7 @@ func (x *PaginationParameter) GetLimit() int32 { return 0 } -// PaginationCursor ... +// PaginationCursor defines the page token clients should use to fetch the next page. type PaginationCursor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/proto/log.proto b/proto/log.proto index 278713735..b5ae5a575 100644 --- a/proto/log.proto +++ b/proto/log.proto @@ -4,10 +4,10 @@ package gitaly; option go_package = "gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"; -// LogEntry is a single entry in a repository's write-ahead log. +// LogEntry is a single entry in a partition's write-ahead log. // // Schema for : -// - `repository/<repository_id>/log/entry/<log_index>`. +// - `partition/<partition_id>/log/entry/<log_index>`. message LogEntry { // ReferenceUpdate models a single reference update. message ReferenceUpdate { @@ -58,12 +58,12 @@ message LogEntry { RepositoryDeletion repository_deletion = 6; } -// LogIndex serializes a log index. It's used for storing a repository's -// applied log index in the database. +// LSN serializes a log sequence number. It's used for storing a partition's +// applied LSN in the database. // // Schema for: -// - `repository/<repository_id>/log/index/applied` -message LogIndex { - // log_index is an index pointing to a position in the log. - uint64 log_index = 1; +// - `partition/<partition_id>/applied_lsn` +message LSN { + // value is an LSN pointing to a position in the log. + uint64 value = 1; } diff --git a/proto/operations.proto b/proto/operations.proto index 82fab9fee..4b6264bb7 100644 --- a/proto/operations.proto +++ b/proto/operations.proto @@ -15,14 +15,28 @@ option go_package = "gitlab.com/gitlab-org/gitaly/v16/proto/go/gitalypb"; // '/allowed' endpoint. service OperationService { - // UserCreateBranch ... + // UserCreateBranch creates a single branch in the context of a specific user. It executes + // hooks and contacts Rails to verify that the user is allowed to create the branch. The + // following known error conditions may happen: + // + // - `FailedPrecondition` if the Git revision provided in start_point can't be found or updated. + // - `InvalidArgument` if the commit ID resolved from the start_point can't be parsed. + // - `PermissionDenied` with an embedded `UserCreateBranchError` if any custom hooks return a + // non-zero exit code. rpc UserCreateBranch(UserCreateBranchRequest) returns (UserCreateBranchResponse) { option (op_type) = { op: MUTATOR }; } - // UserUpdateBranch ... + // UserUpdateBranch updates a branch to point to a new revision. It executes hooks and + // contacts Rails to verify that the user is allowed to update the branch. The following + // known error conditions may happen: + // + // - `InvalidArgument` if any of the request fields can't be validated. + // - `Internal` if the newrev or oldrev are invalid in the context of the repository. + // - `UserUpdateBranchResponse` with the `PreReceiveError` field set, if any custom hooks + // return a non-zero exit code. rpc UserUpdateBranch(UserUpdateBranchRequest) returns (UserUpdateBranchResponse) { option (op_type) = { op: MUTATOR @@ -57,7 +71,14 @@ service OperationService { }; } - // UserDeleteTag ... + // UserDeleteTag deletes an existing tag. It executes hooks and contacts Rails to verify that + // the user is allowed to delete the tag. The following known error conditions may happen: + // + // - `InvalidArgument` if the repository, tag_name, user, or expected_old_oid (if provided) + // are invalid. + // - `FailedPrecondition` if the tag_name can't be found, or the ref couldn't be deleted due + // to a concurrent write to the same ref. + // - `Internal` if the tag_name can't be resolved or an unknown error occurs. rpc UserDeleteTag(UserDeleteTagRequest) returns (UserDeleteTagResponse) { option (op_type) = { op: MUTATOR @@ -88,19 +109,30 @@ service OperationService { // The merge commit is created with the given user as author/committer and // the given message. // - // This RPC requires confirmation to make any user-visible changes to the - // repository. The first request sent shall contain details about the - // requested merge, which will result in a response with the created merge - // commit ID. Only if a second message with `apply = true` is sent will the - // merge be applied. + // This is a two-stage RPC that requires confirmation to make user-visible + // changes to the repository: + // - The first request contains details about the requested merge, which + // will result in a response with the created merge commit ID. + // - The second request should set `apply = true` to apply the merge. + // + // After the second request, it executes hooks and contacts Rails to verify + // that the user is allowed to update the branch. The following known error + // conditions may happen: + // + // - `InvalidArgument` if request fields can't be validated or resolved. + // - `NotFound` if the branch can't be found. + // - `FailedPrecondition` if there are merge conflicts, if the merge is + // aborted by setting `apply = false` in the second request, or if the + // merge fails due to a concurrent write to the same ref. + // - `PermissionDenied` if the user doesn't have permissions to merge a branch. rpc UserMergeBranch(stream UserMergeBranchRequest) returns (stream UserMergeBranchResponse) { option (op_type) = { op: MUTATOR }; } - // UserFFBranch tries to perform a fast-forward merge of the given branch to - // the given commit. If the merge is not a fast-forward merge, the request + // UserFFBranch tries to perform a fast-forward merge of a given commit into + // the given branch. If the merge is not a fast-forward merge, the request // will fail. The RPC will return an empty response in case updating the // reference fails e.g. because of a race. rpc UserFFBranch(UserFFBranchRequest) returns (UserFFBranchResponse) { @@ -175,21 +207,23 @@ service OperationService { } -// UserCreateBranchRequest ... +// UserCreateBranchRequest is a request for the UserCreateBranch RPC. message UserCreateBranchRequest { - // repository ... + // repository is the repository in which the branch should be created. Repository repository = 1 [(target_repository)=true]; - // branch_name ... + // branch_name is the name of the branch to create. bytes branch_name = 2; - // user ... + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 3; - // start_point ... + // start_point is the Git revision to start the branch at. See the gitrevisions(1) + // man pages for supported syntax. bytes start_point = 4; } -// UserCreateBranchResponse ... +// UserCreateBranchResponse is a response for the UserCreateBranch RPC. message UserCreateBranchResponse { - // branch ... + // branch is the branch that was created. Branch branch = 1; // PreReceiveError had previously been set when creation of the branch was refused by hooks. @@ -208,23 +242,24 @@ message UserCreateBranchError { } } -// UserUpdateBranchRequest ... +// UserUpdateBranchRequest is a request for the UserUpdateBranch RPC. message UserUpdateBranchRequest { - // repository ... + // repository is the repository to update the branch in. Repository repository = 1 [(target_repository)=true]; - // branch_name ... + // branch_name is the name of the branch to update. bytes branch_name = 2; - // user ... + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 3; - // newrev ... + // newrev is the Git revision which the branch will point to. bytes newrev = 4; - // oldrev ... + // oldrev is the Git revision which the branch currently points to. bytes oldrev = 5; } -// UserUpdateBranchResponse ... +// UserUpdateBranchResponse is a response for the UserUpdateBranch RPC. message UserUpdateBranchResponse { - // pre_receive_error ... + // pre_receive_error indicates an error that occurred while executing custom hooks. string pre_receive_error = 1; } @@ -236,9 +271,8 @@ message UserDeleteBranchRequest { // name only, e.g. in case you want to delete `refs/heads/main` the request needs to only contain // `main` as the branch name. bytes branch_name = 2; - // user is the user on whose behalf we should delete the branch. This information is used to - // perform access checks against the Rails `/internal/allowed` API. This user is also exposed to - // any custom hooks executed as part of this RPC call. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 3; // expected_old_oid is the object ID which branch is expected to point to. // This is used as a safety guard to avoid races when branch has been @@ -263,7 +297,7 @@ message UserDeleteBranchResponse { // defined error cases. message UserDeleteBranchError { oneof error { - // access_checkError is set if the RPC failed because `/internal/allowed` failed. + // access_check is set if the RPC failed due to an external access check. AccessCheckError access_check = 1; // reference_updateError is set if the RPC failed because updating the // reference to the new object ID has failed. @@ -274,13 +308,14 @@ message UserDeleteBranchError { } } -// UserDeleteTagRequest ... +// UserDeleteTagRequest is a request for the UserDeleteTag RPC. message UserDeleteTagRequest { - // repository ... + // repository is the repository from which the tag should be deleted. Repository repository = 1 [(target_repository)=true]; - // tag_name ... + // tag_name is the name of the tag to delete. bytes tag_name = 2; - // user ... + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 3; // expected_old_oid is the object ID which tag is expected to point to. // This is used as a safety guard to avoid races when tag has been @@ -292,9 +327,9 @@ message UserDeleteTagRequest { string expected_old_oid = 4; } -// UserDeleteTagResponse ... +// UserDeleteTagResponse is a response for the UserDeleteTag RPC. message UserDeleteTagResponse { - // pre_receive_error ... + // pre_receive_error indicates an error that occurred while executing custom hooks. string pre_receive_error = 1; } @@ -305,8 +340,8 @@ message UserCreateTagRequest { // tag_name is the name of the tag that shall be created. Note that this should be set to the name // only: if you want to create a tag `refs/heads/v1.0`, you need to pass `v1.0` as TagName. bytes tag_name = 2; - // user is the user as which the tag shall be created. This user is used to perform access checks - // against Rails' `/internal/allowed` endpoint. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 3; // target_revision is the revision that the newly created tag should be pointing to. Note that if // the revision points to a tag, that tag will be peeled to the commit it is pointing to. If the @@ -341,7 +376,7 @@ message UserCreateTagResponse { // userCreateTag fails. message UserCreateTagError { oneof error { - // access_checkError is set if the RPC failed because `/internal/allowed` failed. + // access_check is set if the RPC failed due to an external access check. AccessCheckError access_check = 1; // reference_updateError is set if the RPC failed because updating the // reference to the new object ID has failed. @@ -354,14 +389,14 @@ message UserCreateTagError { } } -// UserMergeBranchRequest ... -// The first set of parameters must only be set in the first message to declare -// parameters for the merge. +// UserMergeBranchRequest is a request for the UserMergeBranch RPC. +// All mandatory parameters except for `apply` should be set in the first +// message. message UserMergeBranchRequest { // repository is the repository to compute the merge for. Repository repository = 1 [(target_repository)=true]; - // user is the user to compute the merge as. Its name and mail address are - // used as author and committer of the merge. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; // commit_id is the object ID (hash) of the object that shall be merged into // the target branch. @@ -384,27 +419,24 @@ message UserMergeBranchRequest { // will return an error. string expected_old_oid = 8; - // apply must only be set in the second message. Only if this second message - // is sent and if apply is set to true will the branch be updated to point to - // the merge commit. + // apply is used in the second message. Setting it to true will proceed with + // the merge. Setting it to false will abort the merge. bool apply = 6; } -// UserMergeBranchResponse ... +// UserMergeBranchResponse is a response for the UserMergeBranch RPC. message UserMergeBranchResponse { - // commit_id is the merge commit the branch will be updated to. - // The caller can still abort the merge. - // First message. + // commit_id is the merge commit the branch will be updated to. This is sent + // as the response to the first request. string commit_id = 1; reserved 2; - // branch_update if set, is the merge has been applied to the branch. - // Second message + // branch_update contains the commit ID of the merge commit if the merge has + // been applied to the branch. This is sent as the response to the second + // request. OperationBranchUpdate branch_update = 3; - // PreReceiveError had previously been set in case access checks refused the merge. This has been - // changed to Instead we return a proper gRPC error with UserMergeBranchError details set to an - // access_checkError. + // Reserved for backwards compatibility. Structured errors are now used instead. reserved "pre_receive_error"; reserved 4; } @@ -413,7 +445,7 @@ message UserMergeBranchResponse { // details in case UserMergeBranch fails. message UserMergeBranchError { oneof error { - // access_checkError is set if the RPC failed because `/internal/allowed` failed. + // access_check is set if the RPC failed due to an external access check. AccessCheckError access_check = 1; // reference_updateError is set if the RPC failed because updating the // reference to the new object ID has failed. @@ -426,18 +458,19 @@ message UserMergeBranchError { } } -// UserMergeToRefRequest ... +// UserMergeToRefRequest is a request for the UserMergeToRef RPC. message UserMergeToRefRequest { // repository is the repository in which the merge shall be computed. Repository repository = 1 [(target_repository)=true]; - // user is the user as which the merge commit shall be created. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; // source_sha is the object ID of the second parent of the computed merge. string source_sha = 3; // branch contains the name of the branch which should be used as the first // parent of the computed merge. It is deprecated in favor of // `first_parent_ref` and will be ignored in case it is set. - bytes branch = 4; + bytes branch = 4 [deprecated = true]; // target_ref contains the fully qualified reference which should be updated // with the computed merge commit. bytes target_ref = 5; @@ -470,13 +503,14 @@ message UserMergeToRefRequest { string expected_old_oid = 10; } -// UserMergeToRefResponse ... +// UserMergeToRefResponse is a response for the UserMergeToRef RPC. message UserMergeToRefResponse { // commit_id is the object ID of the computed merge commit. string commit_id = 1; - // PreReceiveError had never been set because this RPC does not perform authentication via - // `/internal/allowed`. This field was thus removed without replacement. + // pre_receive_error had never been set because this RPC does not perform + // authentication and authorization via an external endpoint. This field was + // thus removed without replacement. reserved "pre_receive_error"; reserved 2; } @@ -485,7 +519,8 @@ message UserMergeToRefResponse { message UserRebaseToRefRequest { // repository is the repository in which the rebase shall be computed. Repository repository = 1 [(target_repository)=true]; - // user is the user as which the rebased commits shall be created. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; // source_sha is the object ID of the commit to be rebased. string source_sha = 3; @@ -528,16 +563,16 @@ message OperationBranchUpdate { bool branch_created = 3; } -// UserFFBranchRequest contains parameters for the UserFFBranch RPC. +// UserFFBranchRequest is a request for the UserFFBranch RPC. message UserFFBranchRequest { // repository is the repository for which to perform the fast-forward merge. Repository repository = 1 [(target_repository)=true]; - // user is the user which to perform the fast-forward merge as. This is used - // for authorization checks. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; - // commit_id is the commit ID to update the branch to. + // commit_id is the commit ID to fast-forward the branch to. string commit_id = 3; - // branch is the name of the branch that shall be update. This must be the + // branch is the name of the branch to fast-forward. This must be the // branch name only and not a fully qualified reference, e.g. "master" // instead of "refs/heads/master". bytes branch = 4; @@ -552,21 +587,22 @@ message UserFFBranchRequest { string expected_old_oid = 5; } -// UserFFBranchResponse ... +// UserFFBranchResponse is a response for the UserFFBranch RPC. message UserFFBranchResponse { - // branch_update ... + // branch_update contains details of the fast-forwarded branch. OperationBranchUpdate branch_update = 1; - // pre_receive_error ... + // pre_receive_error is set in the case of an `Internal` error and contains + // details of the failed custom hook. string pre_receive_error = 2; } -// UserCherryPickRequest ... +// UserCherryPickRequest is a request for the UserCherryPick RPC. message UserCherryPickRequest { // repository is the repository into which the cherry-pick shall be // performed. Repository repository = 1 [(target_repository)=true]; - // user is the user to perform the cherry-pick as. This is used for - // authorization checks and as the committer of the computed cherry-pick. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; // commit is the commit to cherry-pick onto the given branch. GitCommit commit = 3; @@ -599,7 +635,7 @@ message UserCherryPickRequest { string expected_old_oid = 10; } -// UserCherryPickResponse ... +// UserCherryPickResponse is a response for the UserCherryPick RPC. message UserCherryPickResponse { // branch_update represents details about the updated branch. OperationBranchUpdate branch_update = 1; @@ -637,20 +673,19 @@ message UserCherryPickError { NotAncestorError target_branch_diverged = 2; // changes_already_applied is returned if the result after applying the cherry pick is empty. ChangesAlreadyAppliedError changes_already_applied = 3; - // access_check is returned in case GitLab's `/internal/allowed` endpoint rejected - // the change. + // access_check is set if the RPC failed due to an external access check. AccessCheckError access_check = 4; } } -// UserRevertRequest ... +// UserRevertRequest is a request for the UserRevert RPC. message UserRevertRequest { // repository is the repository in which the revert shall be applied. Repository repository = 1 [(target_repository)=true]; - // user is the user to perform the revert as. This is used both for - // authorization and as author/committer for the revert commit. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; - // commit iis the commit to revert. + // commit is the commit to revert. Only the `id` field is required. GitCommit commit = 3; // branch_name is the name of the branch onto which the reverted commit shall // be committed. @@ -681,7 +716,7 @@ message UserRevertRequest { string expected_old_oid = 10; } -// UserRevertResponse ... +// UserRevertResponse is a response for the UserRevert RPC. message UserRevertResponse { // CreateTreeError represents an error which happened when computing the // revert. @@ -712,7 +747,7 @@ message UserRevertResponse { // UserCommitFilesActionHeader contains the details of the action to be performed. message UserCommitFilesActionHeader { - // ActionType ... + // ActionType is the type of action to perform. enum ActionType { // CREATE creates a new file. CREATE = 0; // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH @@ -772,7 +807,8 @@ message UserCommitFilesAction { message UserCommitFilesRequestHeader { // repository is the target repository where to apply the commit. Repository repository = 1 [(target_repository)=true]; - // user is the user peforming the call. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; // branch_name is the name of the branch to point to the new commit. If start_sha and start_branch_name // are not defined, the commit of branch_name is used as the parent commit. @@ -838,7 +874,7 @@ message UserCommitFilesResponse { // defined error cases. message UserCommitFilesError { oneof error { - // access_checkError is set if the RPC failed because `/internal/allowed` failed. + // access_check is set if the RPC failed due to an external access check. AccessCheckError access_check = 1; // index_update is set to the error message when an operation conflicts with the repository // index, such as creating a file that already exists. @@ -849,7 +885,7 @@ message UserCommitFilesError { } } -// UserRebaseConfirmableRequest ... +// UserRebaseConfirmableRequest is a request for the UserRebaseConfirmable RPC. message UserRebaseConfirmableRequest { // Header contains information to compute the rebase and must be sent as // first message. @@ -857,8 +893,8 @@ message UserRebaseConfirmableRequest { // repository is the repository in which the rebase will be computed and // applied. Repository repository = 1 [(target_repository)=true]; - // user is the user to compute the rebase as. It will be used as - // "committer" of rebased commits. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; // rebase_id does nothing anymore. string rebase_id = 3 [deprecated=true]; @@ -892,7 +928,7 @@ message UserRebaseConfirmableRequest { } } -// UserRebaseConfirmableResponse ... +// UserRebaseConfirmableResponse is a response for the UserRebaseConfirmable RPC. message UserRebaseConfirmableResponse { oneof user_rebase_confirmable_response_payload { // rebase_sha is the commit the branch will be updated to, it will be present @@ -902,19 +938,21 @@ message UserRebaseConfirmableResponse { // It is present in the second response. bool rebase_applied = 2; } - // pre_receive_error contains an error message if the rebase failed because - // of an error raised by hooks. - string pre_receive_error = 3; - // git_error contains an error message if git operations have failed. - string git_error = 4; + // Deprecated in favour of `UserRebaseConfirmableError`. + reserved 3; + reserved "pre_receive_error"; + // Deprecated in favour of `UserRebaseConfirmableError`. + reserved 4; + reserved "git_error"; } -// UserSquashRequest ... +// UserSquashRequest is a request for the UserSquash RPC. message UserSquashRequest { // repository is the repository into which the squashed commit shall be // written. Repository repository = 1 [(target_repository)=true]; - // user is used for authorization checks. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; // start_sha is the object ID of the start commit of the range which shall be // squashed. Must be an ancestor of end_sha. @@ -934,31 +972,30 @@ message UserSquashRequest { reserved "squash_id"; } -// UserSquashResponse ... +// UserSquashResponse is a response for the UserSquash RPC. message UserSquashResponse { // squash_sha is the object ID of the squashed commit. string squash_sha = 1; - // DEPRECATED: https://gitlab.com/gitlab-org/gitaly/proto/merge_requests/161 + // Deprecated as custom hooks aren't executed. reserved 2; reserved "pre_receive_error"; - // GitError is not used anymore. Instead, this RPC always returns a real - // error with an optional UserRebaseConfirmableError, which may be set on + // git_error is not used anymore. Instead, this RPC always returns a real + // error with an optional `UserSquashError`, which may be set on // special errors. reserved 3; reserved "git_error"; } -// UserRebaseConfirmableError ... +// UserRebaseConfirmableError is a structured error for the UserRebaseConfirmable RPC. message UserRebaseConfirmableError { oneof error { // rebase_conflict is returned in case rebasing commits on top of the start // commit fails with a merge conflict and in case merge squashing commits // fails with a merge conflict. MergeConflictError rebase_conflict = 1; - // access_checkError is returned in case GitLab's `/internal/allowed` endpoint rejected - // the change. + // access_check is set if the RPC failed due to an external access check. AccessCheckError access_check = 2; } } @@ -976,13 +1013,14 @@ message UserSquashError { } } -// UserApplyPatchRequest ... +// UserApplyPatchRequest is a request for the UserApplyPatch RPC. message UserApplyPatchRequest { // Header contains information about how to apply the patches. message Header { // repository is the repository to which the patches shall be applied to. Repository repository = 1 [(target_repository)=true]; - // user is used for authentication. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; // target_branch is the branch onto which the patches shall be applied. bytes target_branch = 3; @@ -1009,18 +1047,18 @@ message UserApplyPatchRequest { } } -// UserApplyPatchResponse ... +// UserApplyPatchResponse is a response for the UserApplyPatch RPC. message UserApplyPatchResponse { // branch_update contains information about the updated branch. OperationBranchUpdate branch_update = 1; } -// UserUpdateSubmoduleRequest ... +// UserUpdateSubmoduleRequest is a request for the UserUpdateSubmodule RPC. message UserUpdateSubmoduleRequest { // repository is the repository in which the submodule shall be updated. Repository repository = 1 [(target_repository)=true]; - // user is used both for authorization and as author/committer of the - // resulting commit. + // user to execute the action as. Also used to perform authentication and + // authorization via an external endpoint. User user = 2; // commit_sha is the object ID the submodule shall be updated to. string commit_sha = 3; @@ -1046,7 +1084,7 @@ message UserUpdateSubmoduleRequest { string expected_old_oid = 8; } -// UserUpdateSubmoduleResponse ... +// UserUpdateSubmoduleResponse is a response for the UserUpdateSubmodule RPC. message UserUpdateSubmoduleResponse { // branch_update contains information about the updated branch. OperationBranchUpdate branch_update = 1; diff --git a/proto/praefect.proto b/proto/praefect.proto index 1ec4fa11a..03aa2b22c 100644 --- a/proto/praefect.proto +++ b/proto/praefect.proto @@ -16,13 +16,6 @@ service PraefectInfoService { // RepositoryReplicas ... rpc RepositoryReplicas(RepositoryReplicasRequest) returns (RepositoryReplicasResponse); - // DatalossCheck provides information on repositories in Praefect that are in a degraded state and - // thus susceptible to dataloss. A repository is considered degraded when its replicas are - // outdated and/or unavailable. - rpc DatalossCheck(DatalossCheckRequest) returns (DatalossCheckResponse) { - option deprecated = true; - }; - // Dataloss provides information on repositories in Praefect that are in a degraded state and // thus susceptible to dataloss. A repository is considered degraded when its replicas are // outdated and/or unavailable. @@ -206,50 +199,6 @@ message DatalossResponse { repeated Repository repositories = 2; } -// DatalossCheckRequest ... -message DatalossCheckRequest { - option deprecated = true; - // virtual_storage ... - string virtual_storage = 1; - // include_partially_replicated indicates whether to include repositories which are available but - // are unavailable on some assigned storages. - bool include_partially_replicated = 2; -} - -// DatalossCheckResponse ... -message DatalossCheckResponse { - option deprecated = true; - // Repository ... - message Repository { - // Storage ... - message Storage { - // name of the storage - string name = 1; - // behind_by indicates how many generations this storage is behind. - int64 behind_by = 2; - // assigned indicates whether the storage is assigned to host the repository. - bool assigned = 3; - // healthy indicates whether the storage is considered healthy by the consensus of Praefect nodes. - bool healthy = 4; - // valid_primary indicates whether the storage is ready to act as the primary if necessary. - bool valid_primary = 5; - } - - // relative_path of the repository with outdated replicas - string relative_path = 1; - // storages on which the repository is outdated - repeated Storage storages = 2; - // unavailable indicates whether the repository is in unavailable. - bool unavailable = 3; - - // primary is the current primary storage of the repository. - string primary = 4; - } - - // repositories with data loss - repeated Repository repositories = 2; -} - // RepositoryReplicasRequest ... message RepositoryReplicasRequest{ // repository ... diff --git a/proto/ref.proto b/proto/ref.proto index 21041906e..bf6806781 100644 --- a/proto/ref.proto +++ b/proto/ref.proto @@ -178,11 +178,8 @@ message FindLocalBranchesRequest { Repository repository = 1 [(target_repository)=true]; // sort_by ... SortBy sort_by = 2; - // pagination_params is used for pagination of the objects. - // The page token is the branch name, with the `refs/heads/` prefix, for - // example "refs/heads/master". After the first branch name is encountered - // which lexicographically exceeds the page token, it will be the first result - // send as part of the response. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParameter pagination_params = 3; } @@ -273,10 +270,8 @@ message FindAllTagsRequest { Repository repository = 1 [(target_repository)=true]; // sort_by allows to request tags in particular order. SortBy sort_by = 2; - // pagination_paramsi is used for pagination of the objects. - // The page token is the tags name, with the `refs/tags/` prefix, for - // example "refs/tags/v1.0.0". When the tag name matches the page token, - // the tag following it will be the first result send as part of the response. + // pagination_params controls paging. Refer to PaginationParameter documentation for + // further info. PaginationParameter pagination_params = 3; } diff --git a/proto/shared.proto b/proto/shared.proto index 861fa7eb8..c8d172fb5 100644 --- a/proto/shared.proto +++ b/proto/shared.proto @@ -203,7 +203,7 @@ message ObjectPool { Repository repository = 1 [(gitaly.repository)=true]; } -// PaginationParameter ... +// PaginationParameter controls pagination within RPCs. message PaginationParameter { // page_token instructs pagination to start sending results after the provided page // token appears. A page token allows for a generic pattern to uniquely @@ -220,7 +220,7 @@ message PaginationParameter { int32 limit = 2; } -// PaginationCursor ... +// PaginationCursor defines the page token clients should use to fetch the next page. message PaginationCursor { // next_cursor is an opaque token provided to the caller to indicate what the caller // should present as a page_token to get subsequent results. |