// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.33.0
// 	protoc        v4.23.1
// source: operations.proto

package gitalypb

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

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

// CreateTreeError represents an error which happened when computing the
// revert.
type UserRevertResponse_CreateTreeError int32

const (
	// NONE denotes that no error occurred.
	UserRevertResponse_NONE UserRevertResponse_CreateTreeError = 0 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH
	// EMPTY denotes that the revert would've resulted in an empty commit,
	// typically because it has already been applied to the target branch.
	UserRevertResponse_EMPTY UserRevertResponse_CreateTreeError = 1 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX
	// CONFLICT denotes that the revert resulted in a conflict.
	UserRevertResponse_CONFLICT UserRevertResponse_CreateTreeError = 2 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX
)

// Enum value maps for UserRevertResponse_CreateTreeError.
var (
	UserRevertResponse_CreateTreeError_name = map[int32]string{
		0: "NONE",
		1: "EMPTY",
		2: "CONFLICT",
	}
	UserRevertResponse_CreateTreeError_value = map[string]int32{
		"NONE":     0,
		"EMPTY":    1,
		"CONFLICT": 2,
	}
)

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

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

func (UserRevertResponse_CreateTreeError) Descriptor() protoreflect.EnumDescriptor {
	return file_operations_proto_enumTypes[0].Descriptor()
}

func (UserRevertResponse_CreateTreeError) Type() protoreflect.EnumType {
	return &file_operations_proto_enumTypes[0]
}

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

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

// ActionType is the type of action to perform.
type UserCommitFilesActionHeader_ActionType int32

const (
	// CREATE creates a new file.
	UserCommitFilesActionHeader_CREATE UserCommitFilesActionHeader_ActionType = 0 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX ENUM_FIELD_NAMES_ZERO_VALUE_END_WITH
	// CREATE_DIR creates a new directory.
	UserCommitFilesActionHeader_CREATE_DIR UserCommitFilesActionHeader_ActionType = 1 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX
	// UPDATE updates an existing file.
	UserCommitFilesActionHeader_UPDATE UserCommitFilesActionHeader_ActionType = 2 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX
	// MOVE moves an existing file to a new path.
	UserCommitFilesActionHeader_MOVE UserCommitFilesActionHeader_ActionType = 3 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX
	// DELETE deletes an existing file.
	UserCommitFilesActionHeader_DELETE UserCommitFilesActionHeader_ActionType = 4 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX
	// CHMOD changes the permissions of an existing file.
	UserCommitFilesActionHeader_CHMOD UserCommitFilesActionHeader_ActionType = 5 // protolint:disable:this ENUM_FIELD_NAMES_PREFIX
)

// Enum value maps for UserCommitFilesActionHeader_ActionType.
var (
	UserCommitFilesActionHeader_ActionType_name = map[int32]string{
		0: "CREATE",
		1: "CREATE_DIR",
		2: "UPDATE",
		3: "MOVE",
		4: "DELETE",
		5: "CHMOD",
	}
	UserCommitFilesActionHeader_ActionType_value = map[string]int32{
		"CREATE":     0,
		"CREATE_DIR": 1,
		"UPDATE":     2,
		"MOVE":       3,
		"DELETE":     4,
		"CHMOD":      5,
	}
)

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

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

func (UserCommitFilesActionHeader_ActionType) Descriptor() protoreflect.EnumDescriptor {
	return file_operations_proto_enumTypes[1].Descriptor()
}

func (UserCommitFilesActionHeader_ActionType) Type() protoreflect.EnumType {
	return &file_operations_proto_enumTypes[1]
}

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

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

// UserCreateBranchRequest is a request for the UserCreateBranch RPC.
type UserCreateBranchRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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 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 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 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"`
}

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

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

func (*UserCreateBranchRequest) ProtoMessage() {}

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

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

func (x *UserCreateBranchRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserCreateBranchRequest) GetBranchName() []byte {
	if x != nil {
		return x.BranchName
	}
	return nil
}

func (x *UserCreateBranchRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserCreateBranchRequest) GetStartPoint() []byte {
	if x != nil {
		return x.StartPoint
	}
	return nil
}

// UserCreateBranchResponse is a response for the UserCreateBranch RPC.
type UserCreateBranchResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// branch is the branch that was created.
	Branch *Branch `protobuf:"bytes,1,opt,name=branch,proto3" json:"branch,omitempty"`
}

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

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

func (*UserCreateBranchResponse) ProtoMessage() {}

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

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

func (x *UserCreateBranchResponse) GetBranch() *Branch {
	if x != nil {
		return x.Branch
	}
	return nil
}

// UserCreateBranchError is an error returned by the UserCreateBranch RPC in some specific well
// defined error cases.
type UserCreateBranchError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Error:
	//
	//	*UserCreateBranchError_CustomHook
	Error isUserCreateBranchError_Error `protobuf_oneof:"error"`
}

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

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

func (*UserCreateBranchError) ProtoMessage() {}

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

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

func (m *UserCreateBranchError) GetError() isUserCreateBranchError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *UserCreateBranchError) GetCustomHook() *CustomHookError {
	if x, ok := x.GetError().(*UserCreateBranchError_CustomHook); ok {
		return x.CustomHook
	}
	return nil
}

type isUserCreateBranchError_Error interface {
	isUserCreateBranchError_Error()
}

type UserCreateBranchError_CustomHook struct {
	// custom_hookError is set if any custom hook which has running as part of
	// this RPC call has returned a non-zero exit code.
	CustomHook *CustomHookError `protobuf:"bytes,1,opt,name=custom_hook,json=customHook,proto3,oneof"`
}

func (*UserCreateBranchError_CustomHook) isUserCreateBranchError_Error() {}

// UserUpdateBranchRequest is a request for the UserUpdateBranch RPC.
type UserUpdateBranchRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// repository is the repository to update the branch in.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// 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 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 is the Git revision which the branch will point to.
	Newrev []byte `protobuf:"bytes,4,opt,name=newrev,proto3" json:"newrev,omitempty"`
	// oldrev is the Git revision which the branch currently points to.
	Oldrev []byte `protobuf:"bytes,5,opt,name=oldrev,proto3" json:"oldrev,omitempty"`
}

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

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

func (*UserUpdateBranchRequest) ProtoMessage() {}

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

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

func (x *UserUpdateBranchRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserUpdateBranchRequest) GetBranchName() []byte {
	if x != nil {
		return x.BranchName
	}
	return nil
}

func (x *UserUpdateBranchRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserUpdateBranchRequest) GetNewrev() []byte {
	if x != nil {
		return x.Newrev
	}
	return nil
}

func (x *UserUpdateBranchRequest) GetOldrev() []byte {
	if x != nil {
		return x.Oldrev
	}
	return nil
}

// UserUpdateBranchResponse is a response for the UserUpdateBranch RPC.
type UserUpdateBranchResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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"`
}

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

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

func (*UserUpdateBranchResponse) ProtoMessage() {}

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

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

func (x *UserUpdateBranchResponse) GetPreReceiveError() string {
	if x != nil {
		return x.PreReceiveError
	}
	return ""
}

// UserDeleteBranchRequest is a request for the UserDeleteBranch RPC.
type UserDeleteBranchRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// repository is the repository to delete the branch in.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// branch_name is the name of the branch that shall be deleted. This is expected to be the branch
	// 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 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
	// updated meanwhile to point to a different object ID.
	//
	// If unset, the target branch will be deleted regardless of its current
	// state. If set, it must either contain a valid, full object ID. Otherwise, this
	// RPC will return an error.
	ExpectedOldOid string `protobuf:"bytes,4,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"`
}

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

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

func (*UserDeleteBranchRequest) ProtoMessage() {}

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

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

func (x *UserDeleteBranchRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserDeleteBranchRequest) GetBranchName() []byte {
	if x != nil {
		return x.BranchName
	}
	return nil
}

func (x *UserDeleteBranchRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserDeleteBranchRequest) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

// UserDeleteBranchResponse is a response for the UserDeleteBranch RPC.
type UserDeleteBranchResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields
}

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

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

func (*UserDeleteBranchResponse) ProtoMessage() {}

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

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

// UserDeleteBranchError is an error returned by the UserDeleteBranch RPC in some specific well
// defined error cases.
type UserDeleteBranchError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Error:
	//
	//	*UserDeleteBranchError_AccessCheck
	//	*UserDeleteBranchError_ReferenceUpdate
	//	*UserDeleteBranchError_CustomHook
	Error isUserDeleteBranchError_Error `protobuf_oneof:"error"`
}

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

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

func (*UserDeleteBranchError) ProtoMessage() {}

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

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

func (m *UserDeleteBranchError) GetError() isUserDeleteBranchError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *UserDeleteBranchError) GetAccessCheck() *AccessCheckError {
	if x, ok := x.GetError().(*UserDeleteBranchError_AccessCheck); ok {
		return x.AccessCheck
	}
	return nil
}

func (x *UserDeleteBranchError) GetReferenceUpdate() *ReferenceUpdateError {
	if x, ok := x.GetError().(*UserDeleteBranchError_ReferenceUpdate); ok {
		return x.ReferenceUpdate
	}
	return nil
}

func (x *UserDeleteBranchError) GetCustomHook() *CustomHookError {
	if x, ok := x.GetError().(*UserDeleteBranchError_CustomHook); ok {
		return x.CustomHook
	}
	return nil
}

type isUserDeleteBranchError_Error interface {
	isUserDeleteBranchError_Error()
}

type UserDeleteBranchError_AccessCheck struct {
	// 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"`
}

type UserDeleteBranchError_ReferenceUpdate struct {
	// reference_updateError is set if the RPC failed because updating the
	// reference to the new object ID has failed.
	ReferenceUpdate *ReferenceUpdateError `protobuf:"bytes,2,opt,name=reference_update,json=referenceUpdate,proto3,oneof"`
}

type UserDeleteBranchError_CustomHook struct {
	// custom_hook is set if any custom hook which has running as part of this RPC call has returned
	// a non-zero exit code.
	CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"`
}

func (*UserDeleteBranchError_AccessCheck) isUserDeleteBranchError_Error() {}

func (*UserDeleteBranchError_ReferenceUpdate) isUserDeleteBranchError_Error() {}

func (*UserDeleteBranchError_CustomHook) isUserDeleteBranchError_Error() {}

// UserDeleteTagRequest is a request for the UserDeleteTag RPC.
type UserDeleteTagRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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 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 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
	// updated meanwhile to point to a different object ID.
	//
	// If unset, the target tag will be deleted regardless of its current
	// state. If set, it must either contain a valid, full object ID. Otherwise,
	// this RPC will return an error.
	ExpectedOldOid string `protobuf:"bytes,4,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"`
}

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

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

func (*UserDeleteTagRequest) ProtoMessage() {}

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

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

func (x *UserDeleteTagRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserDeleteTagRequest) GetTagName() []byte {
	if x != nil {
		return x.TagName
	}
	return nil
}

func (x *UserDeleteTagRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserDeleteTagRequest) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

// UserDeleteTagResponse is a response for the UserDeleteTag RPC.
type UserDeleteTagResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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"`
}

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

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

func (*UserDeleteTagResponse) ProtoMessage() {}

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

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

func (x *UserDeleteTagResponse) GetPreReceiveError() string {
	if x != nil {
		return x.PreReceiveError
	}
	return ""
}

// UserCreateTagRequest is a request for the UserCreateTag RPC.
type UserCreateTagRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// repository is the repository in which the tag shall be created.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// 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 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
	// target_revision does not point to a commit then the RPC will return an error.
	TargetRevision []byte `protobuf:"bytes,4,opt,name=target_revision,json=targetRevision,proto3" json:"target_revision,omitempty"`
	// message is the message of the tag. If it is empty, a lightweight tag is created. Otherwise, an
	// annotated tag is created.
	Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
	// timestamp is the optional timestamp to use for the created tag tags. If it's not set, the
	// current time will be used. It's only used if an annotated tag is being created.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
}

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

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

func (*UserCreateTagRequest) ProtoMessage() {}

func (x *UserCreateTagRequest) ProtoReflect() protoreflect.Message {
	mi := &file_operations_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 UserCreateTagRequest.ProtoReflect.Descriptor instead.
func (*UserCreateTagRequest) Descriptor() ([]byte, []int) {
	return file_operations_proto_rawDescGZIP(), []int{10}
}

func (x *UserCreateTagRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserCreateTagRequest) GetTagName() []byte {
	if x != nil {
		return x.TagName
	}
	return nil
}

func (x *UserCreateTagRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserCreateTagRequest) GetTargetRevision() []byte {
	if x != nil {
		return x.TargetRevision
	}
	return nil
}

func (x *UserCreateTagRequest) GetMessage() []byte {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *UserCreateTagRequest) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

// UserCreateTagResponse is a response for the UserCreateTag RPC.
type UserCreateTagResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// tag is the newly created tag.
	Tag *Tag `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
}

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

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

func (*UserCreateTagResponse) ProtoMessage() {}

func (x *UserCreateTagResponse) ProtoReflect() protoreflect.Message {
	mi := &file_operations_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 UserCreateTagResponse.ProtoReflect.Descriptor instead.
func (*UserCreateTagResponse) Descriptor() ([]byte, []int) {
	return file_operations_proto_rawDescGZIP(), []int{11}
}

func (x *UserCreateTagResponse) GetTag() *Tag {
	if x != nil {
		return x.Tag
	}
	return nil
}

// UserCreateTagError includes error descriptions which may be set as error details in case
// userCreateTag fails.
type UserCreateTagError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Error:
	//
	//	*UserCreateTagError_AccessCheck
	//	*UserCreateTagError_ReferenceUpdate
	//	*UserCreateTagError_CustomHook
	//	*UserCreateTagError_ReferenceExists
	Error isUserCreateTagError_Error `protobuf_oneof:"error"`
}

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

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

func (*UserCreateTagError) ProtoMessage() {}

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

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

func (m *UserCreateTagError) GetError() isUserCreateTagError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *UserCreateTagError) GetAccessCheck() *AccessCheckError {
	if x, ok := x.GetError().(*UserCreateTagError_AccessCheck); ok {
		return x.AccessCheck
	}
	return nil
}

func (x *UserCreateTagError) GetReferenceUpdate() *ReferenceUpdateError {
	if x, ok := x.GetError().(*UserCreateTagError_ReferenceUpdate); ok {
		return x.ReferenceUpdate
	}
	return nil
}

func (x *UserCreateTagError) GetCustomHook() *CustomHookError {
	if x, ok := x.GetError().(*UserCreateTagError_CustomHook); ok {
		return x.CustomHook
	}
	return nil
}

func (x *UserCreateTagError) GetReferenceExists() *ReferenceExistsError {
	if x, ok := x.GetError().(*UserCreateTagError_ReferenceExists); ok {
		return x.ReferenceExists
	}
	return nil
}

type isUserCreateTagError_Error interface {
	isUserCreateTagError_Error()
}

type UserCreateTagError_AccessCheck struct {
	// 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"`
}

type UserCreateTagError_ReferenceUpdate struct {
	// reference_updateError is set if the RPC failed because updating the
	// reference to the new object ID has failed.
	ReferenceUpdate *ReferenceUpdateError `protobuf:"bytes,2,opt,name=reference_update,json=referenceUpdate,proto3,oneof"`
}

type UserCreateTagError_CustomHook struct {
	// custom_hook is set if any custom hook which has running as part of this RPC call has returned
	// a non-zero exit code.
	CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"`
}

type UserCreateTagError_ReferenceExists struct {
	// reference_existsError is set if the tag reference exists already.
	ReferenceExists *ReferenceExistsError `protobuf:"bytes,4,opt,name=reference_exists,json=referenceExists,proto3,oneof"`
}

func (*UserCreateTagError_AccessCheck) isUserCreateTagError_Error() {}

func (*UserCreateTagError_ReferenceUpdate) isUserCreateTagError_Error() {}

func (*UserCreateTagError_CustomHook) isUserCreateTagError_Error() {}

func (*UserCreateTagError_ReferenceExists) isUserCreateTagError_Error() {}

// 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
	unknownFields protoimpl.UnknownFields

	// repository is the repository to compute the merge for.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// 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.
	CommitId string `protobuf:"bytes,3,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
	// branch is the branch into which the given commit shall be merged and whose
	// reference is going to be updated.
	Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"`
	// message is the message to use for the merge commit.
	Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
	// timestamp is the optional timestamp to use for the merge commit. If it's
	// not set, the current time will be used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,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
	// updated meanwhile to point to a different object ID.
	//
	// If unset, the target branch will be overwritten regardless of its current
	// state. If set, it must either contain a valid, full object ID  or the
	// 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 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"`
}

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

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

func (*UserMergeBranchRequest) ProtoMessage() {}

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

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

func (x *UserMergeBranchRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserMergeBranchRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserMergeBranchRequest) GetCommitId() string {
	if x != nil {
		return x.CommitId
	}
	return ""
}

func (x *UserMergeBranchRequest) GetBranch() []byte {
	if x != nil {
		return x.Branch
	}
	return nil
}

func (x *UserMergeBranchRequest) GetMessage() []byte {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *UserMergeBranchRequest) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

func (x *UserMergeBranchRequest) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

func (x *UserMergeBranchRequest) GetApply() bool {
	if x != nil {
		return x.Apply
	}
	return false
}

// 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. 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 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"`
}

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

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

func (*UserMergeBranchResponse) ProtoMessage() {}

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

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

func (x *UserMergeBranchResponse) GetCommitId() string {
	if x != nil {
		return x.CommitId
	}
	return ""
}

func (x *UserMergeBranchResponse) GetBranchUpdate() *OperationBranchUpdate {
	if x != nil {
		return x.BranchUpdate
	}
	return nil
}

// UserMergeBranchError includes error descriptions which may be set as error
// details in case UserMergeBranch fails.
type UserMergeBranchError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Error:
	//
	//	*UserMergeBranchError_AccessCheck
	//	*UserMergeBranchError_ReferenceUpdate
	//	*UserMergeBranchError_CustomHook
	//	*UserMergeBranchError_MergeConflict
	Error isUserMergeBranchError_Error `protobuf_oneof:"error"`
}

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

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

func (*UserMergeBranchError) ProtoMessage() {}

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

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

func (m *UserMergeBranchError) GetError() isUserMergeBranchError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *UserMergeBranchError) GetAccessCheck() *AccessCheckError {
	if x, ok := x.GetError().(*UserMergeBranchError_AccessCheck); ok {
		return x.AccessCheck
	}
	return nil
}

func (x *UserMergeBranchError) GetReferenceUpdate() *ReferenceUpdateError {
	if x, ok := x.GetError().(*UserMergeBranchError_ReferenceUpdate); ok {
		return x.ReferenceUpdate
	}
	return nil
}

func (x *UserMergeBranchError) GetCustomHook() *CustomHookError {
	if x, ok := x.GetError().(*UserMergeBranchError_CustomHook); ok {
		return x.CustomHook
	}
	return nil
}

func (x *UserMergeBranchError) GetMergeConflict() *MergeConflictError {
	if x, ok := x.GetError().(*UserMergeBranchError_MergeConflict); ok {
		return x.MergeConflict
	}
	return nil
}

type isUserMergeBranchError_Error interface {
	isUserMergeBranchError_Error()
}

type UserMergeBranchError_AccessCheck struct {
	// 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"`
}

type UserMergeBranchError_ReferenceUpdate struct {
	// reference_updateError is set if the RPC failed because updating the
	// reference to the new object ID has failed.
	ReferenceUpdate *ReferenceUpdateError `protobuf:"bytes,2,opt,name=reference_update,json=referenceUpdate,proto3,oneof"`
}

type UserMergeBranchError_CustomHook struct {
	// custom_hook is set if any custom hook which has running as part of this RPC call has returned
	// a non-zero exit code.
	CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"`
}

type UserMergeBranchError_MergeConflict struct {
	// merge_conflictError is set if merging the revisions has resulted in conflicting files.
	MergeConflict *MergeConflictError `protobuf:"bytes,4,opt,name=merge_conflict,json=mergeConflict,proto3,oneof"`
}

func (*UserMergeBranchError_AccessCheck) isUserMergeBranchError_Error() {}

func (*UserMergeBranchError_ReferenceUpdate) isUserMergeBranchError_Error() {}

func (*UserMergeBranchError_CustomHook) isUserMergeBranchError_Error() {}

func (*UserMergeBranchError_MergeConflict) isUserMergeBranchError_Error() {}

// UserMergeToRefRequest is a request for the UserMergeToRef RPC.
type UserMergeToRefRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// repository is the repository in which the merge shall be computed.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// 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.
	TargetRef []byte `protobuf:"bytes,5,opt,name=target_ref,json=targetRef,proto3" json:"target_ref,omitempty"`
	// message is the message to use for the merge commit.
	Message []byte `protobuf:"bytes,6,opt,name=message,proto3" json:"message,omitempty"`
	// first_parent_ref is the name of the reference which should be used as the
	// first parent of the computed merge. Overrides `branch`.
	FirstParentRef []byte `protobuf:"bytes,7,opt,name=first_parent_ref,json=firstParentRef,proto3" json:"first_parent_ref,omitempty"`
	// allow_conflicts if set, used to allow the merge to go ahead when there were
	// conflicts.  The code would simply write the conflict markers in the code.
	// This has since been deprecated in Rails and is no longer needed.
	//
	// Deprecated: Marked as deprecated in operations.proto.
	AllowConflicts bool `protobuf:"varint,8,opt,name=allow_conflicts,json=allowConflicts,proto3" json:"allow_conflicts,omitempty"`
	// timestamp is the optional timestamp to use for the merge commit. If it's
	// not set, the current time will be used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	// expected_old_oid is the object ID that is expected to be at target_ref. It
	// is used as an optimistic lock on concurrent updates of target_ref: If
	// target_ref no longer points to this ID, then the update is rejected.
	//
	// 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
	// updated meanwhile to point to a different object ID.
	//
	// If unset, the target branch will be overwritten regardless of its current
	// state. If set, it must either contain a valid, full object ID  or the
	// zero object ID in case the branch should be created. Otherwise, this RPC
	// will return an error.
	ExpectedOldOid string `protobuf:"bytes,10,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"`
}

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

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

func (*UserMergeToRefRequest) ProtoMessage() {}

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

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

func (x *UserMergeToRefRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserMergeToRefRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserMergeToRefRequest) GetSourceSha() string {
	if x != nil {
		return x.SourceSha
	}
	return ""
}

// Deprecated: Marked as deprecated in operations.proto.
func (x *UserMergeToRefRequest) GetBranch() []byte {
	if x != nil {
		return x.Branch
	}
	return nil
}

func (x *UserMergeToRefRequest) GetTargetRef() []byte {
	if x != nil {
		return x.TargetRef
	}
	return nil
}

func (x *UserMergeToRefRequest) GetMessage() []byte {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *UserMergeToRefRequest) GetFirstParentRef() []byte {
	if x != nil {
		return x.FirstParentRef
	}
	return nil
}

// Deprecated: Marked as deprecated in operations.proto.
func (x *UserMergeToRefRequest) GetAllowConflicts() bool {
	if x != nil {
		return x.AllowConflicts
	}
	return false
}

func (x *UserMergeToRefRequest) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

func (x *UserMergeToRefRequest) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

// UserMergeToRefResponse is a response for the UserMergeToRef RPC.
type UserMergeToRefResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// commit_id is the object ID of the computed merge commit.
	CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
}

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

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

func (*UserMergeToRefResponse) ProtoMessage() {}

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

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

func (x *UserMergeToRefResponse) GetCommitId() string {
	if x != nil {
		return x.CommitId
	}
	return ""
}

// UserRebaseToRefRequest contains the request parameters for the UserRebaseToRef RPC
type UserRebaseToRefRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// repository is the repository in which the rebase shall be computed.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// 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"`
	// target_ref is the fully qualified reference that will be overwritten or created
	// with the rebased commits.
	TargetRef []byte `protobuf:"bytes,5,opt,name=target_ref,json=targetRef,proto3" json:"target_ref,omitempty"`
	// first_parent_ref is the name of the reference on top of which SourceSha
	// should be rebased.
	FirstParentRef []byte `protobuf:"bytes,7,opt,name=first_parent_ref,json=firstParentRef,proto3" json:"first_parent_ref,omitempty"`
	// timestamp is the optional timestamp to use for the rebased commits as
	// committer date. If it's not set, the current time will be used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	// expected_old_oid is the object ID to which TargetRef is expected to point.
	// This is used as a safety guard to avoid races when TargetRef has been
	// updated meanwhile to point to a different object ID.
	//
	// If unset, TargetRef will be overwritten regardless of its current state.
	// If set, it must either contain a valid, full object ID or the zero object
	// ID in case the ref should be created. Otherwise, this RPC will return an
	// error.
	ExpectedOldOid string `protobuf:"bytes,10,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"`
}

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

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

func (*UserRebaseToRefRequest) ProtoMessage() {}

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

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

func (x *UserRebaseToRefRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserRebaseToRefRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserRebaseToRefRequest) GetSourceSha() string {
	if x != nil {
		return x.SourceSha
	}
	return ""
}

func (x *UserRebaseToRefRequest) GetTargetRef() []byte {
	if x != nil {
		return x.TargetRef
	}
	return nil
}

func (x *UserRebaseToRefRequest) GetFirstParentRef() []byte {
	if x != nil {
		return x.FirstParentRef
	}
	return nil
}

func (x *UserRebaseToRefRequest) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

func (x *UserRebaseToRefRequest) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

// UserRebaseToRefResponse contains the response data for the UserRebaseToRef RPC
type UserRebaseToRefResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// commit_id is the object ID of the HEAD of the rebased ref.
	CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
}

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

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

func (*UserRebaseToRefResponse) ProtoMessage() {}

func (x *UserRebaseToRefResponse) ProtoReflect() protoreflect.Message {
	mi := &file_operations_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 UserRebaseToRefResponse.ProtoReflect.Descriptor instead.
func (*UserRebaseToRefResponse) Descriptor() ([]byte, []int) {
	return file_operations_proto_rawDescGZIP(), []int{19}
}

func (x *UserRebaseToRefResponse) GetCommitId() string {
	if x != nil {
		return x.CommitId
	}
	return ""
}

// OperationBranchUpdate contains the details of a branch update.
type OperationBranchUpdate struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// commit_id is set to the OID of the created commit if a branch was created or updated.
	CommitId string `protobuf:"bytes,1,opt,name=commit_id,json=commitId,proto3" json:"commit_id,omitempty"`
	// repo_created indicates whether the branch created was the first one in the repository.
	// Used for cache invalidation in GitLab.
	RepoCreated bool `protobuf:"varint,2,opt,name=repo_created,json=repoCreated,proto3" json:"repo_created,omitempty"`
	// branch_created indicates whether the branch already existed in the repository
	// and was updated or whether it was created. Used for cache invalidation in GitLab.
	BranchCreated bool `protobuf:"varint,3,opt,name=branch_created,json=branchCreated,proto3" json:"branch_created,omitempty"`
}

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

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

func (*OperationBranchUpdate) ProtoMessage() {}

func (x *OperationBranchUpdate) ProtoReflect() protoreflect.Message {
	mi := &file_operations_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 OperationBranchUpdate.ProtoReflect.Descriptor instead.
func (*OperationBranchUpdate) Descriptor() ([]byte, []int) {
	return file_operations_proto_rawDescGZIP(), []int{20}
}

func (x *OperationBranchUpdate) GetCommitId() string {
	if x != nil {
		return x.CommitId
	}
	return ""
}

func (x *OperationBranchUpdate) GetRepoCreated() bool {
	if x != nil {
		return x.RepoCreated
	}
	return false
}

func (x *OperationBranchUpdate) GetBranchCreated() bool {
	if x != nil {
		return x.BranchCreated
	}
	return false
}

// UserFFBranchRequest is a request for the UserFFBranch RPC.
type UserFFBranchRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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 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 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 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"`
	// 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
	// updated meanwhile to point to a different object ID.
	//
	// If unset, the target branch will be overwritten regardless of its current
	// state. If set, it must either contain a valid, full object ID  or the
	// zero object ID in case the branch should be created. Otherwise, this RPC
	// will return an error.
	ExpectedOldOid string `protobuf:"bytes,5,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"`
}

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

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

func (*UserFFBranchRequest) ProtoMessage() {}

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

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

func (x *UserFFBranchRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserFFBranchRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserFFBranchRequest) GetCommitId() string {
	if x != nil {
		return x.CommitId
	}
	return ""
}

func (x *UserFFBranchRequest) GetBranch() []byte {
	if x != nil {
		return x.Branch
	}
	return nil
}

func (x *UserFFBranchRequest) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

// UserFFBranchResponse is a response for the UserFFBranch RPC.
type UserFFBranchResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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 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"`
}

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

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

func (*UserFFBranchResponse) ProtoMessage() {}

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

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

func (x *UserFFBranchResponse) GetBranchUpdate() *OperationBranchUpdate {
	if x != nil {
		return x.BranchUpdate
	}
	return nil
}

func (x *UserFFBranchResponse) GetPreReceiveError() string {
	if x != nil {
		return x.PreReceiveError
	}
	return ""
}

// UserCherryPickRequest is a request for the UserCherryPick RPC.
type UserCherryPickRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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 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"`
	// branch_name is the name of the branch onto which the cherry-pick shall be
	// executed.
	BranchName []byte `protobuf:"bytes,4,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"`
	// message is the message to use for the cherry-picked commit.
	Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
	// start_branch_name is is used in case the branch_name branch does not
	// exist. In that case, it will be created from the start_branch_name.
	StartBranchName []byte `protobuf:"bytes,6,opt,name=start_branch_name,json=startBranchName,proto3" json:"start_branch_name,omitempty"`
	// start_repository is used in case the branch_name branch does not exist. In
	// that case, it will be created from start_branch_name in the
	// start_repository.
	StartRepository *Repository `protobuf:"bytes,7,opt,name=start_repository,json=startRepository,proto3" json:"start_repository,omitempty"`
	// dry_run will compute the cherry-pick, but not update the target branch.
	DryRun bool `protobuf:"varint,8,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
	// timestamp is the optional timestamp to use for the created cherry-picked
	// commit's committer date. If it's not set, the current time will be used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,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
	// updated meanwhile to point to a different object ID. Only applicable when
	// branch_name is set.
	//
	// If unset, the target branch will be overwritten regardless of its current
	// state. If set, it must either contain a valid, full object ID  or the
	// zero object ID in case the branch should be created. Otherwise, this RPC
	// will return an error.
	ExpectedOldOid string `protobuf:"bytes,10,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"`
	// commit_author_name is the author to be applied to the cherry-picked commit. If not provided, the original commit's author name is
	// used instead.
	CommitAuthorName []byte `protobuf:"bytes,11,opt,name=commit_author_name,json=commitAuthorName,proto3" json:"commit_author_name,omitempty"`
	// commit_author_email is the author email to be applied to the cherry-picked commit. If not provided, the original commit's author email is
	// used instead.
	CommitAuthorEmail []byte `protobuf:"bytes,12,opt,name=commit_author_email,json=commitAuthorEmail,proto3" json:"commit_author_email,omitempty"`
}

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

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

func (*UserCherryPickRequest) ProtoMessage() {}

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

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

func (x *UserCherryPickRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserCherryPickRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserCherryPickRequest) GetCommit() *GitCommit {
	if x != nil {
		return x.Commit
	}
	return nil
}

func (x *UserCherryPickRequest) GetBranchName() []byte {
	if x != nil {
		return x.BranchName
	}
	return nil
}

func (x *UserCherryPickRequest) GetMessage() []byte {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *UserCherryPickRequest) GetStartBranchName() []byte {
	if x != nil {
		return x.StartBranchName
	}
	return nil
}

func (x *UserCherryPickRequest) GetStartRepository() *Repository {
	if x != nil {
		return x.StartRepository
	}
	return nil
}

func (x *UserCherryPickRequest) GetDryRun() bool {
	if x != nil {
		return x.DryRun
	}
	return false
}

func (x *UserCherryPickRequest) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

func (x *UserCherryPickRequest) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

func (x *UserCherryPickRequest) GetCommitAuthorName() []byte {
	if x != nil {
		return x.CommitAuthorName
	}
	return nil
}

func (x *UserCherryPickRequest) GetCommitAuthorEmail() []byte {
	if x != nil {
		return x.CommitAuthorEmail
	}
	return nil
}

// UserCherryPickResponse is a response for the UserCherryPick RPC.
type UserCherryPickResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// branch_update represents details about the updated branch.
	BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"`
}

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

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

func (*UserCherryPickResponse) ProtoMessage() {}

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

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

func (x *UserCherryPickResponse) GetBranchUpdate() *OperationBranchUpdate {
	if x != nil {
		return x.BranchUpdate
	}
	return nil
}

// UserCherryPickError is an error returned by the UserCherryPick RPC.
type UserCherryPickError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Error:
	//
	//	*UserCherryPickError_CherryPickConflict
	//	*UserCherryPickError_TargetBranchDiverged
	//	*UserCherryPickError_ChangesAlreadyApplied
	//	*UserCherryPickError_AccessCheck
	Error isUserCherryPickError_Error `protobuf_oneof:"error"`
}

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

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

func (*UserCherryPickError) ProtoMessage() {}

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

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

func (m *UserCherryPickError) GetError() isUserCherryPickError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *UserCherryPickError) GetCherryPickConflict() *MergeConflictError {
	if x, ok := x.GetError().(*UserCherryPickError_CherryPickConflict); ok {
		return x.CherryPickConflict
	}
	return nil
}

func (x *UserCherryPickError) GetTargetBranchDiverged() *NotAncestorError {
	if x, ok := x.GetError().(*UserCherryPickError_TargetBranchDiverged); ok {
		return x.TargetBranchDiverged
	}
	return nil
}

func (x *UserCherryPickError) GetChangesAlreadyApplied() *ChangesAlreadyAppliedError {
	if x, ok := x.GetError().(*UserCherryPickError_ChangesAlreadyApplied); ok {
		return x.ChangesAlreadyApplied
	}
	return nil
}

func (x *UserCherryPickError) GetAccessCheck() *AccessCheckError {
	if x, ok := x.GetError().(*UserCherryPickError_AccessCheck); ok {
		return x.AccessCheck
	}
	return nil
}

type isUserCherryPickError_Error interface {
	isUserCherryPickError_Error()
}

type UserCherryPickError_CherryPickConflict struct {
	// cherry_pick_conflict is returned if there is a conflict when applying the cherry
	// pick.
	CherryPickConflict *MergeConflictError `protobuf:"bytes,1,opt,name=cherry_pick_conflict,json=cherryPickConflict,proto3,oneof"`
}

type UserCherryPickError_TargetBranchDiverged struct {
	// target_branch_diverged is returned whenever the tip commit of the branch we're
	// about to apply the new commit on is not a direct ancestor of the newly created
	// cherry-picked commit. This may happen either due to a race where the reference
	// is modified while we compute the cherry-picked commit, or alternatively if the
	// commit fetched from the start branch of the remote repository is not an ancestor
	// of of the local target branch.
	TargetBranchDiverged *NotAncestorError `protobuf:"bytes,2,opt,name=target_branch_diverged,json=targetBranchDiverged,proto3,oneof"`
}

type UserCherryPickError_ChangesAlreadyApplied struct {
	// changes_already_applied is returned if the result after applying the cherry pick is empty.
	ChangesAlreadyApplied *ChangesAlreadyAppliedError `protobuf:"bytes,3,opt,name=changes_already_applied,json=changesAlreadyApplied,proto3,oneof"`
}

type UserCherryPickError_AccessCheck struct {
	// 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"`
}

func (*UserCherryPickError_CherryPickConflict) isUserCherryPickError_Error() {}

func (*UserCherryPickError_TargetBranchDiverged) isUserCherryPickError_Error() {}

func (*UserCherryPickError_ChangesAlreadyApplied) isUserCherryPickError_Error() {}

func (*UserCherryPickError_AccessCheck) isUserCherryPickError_Error() {}

// UserRevertRequest is a request for the UserRevert RPC.
type UserRevertRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// repository is the repository in which the revert shall be applied.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// 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 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.
	BranchName []byte `protobuf:"bytes,4,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"`
	// message is the message to use for the revert commit.
	Message []byte `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
	// start_branch_name is is used in case the branch_name branch does not
	// exist. In that case, it will be created from the start_branch_name.
	StartBranchName []byte `protobuf:"bytes,6,opt,name=start_branch_name,json=startBranchName,proto3" json:"start_branch_name,omitempty"`
	// start_repository is used in case the branch_name branch does not exist. In
	// that case, it will be created from start_branch_name in the
	// start_repository.
	StartRepository *Repository `protobuf:"bytes,7,opt,name=start_repository,json=startRepository,proto3" json:"start_repository,omitempty"`
	// dry_run  will compute the revert, but not update the target branch.
	DryRun bool `protobuf:"varint,8,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
	// timestamp is the optional timestamp to use for the created cherry-picked
	// commit's committer date. If it's not set, the current time will be used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,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
	// updated meanwhile to point to a different object ID. Only applicable when
	// branch_name is set.
	//
	// If unset, the target branch will be overwritten regardless of its current
	// state. If set, it must either contain a valid, full object ID  or the
	// zero object ID in case the branch should be created. Otherwise, this RPC
	// will return an error.
	ExpectedOldOid string `protobuf:"bytes,10,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"`
}

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

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

func (*UserRevertRequest) ProtoMessage() {}

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

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

func (x *UserRevertRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserRevertRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserRevertRequest) GetCommit() *GitCommit {
	if x != nil {
		return x.Commit
	}
	return nil
}

func (x *UserRevertRequest) GetBranchName() []byte {
	if x != nil {
		return x.BranchName
	}
	return nil
}

func (x *UserRevertRequest) GetMessage() []byte {
	if x != nil {
		return x.Message
	}
	return nil
}

func (x *UserRevertRequest) GetStartBranchName() []byte {
	if x != nil {
		return x.StartBranchName
	}
	return nil
}

func (x *UserRevertRequest) GetStartRepository() *Repository {
	if x != nil {
		return x.StartRepository
	}
	return nil
}

func (x *UserRevertRequest) GetDryRun() bool {
	if x != nil {
		return x.DryRun
	}
	return false
}

func (x *UserRevertRequest) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

func (x *UserRevertRequest) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

// UserRevertResponse is a response for the UserRevert RPC.
type UserRevertResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// branch_update represents details about the updated branch.
	BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"`
	// create_tree_error contains the error message if creation of the tree
	// failed.
	CreateTreeError string `protobuf:"bytes,2,opt,name=create_tree_error,json=createTreeError,proto3" json:"create_tree_error,omitempty"`
	// commit_error contains the error message if updating the reference failed.
	CommitError string `protobuf:"bytes,3,opt,name=commit_error,json=commitError,proto3" json:"commit_error,omitempty"`
	// pre_receive_error contains the error message if the pre-receive hook
	// failed.
	PreReceiveError string `protobuf:"bytes,4,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"`
	// create_tree_error_code contains the error code if creation of the tree
	// failed.
	CreateTreeErrorCode UserRevertResponse_CreateTreeError `protobuf:"varint,5,opt,name=create_tree_error_code,json=createTreeErrorCode,proto3,enum=gitaly.UserRevertResponse_CreateTreeError" json:"create_tree_error_code,omitempty"`
}

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

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

func (*UserRevertResponse) ProtoMessage() {}

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

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

func (x *UserRevertResponse) GetBranchUpdate() *OperationBranchUpdate {
	if x != nil {
		return x.BranchUpdate
	}
	return nil
}

func (x *UserRevertResponse) GetCreateTreeError() string {
	if x != nil {
		return x.CreateTreeError
	}
	return ""
}

func (x *UserRevertResponse) GetCommitError() string {
	if x != nil {
		return x.CommitError
	}
	return ""
}

func (x *UserRevertResponse) GetPreReceiveError() string {
	if x != nil {
		return x.PreReceiveError
	}
	return ""
}

func (x *UserRevertResponse) GetCreateTreeErrorCode() UserRevertResponse_CreateTreeError {
	if x != nil {
		return x.CreateTreeErrorCode
	}
	return UserRevertResponse_NONE
}

// UserRevertError is an error returned by the UserRevert RPC.
type UserRevertError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Error:
	//
	//	*UserRevertError_MergeConflict
	//	*UserRevertError_ChangesAlreadyApplied
	//	*UserRevertError_CustomHook
	//	*UserRevertError_NotAncestor
	Error isUserRevertError_Error `protobuf_oneof:"error"`
}

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

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

func (*UserRevertError) ProtoMessage() {}

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

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

func (m *UserRevertError) GetError() isUserRevertError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *UserRevertError) GetMergeConflict() *MergeConflictError {
	if x, ok := x.GetError().(*UserRevertError_MergeConflict); ok {
		return x.MergeConflict
	}
	return nil
}

func (x *UserRevertError) GetChangesAlreadyApplied() *ChangesAlreadyAppliedError {
	if x, ok := x.GetError().(*UserRevertError_ChangesAlreadyApplied); ok {
		return x.ChangesAlreadyApplied
	}
	return nil
}

func (x *UserRevertError) GetCustomHook() *CustomHookError {
	if x, ok := x.GetError().(*UserRevertError_CustomHook); ok {
		return x.CustomHook
	}
	return nil
}

func (x *UserRevertError) GetNotAncestor() *NotAncestorError {
	if x, ok := x.GetError().(*UserRevertError_NotAncestor); ok {
		return x.NotAncestor
	}
	return nil
}

type isUserRevertError_Error interface {
	isUserRevertError_Error()
}

type UserRevertError_MergeConflict struct {
	// merge_conflict is returned if there is a conflict when applying the revert.
	MergeConflict *MergeConflictError `protobuf:"bytes,1,opt,name=merge_conflict,json=mergeConflict,proto3,oneof"`
}

type UserRevertError_ChangesAlreadyApplied struct {
	// changes_already_applied is returned if the result after applying the revert is empty.
	ChangesAlreadyApplied *ChangesAlreadyAppliedError `protobuf:"bytes,2,opt,name=changes_already_applied,json=changesAlreadyApplied,proto3,oneof"`
}

type UserRevertError_CustomHook struct {
	// custom_hook contains the error message if the pre-receive hook failed.
	CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"`
}

type UserRevertError_NotAncestor struct {
	// not_ancestor is returned if the old tip of the target branch is not an ancestor of the new commit.
	NotAncestor *NotAncestorError `protobuf:"bytes,4,opt,name=not_ancestor,json=notAncestor,proto3,oneof"`
}

func (*UserRevertError_MergeConflict) isUserRevertError_Error() {}

func (*UserRevertError_ChangesAlreadyApplied) isUserRevertError_Error() {}

func (*UserRevertError_CustomHook) isUserRevertError_Error() {}

func (*UserRevertError_NotAncestor) isUserRevertError_Error() {}

// UserCommitFilesActionHeader contains the details of the action to be performed.
type UserCommitFilesActionHeader struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// action is the type of the action taken to build a commit. Not all fields are
	// used for all of the actions.
	Action UserCommitFilesActionHeader_ActionType `protobuf:"varint,1,opt,name=action,proto3,enum=gitaly.UserCommitFilesActionHeader_ActionType" json:"action,omitempty"`
	// file_path refers to the file or directory being modified. The meaning differs for each
	// action:
	//  1. CREATE: path of the file to create
	//  2. CREATE_DIR: path of the directory to create
	//  3. UPDATE: path of the file to update
	//  4. MOVE: the new path of the moved file
	//  5. DELETE: path of the file to delete
	//  6. CHMOD: path of the file to modify permissions for
	FilePath []byte `protobuf:"bytes,2,opt,name=file_path,json=filePath,proto3" json:"file_path,omitempty"`
	// previous_path is used in MOVE action to specify the path of the file to move.
	PreviousPath []byte `protobuf:"bytes,3,opt,name=previous_path,json=previousPath,proto3" json:"previous_path,omitempty"`
	// base64_content indicates the content of the file is base64 encoded. The encoding
	// must be the standard base64 encoding defined in RFC 4648. Only used for CREATE and
	// UPDATE actions.
	Base64Content bool `protobuf:"varint,4,opt,name=base64_content,json=base64Content,proto3" json:"base64_content,omitempty"`
	// execute_filemode determines whether the file is created with execute permissions.
	// The field is only used in CREATE and CHMOD actions.
	ExecuteFilemode bool `protobuf:"varint,5,opt,name=execute_filemode,json=executeFilemode,proto3" json:"execute_filemode,omitempty"`
	// infer_content should be set to true for move actions that change the file path, but not
	// its content. It should be set instead of populating the content field. Ignored for
	// other action types.
	InferContent bool `protobuf:"varint,6,opt,name=infer_content,json=inferContent,proto3" json:"infer_content,omitempty"`
}

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

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

func (*UserCommitFilesActionHeader) ProtoMessage() {}

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

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

func (x *UserCommitFilesActionHeader) GetAction() UserCommitFilesActionHeader_ActionType {
	if x != nil {
		return x.Action
	}
	return UserCommitFilesActionHeader_CREATE
}

func (x *UserCommitFilesActionHeader) GetFilePath() []byte {
	if x != nil {
		return x.FilePath
	}
	return nil
}

func (x *UserCommitFilesActionHeader) GetPreviousPath() []byte {
	if x != nil {
		return x.PreviousPath
	}
	return nil
}

func (x *UserCommitFilesActionHeader) GetBase64Content() bool {
	if x != nil {
		return x.Base64Content
	}
	return false
}

func (x *UserCommitFilesActionHeader) GetExecuteFilemode() bool {
	if x != nil {
		return x.ExecuteFilemode
	}
	return false
}

func (x *UserCommitFilesActionHeader) GetInferContent() bool {
	if x != nil {
		return x.InferContent
	}
	return false
}

// UserCommitFilesAction is the request message used to stream in the actions to build a commit.
type UserCommitFilesAction struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to UserCommitFilesActionPayload:
	//
	//	*UserCommitFilesAction_Header
	//	*UserCommitFilesAction_Content
	UserCommitFilesActionPayload isUserCommitFilesAction_UserCommitFilesActionPayload `protobuf_oneof:"user_commit_files_action_payload"`
}

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

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

func (*UserCommitFilesAction) ProtoMessage() {}

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

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

func (m *UserCommitFilesAction) GetUserCommitFilesActionPayload() isUserCommitFilesAction_UserCommitFilesActionPayload {
	if m != nil {
		return m.UserCommitFilesActionPayload
	}
	return nil
}

func (x *UserCommitFilesAction) GetHeader() *UserCommitFilesActionHeader {
	if x, ok := x.GetUserCommitFilesActionPayload().(*UserCommitFilesAction_Header); ok {
		return x.Header
	}
	return nil
}

func (x *UserCommitFilesAction) GetContent() []byte {
	if x, ok := x.GetUserCommitFilesActionPayload().(*UserCommitFilesAction_Content); ok {
		return x.Content
	}
	return nil
}

type isUserCommitFilesAction_UserCommitFilesActionPayload interface {
	isUserCommitFilesAction_UserCommitFilesActionPayload()
}

type UserCommitFilesAction_Header struct {
	// header contains the details of action being performed. Header must be sent before the
	// content if content is used by the action.
	Header *UserCommitFilesActionHeader `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
}

type UserCommitFilesAction_Content struct {
	// content is the content of the file streamed in one or more messages. Only used with CREATE
	// and UPDATE actions.
	Content []byte `protobuf:"bytes,2,opt,name=content,proto3,oneof"`
}

func (*UserCommitFilesAction_Header) isUserCommitFilesAction_UserCommitFilesActionPayload() {}

func (*UserCommitFilesAction_Content) isUserCommitFilesAction_UserCommitFilesActionPayload() {}

// UserCommitFilesRequestHeader is the header of the UserCommitFiles that defines the commit details,
// parent and other information related to the call.
type UserCommitFilesRequestHeader struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// repository is the target repository where to apply the commit.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// 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.
	BranchName []byte `protobuf:"bytes,3,opt,name=branch_name,json=branchName,proto3" json:"branch_name,omitempty"`
	// commit_message is the message to use in the commit.
	CommitMessage []byte `protobuf:"bytes,4,opt,name=commit_message,json=commitMessage,proto3" json:"commit_message,omitempty"`
	// commit_author_name is the commit author's name. If not provided, the user's name is
	// used instead.
	CommitAuthorName []byte `protobuf:"bytes,5,opt,name=commit_author_name,json=commitAuthorName,proto3" json:"commit_author_name,omitempty"`
	// commit_author_email is the commit author's email. If not provided, the user's email is
	// used instead.
	CommitAuthorEmail []byte `protobuf:"bytes,6,opt,name=commit_author_email,json=commitAuthorEmail,proto3" json:"commit_author_email,omitempty"`
	// start_branch_name specifies the branch whose commit to use as the parent commit. Takes priority
	// over branch_name. Optional.
	StartBranchName []byte `protobuf:"bytes,7,opt,name=start_branch_name,json=startBranchName,proto3" json:"start_branch_name,omitempty"`
	// start_repository specifies which contains the parent commit. If not specified, repository itself
	// is used to look up the parent commit. Optional.
	StartRepository *Repository `protobuf:"bytes,8,opt,name=start_repository,json=startRepository,proto3" json:"start_repository,omitempty"`
	// force determines whether to force update the target branch specified by branch_name to
	// point to the new commit.
	Force bool `protobuf:"varint,9,opt,name=force,proto3" json:"force,omitempty"`
	// start_sha specifies the SHA of the commit to use as the parent of new commit. Takes priority
	// over start_branch_name and branch_name. Optional.
	StartSha string `protobuf:"bytes,10,opt,name=start_sha,json=startSha,proto3" json:"start_sha,omitempty"`
	// timestamp is the optional timestamp to use for the commits as author and
	// committer date. If it's not set, the current time will be used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=timestamp,proto3" json:"timestamp,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
	// updated meanwhile to point to a different object ID. Only applicable when
	// branch_name is set.
	//
	// If unset, the target branch will be overwritten regardless of its current
	// state. If set, it must either contain a valid, full object ID  or the
	// zero object ID in case the branch should be created. Otherwise, this RPC
	// will return an error.
	ExpectedOldOid string `protobuf:"bytes,12,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"`
}

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

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

func (*UserCommitFilesRequestHeader) ProtoMessage() {}

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

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

func (x *UserCommitFilesRequestHeader) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserCommitFilesRequestHeader) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserCommitFilesRequestHeader) GetBranchName() []byte {
	if x != nil {
		return x.BranchName
	}
	return nil
}

func (x *UserCommitFilesRequestHeader) GetCommitMessage() []byte {
	if x != nil {
		return x.CommitMessage
	}
	return nil
}

func (x *UserCommitFilesRequestHeader) GetCommitAuthorName() []byte {
	if x != nil {
		return x.CommitAuthorName
	}
	return nil
}

func (x *UserCommitFilesRequestHeader) GetCommitAuthorEmail() []byte {
	if x != nil {
		return x.CommitAuthorEmail
	}
	return nil
}

func (x *UserCommitFilesRequestHeader) GetStartBranchName() []byte {
	if x != nil {
		return x.StartBranchName
	}
	return nil
}

func (x *UserCommitFilesRequestHeader) GetStartRepository() *Repository {
	if x != nil {
		return x.StartRepository
	}
	return nil
}

func (x *UserCommitFilesRequestHeader) GetForce() bool {
	if x != nil {
		return x.Force
	}
	return false
}

func (x *UserCommitFilesRequestHeader) GetStartSha() string {
	if x != nil {
		return x.StartSha
	}
	return ""
}

func (x *UserCommitFilesRequestHeader) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

func (x *UserCommitFilesRequestHeader) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

// UserCommitFilesRequest is the request of UserCommitFiles.
type UserCommitFilesRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to UserCommitFilesRequestPayload:
	//
	//	*UserCommitFilesRequest_Header
	//	*UserCommitFilesRequest_Action
	UserCommitFilesRequestPayload isUserCommitFilesRequest_UserCommitFilesRequestPayload `protobuf_oneof:"user_commit_files_request_payload"`
}

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

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

func (*UserCommitFilesRequest) ProtoMessage() {}

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

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

func (m *UserCommitFilesRequest) GetUserCommitFilesRequestPayload() isUserCommitFilesRequest_UserCommitFilesRequestPayload {
	if m != nil {
		return m.UserCommitFilesRequestPayload
	}
	return nil
}

func (x *UserCommitFilesRequest) GetHeader() *UserCommitFilesRequestHeader {
	if x, ok := x.GetUserCommitFilesRequestPayload().(*UserCommitFilesRequest_Header); ok {
		return x.Header
	}
	return nil
}

func (x *UserCommitFilesRequest) GetAction() *UserCommitFilesAction {
	if x, ok := x.GetUserCommitFilesRequestPayload().(*UserCommitFilesRequest_Action); ok {
		return x.Action
	}
	return nil
}

type isUserCommitFilesRequest_UserCommitFilesRequestPayload interface {
	isUserCommitFilesRequest_UserCommitFilesRequestPayload()
}

type UserCommitFilesRequest_Header struct {
	// header defines the details of where to commit, the details and which commit to use as the parent.
	// header must always be sent as the first request of the stream.
	Header *UserCommitFilesRequestHeader `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
}

type UserCommitFilesRequest_Action struct {
	// action contains an action to build a commit. There can be multiple actions per stream.
	Action *UserCommitFilesAction `protobuf:"bytes,2,opt,name=action,proto3,oneof"`
}

func (*UserCommitFilesRequest_Header) isUserCommitFilesRequest_UserCommitFilesRequestPayload() {}

func (*UserCommitFilesRequest_Action) isUserCommitFilesRequest_UserCommitFilesRequestPayload() {}

// UserCommitFilesResponse is the response object of UserCommitFiles.
type UserCommitFilesResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// branch_update contains the details of the commit and the branch update.
	BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"`
	// index_error is set to the error message when an invalid action was attempted, such as
	// trying to create a file that already existed.
	IndexError string `protobuf:"bytes,2,opt,name=index_error,json=indexError,proto3" json:"index_error,omitempty"`
	// pre_receive_error is set when the pre-receive hook errored.
	PreReceiveError string `protobuf:"bytes,3,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"`
}

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

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

func (*UserCommitFilesResponse) ProtoMessage() {}

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

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

func (x *UserCommitFilesResponse) GetBranchUpdate() *OperationBranchUpdate {
	if x != nil {
		return x.BranchUpdate
	}
	return nil
}

func (x *UserCommitFilesResponse) GetIndexError() string {
	if x != nil {
		return x.IndexError
	}
	return ""
}

func (x *UserCommitFilesResponse) GetPreReceiveError() string {
	if x != nil {
		return x.PreReceiveError
	}
	return ""
}

// UserCommitFilesError is an error returned by the UserCommitFiles RPC in some specific well
// defined error cases.
type UserCommitFilesError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Error:
	//
	//	*UserCommitFilesError_AccessCheck
	//	*UserCommitFilesError_IndexUpdate
	//	*UserCommitFilesError_CustomHook
	Error isUserCommitFilesError_Error `protobuf_oneof:"error"`
}

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

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

func (*UserCommitFilesError) ProtoMessage() {}

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

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

func (m *UserCommitFilesError) GetError() isUserCommitFilesError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *UserCommitFilesError) GetAccessCheck() *AccessCheckError {
	if x, ok := x.GetError().(*UserCommitFilesError_AccessCheck); ok {
		return x.AccessCheck
	}
	return nil
}

func (x *UserCommitFilesError) GetIndexUpdate() *IndexError {
	if x, ok := x.GetError().(*UserCommitFilesError_IndexUpdate); ok {
		return x.IndexUpdate
	}
	return nil
}

func (x *UserCommitFilesError) GetCustomHook() *CustomHookError {
	if x, ok := x.GetError().(*UserCommitFilesError_CustomHook); ok {
		return x.CustomHook
	}
	return nil
}

type isUserCommitFilesError_Error interface {
	isUserCommitFilesError_Error()
}

type UserCommitFilesError_AccessCheck struct {
	// 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"`
}

type UserCommitFilesError_IndexUpdate struct {
	// index_update is set to the error message when an operation conflicts with the repository
	// index, such as creating a file that already exists.
	IndexUpdate *IndexError `protobuf:"bytes,2,opt,name=index_update,json=indexUpdate,proto3,oneof"`
}

type UserCommitFilesError_CustomHook struct {
	// custom_hook is set if any custom hook which has running as part of this RPC call has returned
	// a non-zero exit code.
	CustomHook *CustomHookError `protobuf:"bytes,3,opt,name=custom_hook,json=customHook,proto3,oneof"`
}

func (*UserCommitFilesError_AccessCheck) isUserCommitFilesError_Error() {}

func (*UserCommitFilesError_IndexUpdate) isUserCommitFilesError_Error() {}

func (*UserCommitFilesError_CustomHook) isUserCommitFilesError_Error() {}

// UserRebaseConfirmableRequest is a request for the UserRebaseConfirmable RPC.
type UserRebaseConfirmableRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to UserRebaseConfirmableRequestPayload:
	//
	//	*UserRebaseConfirmableRequest_Header_
	//	*UserRebaseConfirmableRequest_Apply
	UserRebaseConfirmableRequestPayload isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload `protobuf_oneof:"user_rebase_confirmable_request_payload"`
}

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

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

func (*UserRebaseConfirmableRequest) ProtoMessage() {}

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

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

func (m *UserRebaseConfirmableRequest) GetUserRebaseConfirmableRequestPayload() isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload {
	if m != nil {
		return m.UserRebaseConfirmableRequestPayload
	}
	return nil
}

func (x *UserRebaseConfirmableRequest) GetHeader() *UserRebaseConfirmableRequest_Header {
	if x, ok := x.GetUserRebaseConfirmableRequestPayload().(*UserRebaseConfirmableRequest_Header_); ok {
		return x.Header
	}
	return nil
}

func (x *UserRebaseConfirmableRequest) GetApply() bool {
	if x, ok := x.GetUserRebaseConfirmableRequestPayload().(*UserRebaseConfirmableRequest_Apply); ok {
		return x.Apply
	}
	return false
}

type isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload interface {
	isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload()
}

type UserRebaseConfirmableRequest_Header_ struct {
	// header must be the first request for each request stream
	// containing details about the rebase to perform.
	Header *UserRebaseConfirmableRequest_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
}

type UserRebaseConfirmableRequest_Apply struct {
	// apply is the second request that must be made to confirm that
	// the rebase should be applied to the branch.
	Apply bool `protobuf:"varint,2,opt,name=apply,proto3,oneof"`
}

func (*UserRebaseConfirmableRequest_Header_) isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload() {
}

func (*UserRebaseConfirmableRequest_Apply) isUserRebaseConfirmableRequest_UserRebaseConfirmableRequestPayload() {
}

// UserRebaseConfirmableResponse is a response for the UserRebaseConfirmable RPC.
type UserRebaseConfirmableResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to UserRebaseConfirmableResponsePayload:
	//
	//	*UserRebaseConfirmableResponse_RebaseSha
	//	*UserRebaseConfirmableResponse_RebaseApplied
	UserRebaseConfirmableResponsePayload isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload `protobuf_oneof:"user_rebase_confirmable_response_payload"`
}

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

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

func (*UserRebaseConfirmableResponse) ProtoMessage() {}

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

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

func (m *UserRebaseConfirmableResponse) GetUserRebaseConfirmableResponsePayload() isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload {
	if m != nil {
		return m.UserRebaseConfirmableResponsePayload
	}
	return nil
}

func (x *UserRebaseConfirmableResponse) GetRebaseSha() string {
	if x, ok := x.GetUserRebaseConfirmableResponsePayload().(*UserRebaseConfirmableResponse_RebaseSha); ok {
		return x.RebaseSha
	}
	return ""
}

func (x *UserRebaseConfirmableResponse) GetRebaseApplied() bool {
	if x, ok := x.GetUserRebaseConfirmableResponsePayload().(*UserRebaseConfirmableResponse_RebaseApplied); ok {
		return x.RebaseApplied
	}
	return false
}

type isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload interface {
	isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload()
}

type UserRebaseConfirmableResponse_RebaseSha struct {
	// rebase_sha is the commit the branch will be updated to, it will be present
	// in the first response. The caller can still abort the rebase.
	RebaseSha string `protobuf:"bytes,1,opt,name=rebase_sha,json=rebaseSha,proto3,oneof"`
}

type UserRebaseConfirmableResponse_RebaseApplied struct {
	// rebase_applied confirms that the rebase has been applied to the branch.
	// It is present in the second response.
	RebaseApplied bool `protobuf:"varint,2,opt,name=rebase_applied,json=rebaseApplied,proto3,oneof"`
}

func (*UserRebaseConfirmableResponse_RebaseSha) isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload() {
}

func (*UserRebaseConfirmableResponse_RebaseApplied) isUserRebaseConfirmableResponse_UserRebaseConfirmableResponsePayload() {
}

// UserSquashRequest is a request for the UserSquash RPC.
type UserSquashRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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 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.
	StartSha string `protobuf:"bytes,5,opt,name=start_sha,json=startSha,proto3" json:"start_sha,omitempty"`
	// end_sha is the object ID of the end commit of the range which shall be
	// squashed.
	EndSha string `protobuf:"bytes,6,opt,name=end_sha,json=endSha,proto3" json:"end_sha,omitempty"`
	// author will be used as the author of the squashed commit.
	Author *User `protobuf:"bytes,7,opt,name=author,proto3" json:"author,omitempty"`
	// commit_message is the message to be used for the squashed commit.
	CommitMessage []byte `protobuf:"bytes,8,opt,name=commit_message,json=commitMessage,proto3" json:"commit_message,omitempty"`
	// timestamp is the optional timestamp to use for the squashed commit as
	// committer date. If it's not set, the current time will be used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
}

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

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

func (*UserSquashRequest) ProtoMessage() {}

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

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

func (x *UserSquashRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserSquashRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserSquashRequest) GetStartSha() string {
	if x != nil {
		return x.StartSha
	}
	return ""
}

func (x *UserSquashRequest) GetEndSha() string {
	if x != nil {
		return x.EndSha
	}
	return ""
}

func (x *UserSquashRequest) GetAuthor() *User {
	if x != nil {
		return x.Author
	}
	return nil
}

func (x *UserSquashRequest) GetCommitMessage() []byte {
	if x != nil {
		return x.CommitMessage
	}
	return nil
}

func (x *UserSquashRequest) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

// UserSquashResponse is a response for the UserSquash RPC.
type UserSquashResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// squash_sha is the object ID of the squashed commit.
	SquashSha string `protobuf:"bytes,1,opt,name=squash_sha,json=squashSha,proto3" json:"squash_sha,omitempty"`
}

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

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

func (*UserSquashResponse) ProtoMessage() {}

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

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

func (x *UserSquashResponse) GetSquashSha() string {
	if x != nil {
		return x.SquashSha
	}
	return ""
}

// UserRebaseConfirmableError is a structured error for the UserRebaseConfirmable RPC.
type UserRebaseConfirmableError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Error:
	//
	//	*UserRebaseConfirmableError_RebaseConflict
	//	*UserRebaseConfirmableError_AccessCheck
	Error isUserRebaseConfirmableError_Error `protobuf_oneof:"error"`
}

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

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

func (*UserRebaseConfirmableError) ProtoMessage() {}

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

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

func (m *UserRebaseConfirmableError) GetError() isUserRebaseConfirmableError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *UserRebaseConfirmableError) GetRebaseConflict() *MergeConflictError {
	if x, ok := x.GetError().(*UserRebaseConfirmableError_RebaseConflict); ok {
		return x.RebaseConflict
	}
	return nil
}

func (x *UserRebaseConfirmableError) GetAccessCheck() *AccessCheckError {
	if x, ok := x.GetError().(*UserRebaseConfirmableError_AccessCheck); ok {
		return x.AccessCheck
	}
	return nil
}

type isUserRebaseConfirmableError_Error interface {
	isUserRebaseConfirmableError_Error()
}

type UserRebaseConfirmableError_RebaseConflict struct {
	// 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.
	RebaseConflict *MergeConflictError `protobuf:"bytes,1,opt,name=rebase_conflict,json=rebaseConflict,proto3,oneof"`
}

type UserRebaseConfirmableError_AccessCheck struct {
	// 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"`
}

func (*UserRebaseConfirmableError_RebaseConflict) isUserRebaseConfirmableError_Error() {}

func (*UserRebaseConfirmableError_AccessCheck) isUserRebaseConfirmableError_Error() {}

// UserSquashError is an error that may be returned when the UserSquash RPC
// fails.
type UserSquashError struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to Error:
	//
	//	*UserSquashError_ResolveRevision
	//	*UserSquashError_RebaseConflict
	Error isUserSquashError_Error `protobuf_oneof:"error"`
}

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

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

func (*UserSquashError) ProtoMessage() {}

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

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

func (m *UserSquashError) GetError() isUserSquashError_Error {
	if m != nil {
		return m.Error
	}
	return nil
}

func (x *UserSquashError) GetResolveRevision() *ResolveRevisionError {
	if x, ok := x.GetError().(*UserSquashError_ResolveRevision); ok {
		return x.ResolveRevision
	}
	return nil
}

func (x *UserSquashError) GetRebaseConflict() *MergeConflictError {
	if x, ok := x.GetError().(*UserSquashError_RebaseConflict); ok {
		return x.RebaseConflict
	}
	return nil
}

type isUserSquashError_Error interface {
	isUserSquashError_Error()
}

type UserSquashError_ResolveRevision struct {
	// resolve_revision is returned in case resolving either the start or end
	// revision has failed.
	ResolveRevision *ResolveRevisionError `protobuf:"bytes,1,opt,name=resolve_revision,json=resolveRevision,proto3,oneof"`
}

type UserSquashError_RebaseConflict struct {
	// rebase_conflict is returned in case rebasing commits on top of the start
	// commit fails with a merge conflict.
	RebaseConflict *MergeConflictError `protobuf:"bytes,2,opt,name=rebase_conflict,json=rebaseConflict,proto3,oneof"`
}

func (*UserSquashError_ResolveRevision) isUserSquashError_Error() {}

func (*UserSquashError_RebaseConflict) isUserSquashError_Error() {}

// UserApplyPatchRequest is a request for the UserApplyPatch RPC.
type UserApplyPatchRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// Types that are assignable to UserApplyPatchRequestPayload:
	//
	//	*UserApplyPatchRequest_Header_
	//	*UserApplyPatchRequest_Patches
	UserApplyPatchRequestPayload isUserApplyPatchRequest_UserApplyPatchRequestPayload `protobuf_oneof:"user_apply_patch_request_payload"`
}

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

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

func (*UserApplyPatchRequest) ProtoMessage() {}

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

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

func (m *UserApplyPatchRequest) GetUserApplyPatchRequestPayload() isUserApplyPatchRequest_UserApplyPatchRequestPayload {
	if m != nil {
		return m.UserApplyPatchRequestPayload
	}
	return nil
}

func (x *UserApplyPatchRequest) GetHeader() *UserApplyPatchRequest_Header {
	if x, ok := x.GetUserApplyPatchRequestPayload().(*UserApplyPatchRequest_Header_); ok {
		return x.Header
	}
	return nil
}

func (x *UserApplyPatchRequest) GetPatches() []byte {
	if x, ok := x.GetUserApplyPatchRequestPayload().(*UserApplyPatchRequest_Patches); ok {
		return x.Patches
	}
	return nil
}

type isUserApplyPatchRequest_UserApplyPatchRequestPayload interface {
	isUserApplyPatchRequest_UserApplyPatchRequestPayload()
}

type UserApplyPatchRequest_Header_ struct {
	// header must be sent as the first message and contains information about
	// how to apply the patches.
	Header *UserApplyPatchRequest_Header `protobuf:"bytes,1,opt,name=header,proto3,oneof"`
}

type UserApplyPatchRequest_Patches struct {
	// patches contains the patch data.
	Patches []byte `protobuf:"bytes,2,opt,name=patches,proto3,oneof"`
}

func (*UserApplyPatchRequest_Header_) isUserApplyPatchRequest_UserApplyPatchRequestPayload() {}

func (*UserApplyPatchRequest_Patches) isUserApplyPatchRequest_UserApplyPatchRequestPayload() {}

// UserApplyPatchResponse is a response for the UserApplyPatch RPC.
type UserApplyPatchResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// branch_update contains information about the updated branch.
	BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"`
}

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

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

func (*UserApplyPatchResponse) ProtoMessage() {}

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

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

func (x *UserApplyPatchResponse) GetBranchUpdate() *OperationBranchUpdate {
	if x != nil {
		return x.BranchUpdate
	}
	return nil
}

// UserUpdateSubmoduleRequest is a request for the UserUpdateSubmodule RPC.
type UserUpdateSubmoduleRequest struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// repository is the repository in which the submodule shall be updated.
	Repository *Repository `protobuf:"bytes,1,opt,name=repository,proto3" json:"repository,omitempty"`
	// 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"`
	// branch is the branch which shall be updated. This is the unqualified name
	// of the branch, it must not have a "refs/heads/" prefix.
	Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"`
	// submodule is the path to the submodule which shall be updated.
	Submodule []byte `protobuf:"bytes,5,opt,name=submodule,proto3" json:"submodule,omitempty"`
	// commit_message is the message updating the submodule.
	CommitMessage []byte `protobuf:"bytes,6,opt,name=commit_message,json=commitMessage,proto3" json:"commit_message,omitempty"`
	// timestamp is the optional timestamp to use for the commit updating the
	// submodule as committer date. If it's not set, the current time will be
	// used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,7,opt,name=timestamp,proto3" json:"timestamp,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
	// updated meanwhile to point to a different object ID.
	//
	// If unset, the target branch will be overwritten regardless of its current
	// state. If set, it must either contain a valid, full object ID  or the
	// 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"`
}

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

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

func (*UserUpdateSubmoduleRequest) ProtoMessage() {}

func (x *UserUpdateSubmoduleRequest) ProtoReflect() protoreflect.Message {
	mi := &file_operations_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 UserUpdateSubmoduleRequest.ProtoReflect.Descriptor instead.
func (*UserUpdateSubmoduleRequest) Descriptor() ([]byte, []int) {
	return file_operations_proto_rawDescGZIP(), []int{43}
}

func (x *UserUpdateSubmoduleRequest) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserUpdateSubmoduleRequest) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserUpdateSubmoduleRequest) GetCommitSha() string {
	if x != nil {
		return x.CommitSha
	}
	return ""
}

func (x *UserUpdateSubmoduleRequest) GetBranch() []byte {
	if x != nil {
		return x.Branch
	}
	return nil
}

func (x *UserUpdateSubmoduleRequest) GetSubmodule() []byte {
	if x != nil {
		return x.Submodule
	}
	return nil
}

func (x *UserUpdateSubmoduleRequest) GetCommitMessage() []byte {
	if x != nil {
		return x.CommitMessage
	}
	return nil
}

func (x *UserUpdateSubmoduleRequest) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

func (x *UserUpdateSubmoduleRequest) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

// UserUpdateSubmoduleResponse is a response for the UserUpdateSubmodule RPC.
type UserUpdateSubmoduleResponse struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// branch_update contains information about the updated branch.
	BranchUpdate *OperationBranchUpdate `protobuf:"bytes,1,opt,name=branch_update,json=branchUpdate,proto3" json:"branch_update,omitempty"`
	// pre_receive_error contains an error message if the pre-receive hook
	// rejects the update.
	PreReceiveError string `protobuf:"bytes,2,opt,name=pre_receive_error,json=preReceiveError,proto3" json:"pre_receive_error,omitempty"`
	// commit_error contains an error message if committing the update fails.
	CommitError string `protobuf:"bytes,4,opt,name=commit_error,json=commitError,proto3" json:"commit_error,omitempty"`
}

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

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

func (*UserUpdateSubmoduleResponse) ProtoMessage() {}

func (x *UserUpdateSubmoduleResponse) ProtoReflect() protoreflect.Message {
	mi := &file_operations_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 UserUpdateSubmoduleResponse.ProtoReflect.Descriptor instead.
func (*UserUpdateSubmoduleResponse) Descriptor() ([]byte, []int) {
	return file_operations_proto_rawDescGZIP(), []int{44}
}

func (x *UserUpdateSubmoduleResponse) GetBranchUpdate() *OperationBranchUpdate {
	if x != nil {
		return x.BranchUpdate
	}
	return nil
}

func (x *UserUpdateSubmoduleResponse) GetPreReceiveError() string {
	if x != nil {
		return x.PreReceiveError
	}
	return ""
}

func (x *UserUpdateSubmoduleResponse) GetCommitError() string {
	if x != nil {
		return x.CommitError
	}
	return ""
}

// Header contains information to compute the rebase and must be sent as
// first message.
type UserRebaseConfirmableRequest_Header struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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 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.
	//
	// Deprecated: Marked as deprecated in operations.proto.
	RebaseId string `protobuf:"bytes,3,opt,name=rebase_id,json=rebaseId,proto3" json:"rebase_id,omitempty"`
	// branch is the branch onto which the rebase shall happen.
	Branch []byte `protobuf:"bytes,4,opt,name=branch,proto3" json:"branch,omitempty"`
	// branch_sha is the expected object ID which branch currently points to.
	// This is used as a safety guard to avoid races when branch has been
	// updated meanwhile.
	BranchSha string `protobuf:"bytes,5,opt,name=branch_sha,json=branchSha,proto3" json:"branch_sha,omitempty"`
	// remote_repository is the repository which contains the branch which
	// shall be rebased onto the local branch.
	RemoteRepository *Repository `protobuf:"bytes,6,opt,name=remote_repository,json=remoteRepository,proto3" json:"remote_repository,omitempty"`
	// remote_branch contains the branch name which shall re rebased onto the
	// local branch.
	RemoteBranch []byte `protobuf:"bytes,7,opt,name=remote_branch,json=remoteBranch,proto3" json:"remote_branch,omitempty"`
	// git_push_options contain options which shall be passed to the git hooks
	// when the local branch gets updated.
	GitPushOptions []string `protobuf:"bytes,8,rep,name=git_push_options,json=gitPushOptions,proto3" json:"git_push_options,omitempty"`
	// timestamp is the optional timestamp to use for the rebased commits as
	// committer date. If it's not set, the current time will be used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,9,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
}

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

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

func (*UserRebaseConfirmableRequest_Header) ProtoMessage() {}

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

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

func (x *UserRebaseConfirmableRequest_Header) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserRebaseConfirmableRequest_Header) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

// Deprecated: Marked as deprecated in operations.proto.
func (x *UserRebaseConfirmableRequest_Header) GetRebaseId() string {
	if x != nil {
		return x.RebaseId
	}
	return ""
}

func (x *UserRebaseConfirmableRequest_Header) GetBranch() []byte {
	if x != nil {
		return x.Branch
	}
	return nil
}

func (x *UserRebaseConfirmableRequest_Header) GetBranchSha() string {
	if x != nil {
		return x.BranchSha
	}
	return ""
}

func (x *UserRebaseConfirmableRequest_Header) GetRemoteRepository() *Repository {
	if x != nil {
		return x.RemoteRepository
	}
	return nil
}

func (x *UserRebaseConfirmableRequest_Header) GetRemoteBranch() []byte {
	if x != nil {
		return x.RemoteBranch
	}
	return nil
}

func (x *UserRebaseConfirmableRequest_Header) GetGitPushOptions() []string {
	if x != nil {
		return x.GitPushOptions
	}
	return nil
}

func (x *UserRebaseConfirmableRequest_Header) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

// Header contains information about how to apply the patches.
type UserApplyPatchRequest_Header struct {
	state         protoimpl.MessageState
	sizeCache     protoimpl.SizeCache
	unknownFields protoimpl.UnknownFields

	// 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 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"`
	// timestamp is the optional timestamp to use for the squashed commit as
	// committer date. If it's not set, the current time will be used.
	Timestamp *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,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
	// updated meanwhile to point to a different object ID.
	//
	// If unset, the target branch will be overwritten regardless of its current
	// state. If set, it must either contain a valid, full object ID  or the
	// zero object ID in case the branch should be created. Otherwise, this RPC
	// will return an error.
	ExpectedOldOid string `protobuf:"bytes,5,opt,name=expected_old_oid,json=expectedOldOid,proto3" json:"expected_old_oid,omitempty"`
}

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

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

func (*UserApplyPatchRequest_Header) ProtoMessage() {}

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

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

func (x *UserApplyPatchRequest_Header) GetRepository() *Repository {
	if x != nil {
		return x.Repository
	}
	return nil
}

func (x *UserApplyPatchRequest_Header) GetUser() *User {
	if x != nil {
		return x.User
	}
	return nil
}

func (x *UserApplyPatchRequest_Header) GetTargetBranch() []byte {
	if x != nil {
		return x.TargetBranch
	}
	return nil
}

func (x *UserApplyPatchRequest_Header) GetTimestamp() *timestamppb.Timestamp {
	if x != nil {
		return x.Timestamp
	}
	return nil
}

func (x *UserApplyPatchRequest_Header) GetExpectedOldOid() string {
	if x != nil {
		return x.ExpectedOldOid
	}
	return ""
}

var File_operations_proto protoreflect.FileDescriptor

var file_operations_proto_rawDesc = []byte{
	0x0a, 0x10, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f,
	0x74, 0x6f, 0x12, 0x06, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x1a, 0x0c, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
	0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0a, 0x6c, 0x69, 0x6e, 0x74, 0x2e,
	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72,
	0x6f, 0x74, 0x6f, 0x22, 0xb7, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61,
	0x74, 0x65, 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, 0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61,
	0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a,
	0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73,
	0x65, 0x72, 0x18, 0x03, 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,
	0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x5b, 0x0a,
	0x18, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63,
	0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x62, 0x72, 0x61,
	0x6e, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x69, 0x74, 0x61,
	0x6c, 0x79, 0x2e, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x06, 0x62, 0x72, 0x61, 0x6e, 0x63,
	0x68, 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, 0x5c, 0x0a, 0x15, 0x55, 0x73,
	0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x68, 0x6f,
	0x6f, 0x6b, 0x18, 0x01, 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, 0xc6, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65,
	0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 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, 0x1f,
	0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12,
	0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 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, 0x16, 0x0a, 0x06, 0x6e, 0x65, 0x77, 0x72, 0x65, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28,
	0x0c, 0x52, 0x06, 0x6e, 0x65, 0x77, 0x72, 0x65, 0x76, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x6c, 0x64,
	0x72, 0x65, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x6c, 0x64, 0x72, 0x65,
	0x76, 0x22, 0x46, 0x0a, 0x18, 0x55, 0x73, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42,
	0x72, 0x61, 0x6e, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a,
	0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63,
	0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xc0, 0x01, 0x0a, 0x17, 0x55, 0x73,
	0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 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,
	0x1f, 0x0a, 0x0b, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65,
	0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 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, 0x28, 0x0a, 0x10, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f,
	0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78,
	0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c, 0x64, 0x4f, 0x69, 0x64, 0x22, 0x33, 0x0a, 0x18,
	0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68,
	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x52, 0x11,
	0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f,
	0x72, 0x22, 0xe6, 0x01, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
	0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 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, 0x49, 0x0a, 0x10, 0x72, 0x65,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 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, 0xb7, 0x01, 0x0a, 0x14, 0x55,
	0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x61, 0x67, 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, 0x19, 0x0a,
	0x08, 0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
	0x07, 0x74, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
	0x18, 0x03, 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, 0x28, 0x0a, 0x10, 0x65, 0x78,
	0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x6f, 0x69, 0x64, 0x18, 0x04,
	0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x4f, 0x6c,
	0x64, 0x4f, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, 0x6c, 0x65,
	0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a,
	0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x52, 0x65, 0x63,
	0x65, 0x69, 0x76, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x8a, 0x02, 0x0a, 0x14, 0x55, 0x73,
	0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 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, 0x19, 0x0a, 0x08,
	0x74, 0x61, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07,
	0x74, 0x61, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18,
	0x03, 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, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72,
	0x67, 0x65, 0x74, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01,
	0x28, 0x0c, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69,
	0x6f, 0x6e, 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, 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, 0x22, 0x5d, 0x0a, 0x15, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
	0x1d, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x67,
	0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x54, 0x61, 0x67, 0x52, 0x03, 0x74, 0x61, 0x67, 0x4a, 0x04,
	0x08, 0x02, 0x10, 0x03, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x52, 0x06, 0x65, 0x78, 0x69, 0x73,
	0x74, 0x73, 0x52, 0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f,
	0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xae, 0x02, 0x0a, 0x12, 0x55, 0x73, 0x65, 0x72, 0x43, 0x72,
	0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x67, 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, 0x49, 0x0a, 0x10, 0x72,
	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18,
	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52,
	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x72,
	0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
	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, 0x12, 0x49, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f,
	0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
	0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x45,
	0x78, 0x69, 0x73, 0x74, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x42, 0x07, 0x0a,
	0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xbd, 0x02, 0x0a, 0x16, 0x55, 0x73, 0x65, 0x72, 0x4d,
	0x65, 0x72, 0x67, 0x65, 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, 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, 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,
	0x12, 0x14, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
	0x05, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x22, 0x99, 0x01, 0x0a, 0x17, 0x55, 0x73, 0x65, 0x72, 0x4d,
	0x65, 0x72, 0x67, 0x65, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 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,
	0x42, 0x0a, 0x0d, 0x62, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
	0x18, 0x03, 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, 0x04, 0x10, 0x05, 0x52,
	0x11, 0x70, 0x72, 0x65, 0x5f, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x65, 0x72, 0x72,
	0x6f, 0x72, 0x22, 0xaa, 0x02, 0x0a, 0x14, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x72, 0x67, 0x65,
	0x42, 0x72, 0x61, 0x6e, 0x63, 0x68, 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, 0x49, 0x0a, 0x10, 0x72, 0x65,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02,
	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x79, 0x2e, 0x52, 0x65,
	0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72,
	0x6f, 0x72, 0x48, 0x00, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 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, 0x12, 0x43, 0x0a, 0x0e, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c,
	0x69, 0x63, 0x74, 0x18, 0x04, 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, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f,
	0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x42, 0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22,
	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,
	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, 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, 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, 0x9f, 0x04, 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, 0x12,
	0x2c, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72,
	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 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, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x6d,
	0x69, 0x74, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 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, 0xb8, 0x02,
	0x0a, 0x0f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x45, 0x72, 0x72, 0x6f,
	0x72, 0x12, 0x43, 0x0a, 0x0e, 0x6d, 0x65, 0x72, 0x67, 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, 0x0d, 0x6d, 0x65, 0x72, 0x67, 0x65, 0x43, 0x6f,
	0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 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, 0x02, 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, 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,
	0x12, 0x3d, 0x0a, 0x0c, 0x6e, 0x6f, 0x74, 0x5f, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72,
	0x18, 0x04, 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, 0x0b, 0x6e, 0x6f, 0x74, 0x41, 0x6e, 0x63, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x42,
	0x07, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 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, 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, 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, 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,
	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, 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 (
	file_operations_proto_rawDescOnce sync.Once
	file_operations_proto_rawDescData = file_operations_proto_rawDesc
)

func file_operations_proto_rawDescGZIP() []byte {
	file_operations_proto_rawDescOnce.Do(func() {
		file_operations_proto_rawDescData = protoimpl.X.CompressGZIP(file_operations_proto_rawDescData)
	})
	return file_operations_proto_rawDescData
}

var file_operations_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_operations_proto_msgTypes = make([]protoimpl.MessageInfo, 47)
var file_operations_proto_goTypes = []interface{}{
	(UserRevertResponse_CreateTreeError)(0),     // 0: gitaly.UserRevertResponse.CreateTreeError
	(UserCommitFilesActionHeader_ActionType)(0), // 1: gitaly.UserCommitFilesActionHeader.ActionType
	(*UserCreateBranchRequest)(nil),             // 2: gitaly.UserCreateBranchRequest
	(*UserCreateBranchResponse)(nil),            // 3: gitaly.UserCreateBranchResponse
	(*UserCreateBranchError)(nil),               // 4: gitaly.UserCreateBranchError
	(*UserUpdateBranchRequest)(nil),             // 5: gitaly.UserUpdateBranchRequest
	(*UserUpdateBranchResponse)(nil),            // 6: gitaly.UserUpdateBranchResponse
	(*UserDeleteBranchRequest)(nil),             // 7: gitaly.UserDeleteBranchRequest
	(*UserDeleteBranchResponse)(nil),            // 8: gitaly.UserDeleteBranchResponse
	(*UserDeleteBranchError)(nil),               // 9: gitaly.UserDeleteBranchError
	(*UserDeleteTagRequest)(nil),                // 10: gitaly.UserDeleteTagRequest
	(*UserDeleteTagResponse)(nil),               // 11: gitaly.UserDeleteTagResponse
	(*UserCreateTagRequest)(nil),                // 12: gitaly.UserCreateTagRequest
	(*UserCreateTagResponse)(nil),               // 13: gitaly.UserCreateTagResponse
	(*UserCreateTagError)(nil),                  // 14: gitaly.UserCreateTagError
	(*UserMergeBranchRequest)(nil),              // 15: gitaly.UserMergeBranchRequest
	(*UserMergeBranchResponse)(nil),             // 16: gitaly.UserMergeBranchResponse
	(*UserMergeBranchError)(nil),                // 17: gitaly.UserMergeBranchError
	(*UserMergeToRefRequest)(nil),               // 18: gitaly.UserMergeToRefRequest
	(*UserMergeToRefResponse)(nil),              // 19: gitaly.UserMergeToRefResponse
	(*UserRebaseToRefRequest)(nil),              // 20: gitaly.UserRebaseToRefRequest
	(*UserRebaseToRefResponse)(nil),             // 21: gitaly.UserRebaseToRefResponse
	(*OperationBranchUpdate)(nil),               // 22: gitaly.OperationBranchUpdate
	(*UserFFBranchRequest)(nil),                 // 23: gitaly.UserFFBranchRequest
	(*UserFFBranchResponse)(nil),                // 24: gitaly.UserFFBranchResponse
	(*UserCherryPickRequest)(nil),               // 25: gitaly.UserCherryPickRequest
	(*UserCherryPickResponse)(nil),              // 26: gitaly.UserCherryPickResponse
	(*UserCherryPickError)(nil),                 // 27: gitaly.UserCherryPickError
	(*UserRevertRequest)(nil),                   // 28: gitaly.UserRevertRequest
	(*UserRevertResponse)(nil),                  // 29: gitaly.UserRevertResponse
	(*UserRevertError)(nil),                     // 30: gitaly.UserRevertError
	(*UserCommitFilesActionHeader)(nil),         // 31: gitaly.UserCommitFilesActionHeader
	(*UserCommitFilesAction)(nil),               // 32: gitaly.UserCommitFilesAction
	(*UserCommitFilesRequestHeader)(nil),        // 33: gitaly.UserCommitFilesRequestHeader
	(*UserCommitFilesRequest)(nil),              // 34: gitaly.UserCommitFilesRequest
	(*UserCommitFilesResponse)(nil),             // 35: gitaly.UserCommitFilesResponse
	(*UserCommitFilesError)(nil),                // 36: gitaly.UserCommitFilesError
	(*UserRebaseConfirmableRequest)(nil),        // 37: gitaly.UserRebaseConfirmableRequest
	(*UserRebaseConfirmableResponse)(nil),       // 38: gitaly.UserRebaseConfirmableResponse
	(*UserSquashRequest)(nil),                   // 39: gitaly.UserSquashRequest
	(*UserSquashResponse)(nil),                  // 40: gitaly.UserSquashResponse
	(*UserRebaseConfirmableError)(nil),          // 41: gitaly.UserRebaseConfirmableError
	(*UserSquashError)(nil),                     // 42: gitaly.UserSquashError
	(*UserApplyPatchRequest)(nil),               // 43: gitaly.UserApplyPatchRequest
	(*UserApplyPatchResponse)(nil),              // 44: gitaly.UserApplyPatchResponse
	(*UserUpdateSubmoduleRequest)(nil),          // 45: gitaly.UserUpdateSubmoduleRequest
	(*UserUpdateSubmoduleResponse)(nil),         // 46: gitaly.UserUpdateSubmoduleResponse
	(*UserRebaseConfirmableRequest_Header)(nil), // 47: gitaly.UserRebaseConfirmableRequest.Header
	(*UserApplyPatchRequest_Header)(nil),        // 48: gitaly.UserApplyPatchRequest.Header
	(*Repository)(nil),                          // 49: gitaly.Repository
	(*User)(nil),                                // 50: gitaly.User
	(*Branch)(nil),                              // 51: gitaly.Branch
	(*CustomHookError)(nil),                     // 52: gitaly.CustomHookError
	(*AccessCheckError)(nil),                    // 53: gitaly.AccessCheckError
	(*ReferenceUpdateError)(nil),                // 54: gitaly.ReferenceUpdateError
	(*timestamppb.Timestamp)(nil),               // 55: google.protobuf.Timestamp
	(*Tag)(nil),                                 // 56: gitaly.Tag
	(*ReferenceExistsError)(nil),                // 57: gitaly.ReferenceExistsError
	(*MergeConflictError)(nil),                  // 58: gitaly.MergeConflictError
	(*GitCommit)(nil),                           // 59: gitaly.GitCommit
	(*NotAncestorError)(nil),                    // 60: gitaly.NotAncestorError
	(*ChangesAlreadyAppliedError)(nil),          // 61: gitaly.ChangesAlreadyAppliedError
	(*IndexError)(nil),                          // 62: gitaly.IndexError
	(*ResolveRevisionError)(nil),                // 63: gitaly.ResolveRevisionError
}
var file_operations_proto_depIdxs = []int32{
	49,  // 0: gitaly.UserCreateBranchRequest.repository:type_name -> gitaly.Repository
	50,  // 1: gitaly.UserCreateBranchRequest.user:type_name -> gitaly.User
	51,  // 2: gitaly.UserCreateBranchResponse.branch:type_name -> gitaly.Branch
	52,  // 3: gitaly.UserCreateBranchError.custom_hook:type_name -> gitaly.CustomHookError
	49,  // 4: gitaly.UserUpdateBranchRequest.repository:type_name -> gitaly.Repository
	50,  // 5: gitaly.UserUpdateBranchRequest.user:type_name -> gitaly.User
	49,  // 6: gitaly.UserDeleteBranchRequest.repository:type_name -> gitaly.Repository
	50,  // 7: gitaly.UserDeleteBranchRequest.user:type_name -> gitaly.User
	53,  // 8: gitaly.UserDeleteBranchError.access_check:type_name -> gitaly.AccessCheckError
	54,  // 9: gitaly.UserDeleteBranchError.reference_update:type_name -> gitaly.ReferenceUpdateError
	52,  // 10: gitaly.UserDeleteBranchError.custom_hook:type_name -> gitaly.CustomHookError
	49,  // 11: gitaly.UserDeleteTagRequest.repository:type_name -> gitaly.Repository
	50,  // 12: gitaly.UserDeleteTagRequest.user:type_name -> gitaly.User
	49,  // 13: gitaly.UserCreateTagRequest.repository:type_name -> gitaly.Repository
	50,  // 14: gitaly.UserCreateTagRequest.user:type_name -> gitaly.User
	55,  // 15: gitaly.UserCreateTagRequest.timestamp:type_name -> google.protobuf.Timestamp
	56,  // 16: gitaly.UserCreateTagResponse.tag:type_name -> gitaly.Tag
	53,  // 17: gitaly.UserCreateTagError.access_check:type_name -> gitaly.AccessCheckError
	54,  // 18: gitaly.UserCreateTagError.reference_update:type_name -> gitaly.ReferenceUpdateError
	52,  // 19: gitaly.UserCreateTagError.custom_hook:type_name -> gitaly.CustomHookError
	57,  // 20: gitaly.UserCreateTagError.reference_exists:type_name -> gitaly.ReferenceExistsError
	49,  // 21: gitaly.UserMergeBranchRequest.repository:type_name -> gitaly.Repository
	50,  // 22: gitaly.UserMergeBranchRequest.user:type_name -> gitaly.User
	55,  // 23: gitaly.UserMergeBranchRequest.timestamp:type_name -> google.protobuf.Timestamp
	22,  // 24: gitaly.UserMergeBranchResponse.branch_update:type_name -> gitaly.OperationBranchUpdate
	53,  // 25: gitaly.UserMergeBranchError.access_check:type_name -> gitaly.AccessCheckError
	54,  // 26: gitaly.UserMergeBranchError.reference_update:type_name -> gitaly.ReferenceUpdateError
	52,  // 27: gitaly.UserMergeBranchError.custom_hook:type_name -> gitaly.CustomHookError
	58,  // 28: gitaly.UserMergeBranchError.merge_conflict:type_name -> gitaly.MergeConflictError
	49,  // 29: gitaly.UserMergeToRefRequest.repository:type_name -> gitaly.Repository
	50,  // 30: gitaly.UserMergeToRefRequest.user:type_name -> gitaly.User
	55,  // 31: gitaly.UserMergeToRefRequest.timestamp:type_name -> google.protobuf.Timestamp
	49,  // 32: gitaly.UserRebaseToRefRequest.repository:type_name -> gitaly.Repository
	50,  // 33: gitaly.UserRebaseToRefRequest.user:type_name -> gitaly.User
	55,  // 34: gitaly.UserRebaseToRefRequest.timestamp:type_name -> google.protobuf.Timestamp
	49,  // 35: gitaly.UserFFBranchRequest.repository:type_name -> gitaly.Repository
	50,  // 36: gitaly.UserFFBranchRequest.user:type_name -> gitaly.User
	22,  // 37: gitaly.UserFFBranchResponse.branch_update:type_name -> gitaly.OperationBranchUpdate
	49,  // 38: gitaly.UserCherryPickRequest.repository:type_name -> gitaly.Repository
	50,  // 39: gitaly.UserCherryPickRequest.user:type_name -> gitaly.User
	59,  // 40: gitaly.UserCherryPickRequest.commit:type_name -> gitaly.GitCommit
	49,  // 41: gitaly.UserCherryPickRequest.start_repository:type_name -> gitaly.Repository
	55,  // 42: gitaly.UserCherryPickRequest.timestamp:type_name -> google.protobuf.Timestamp
	22,  // 43: gitaly.UserCherryPickResponse.branch_update:type_name -> gitaly.OperationBranchUpdate
	58,  // 44: gitaly.UserCherryPickError.cherry_pick_conflict:type_name -> gitaly.MergeConflictError
	60,  // 45: gitaly.UserCherryPickError.target_branch_diverged:type_name -> gitaly.NotAncestorError
	61,  // 46: gitaly.UserCherryPickError.changes_already_applied:type_name -> gitaly.ChangesAlreadyAppliedError
	53,  // 47: gitaly.UserCherryPickError.access_check:type_name -> gitaly.AccessCheckError
	49,  // 48: gitaly.UserRevertRequest.repository:type_name -> gitaly.Repository
	50,  // 49: gitaly.UserRevertRequest.user:type_name -> gitaly.User
	59,  // 50: gitaly.UserRevertRequest.commit:type_name -> gitaly.GitCommit
	49,  // 51: gitaly.UserRevertRequest.start_repository:type_name -> gitaly.Repository
	55,  // 52: gitaly.UserRevertRequest.timestamp:type_name -> google.protobuf.Timestamp
	22,  // 53: gitaly.UserRevertResponse.branch_update:type_name -> gitaly.OperationBranchUpdate
	0,   // 54: gitaly.UserRevertResponse.create_tree_error_code:type_name -> gitaly.UserRevertResponse.CreateTreeError
	58,  // 55: gitaly.UserRevertError.merge_conflict:type_name -> gitaly.MergeConflictError
	61,  // 56: gitaly.UserRevertError.changes_already_applied:type_name -> gitaly.ChangesAlreadyAppliedError
	52,  // 57: gitaly.UserRevertError.custom_hook:type_name -> gitaly.CustomHookError
	60,  // 58: gitaly.UserRevertError.not_ancestor:type_name -> gitaly.NotAncestorError
	1,   // 59: gitaly.UserCommitFilesActionHeader.action:type_name -> gitaly.UserCommitFilesActionHeader.ActionType
	31,  // 60: gitaly.UserCommitFilesAction.header:type_name -> gitaly.UserCommitFilesActionHeader
	49,  // 61: gitaly.UserCommitFilesRequestHeader.repository:type_name -> gitaly.Repository
	50,  // 62: gitaly.UserCommitFilesRequestHeader.user:type_name -> gitaly.User
	49,  // 63: gitaly.UserCommitFilesRequestHeader.start_repository:type_name -> gitaly.Repository
	55,  // 64: gitaly.UserCommitFilesRequestHeader.timestamp:type_name -> google.protobuf.Timestamp
	33,  // 65: gitaly.UserCommitFilesRequest.header:type_name -> gitaly.UserCommitFilesRequestHeader
	32,  // 66: gitaly.UserCommitFilesRequest.action:type_name -> gitaly.UserCommitFilesAction
	22,  // 67: gitaly.UserCommitFilesResponse.branch_update:type_name -> gitaly.OperationBranchUpdate
	53,  // 68: gitaly.UserCommitFilesError.access_check:type_name -> gitaly.AccessCheckError
	62,  // 69: gitaly.UserCommitFilesError.index_update:type_name -> gitaly.IndexError
	52,  // 70: gitaly.UserCommitFilesError.custom_hook:type_name -> gitaly.CustomHookError
	47,  // 71: gitaly.UserRebaseConfirmableRequest.header:type_name -> gitaly.UserRebaseConfirmableRequest.Header
	49,  // 72: gitaly.UserSquashRequest.repository:type_name -> gitaly.Repository
	50,  // 73: gitaly.UserSquashRequest.user:type_name -> gitaly.User
	50,  // 74: gitaly.UserSquashRequest.author:type_name -> gitaly.User
	55,  // 75: gitaly.UserSquashRequest.timestamp:type_name -> google.protobuf.Timestamp
	58,  // 76: gitaly.UserRebaseConfirmableError.rebase_conflict:type_name -> gitaly.MergeConflictError
	53,  // 77: gitaly.UserRebaseConfirmableError.access_check:type_name -> gitaly.AccessCheckError
	63,  // 78: gitaly.UserSquashError.resolve_revision:type_name -> gitaly.ResolveRevisionError
	58,  // 79: gitaly.UserSquashError.rebase_conflict:type_name -> gitaly.MergeConflictError
	48,  // 80: gitaly.UserApplyPatchRequest.header:type_name -> gitaly.UserApplyPatchRequest.Header
	22,  // 81: gitaly.UserApplyPatchResponse.branch_update:type_name -> gitaly.OperationBranchUpdate
	49,  // 82: gitaly.UserUpdateSubmoduleRequest.repository:type_name -> gitaly.Repository
	50,  // 83: gitaly.UserUpdateSubmoduleRequest.user:type_name -> gitaly.User
	55,  // 84: gitaly.UserUpdateSubmoduleRequest.timestamp:type_name -> google.protobuf.Timestamp
	22,  // 85: gitaly.UserUpdateSubmoduleResponse.branch_update:type_name -> gitaly.OperationBranchUpdate
	49,  // 86: gitaly.UserRebaseConfirmableRequest.Header.repository:type_name -> gitaly.Repository
	50,  // 87: gitaly.UserRebaseConfirmableRequest.Header.user:type_name -> gitaly.User
	49,  // 88: gitaly.UserRebaseConfirmableRequest.Header.remote_repository:type_name -> gitaly.Repository
	55,  // 89: gitaly.UserRebaseConfirmableRequest.Header.timestamp:type_name -> google.protobuf.Timestamp
	49,  // 90: gitaly.UserApplyPatchRequest.Header.repository:type_name -> gitaly.Repository
	50,  // 91: gitaly.UserApplyPatchRequest.Header.user:type_name -> gitaly.User
	55,  // 92: gitaly.UserApplyPatchRequest.Header.timestamp:type_name -> google.protobuf.Timestamp
	2,   // 93: gitaly.OperationService.UserCreateBranch:input_type -> gitaly.UserCreateBranchRequest
	5,   // 94: gitaly.OperationService.UserUpdateBranch:input_type -> gitaly.UserUpdateBranchRequest
	7,   // 95: gitaly.OperationService.UserDeleteBranch:input_type -> gitaly.UserDeleteBranchRequest
	12,  // 96: gitaly.OperationService.UserCreateTag:input_type -> gitaly.UserCreateTagRequest
	10,  // 97: gitaly.OperationService.UserDeleteTag:input_type -> gitaly.UserDeleteTagRequest
	18,  // 98: gitaly.OperationService.UserMergeToRef:input_type -> gitaly.UserMergeToRefRequest
	20,  // 99: gitaly.OperationService.UserRebaseToRef:input_type -> gitaly.UserRebaseToRefRequest
	15,  // 100: gitaly.OperationService.UserMergeBranch:input_type -> gitaly.UserMergeBranchRequest
	23,  // 101: gitaly.OperationService.UserFFBranch:input_type -> gitaly.UserFFBranchRequest
	25,  // 102: gitaly.OperationService.UserCherryPick:input_type -> gitaly.UserCherryPickRequest
	34,  // 103: gitaly.OperationService.UserCommitFiles:input_type -> gitaly.UserCommitFilesRequest
	37,  // 104: gitaly.OperationService.UserRebaseConfirmable:input_type -> gitaly.UserRebaseConfirmableRequest
	28,  // 105: gitaly.OperationService.UserRevert:input_type -> gitaly.UserRevertRequest
	39,  // 106: gitaly.OperationService.UserSquash:input_type -> gitaly.UserSquashRequest
	43,  // 107: gitaly.OperationService.UserApplyPatch:input_type -> gitaly.UserApplyPatchRequest
	45,  // 108: gitaly.OperationService.UserUpdateSubmodule:input_type -> gitaly.UserUpdateSubmoduleRequest
	3,   // 109: gitaly.OperationService.UserCreateBranch:output_type -> gitaly.UserCreateBranchResponse
	6,   // 110: gitaly.OperationService.UserUpdateBranch:output_type -> gitaly.UserUpdateBranchResponse
	8,   // 111: gitaly.OperationService.UserDeleteBranch:output_type -> gitaly.UserDeleteBranchResponse
	13,  // 112: gitaly.OperationService.UserCreateTag:output_type -> gitaly.UserCreateTagResponse
	11,  // 113: gitaly.OperationService.UserDeleteTag:output_type -> gitaly.UserDeleteTagResponse
	19,  // 114: gitaly.OperationService.UserMergeToRef:output_type -> gitaly.UserMergeToRefResponse
	21,  // 115: gitaly.OperationService.UserRebaseToRef:output_type -> gitaly.UserRebaseToRefResponse
	16,  // 116: gitaly.OperationService.UserMergeBranch:output_type -> gitaly.UserMergeBranchResponse
	24,  // 117: gitaly.OperationService.UserFFBranch:output_type -> gitaly.UserFFBranchResponse
	26,  // 118: gitaly.OperationService.UserCherryPick:output_type -> gitaly.UserCherryPickResponse
	35,  // 119: gitaly.OperationService.UserCommitFiles:output_type -> gitaly.UserCommitFilesResponse
	38,  // 120: gitaly.OperationService.UserRebaseConfirmable:output_type -> gitaly.UserRebaseConfirmableResponse
	29,  // 121: gitaly.OperationService.UserRevert:output_type -> gitaly.UserRevertResponse
	40,  // 122: gitaly.OperationService.UserSquash:output_type -> gitaly.UserSquashResponse
	44,  // 123: gitaly.OperationService.UserApplyPatch:output_type -> gitaly.UserApplyPatchResponse
	46,  // 124: gitaly.OperationService.UserUpdateSubmodule:output_type -> gitaly.UserUpdateSubmoduleResponse
	109, // [109:125] is the sub-list for method output_type
	93,  // [93:109] is the sub-list for method input_type
	93,  // [93:93] is the sub-list for extension type_name
	93,  // [93:93] is the sub-list for extension extendee
	0,   // [0:93] is the sub-list for field type_name
}

func init() { file_operations_proto_init() }
func file_operations_proto_init() {
	if File_operations_proto != nil {
		return
	}
	file_errors_proto_init()
	file_lint_proto_init()
	file_shared_proto_init()
	if !protoimpl.UnsafeEnabled {
		file_operations_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCreateBranchRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCreateBranchResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCreateBranchError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserUpdateBranchRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserUpdateBranchResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserDeleteBranchRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserDeleteBranchResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserDeleteBranchError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserDeleteTagRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserDeleteTagResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCreateTagRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCreateTagResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCreateTagError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserMergeBranchRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserMergeBranchResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserMergeBranchError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserMergeToRefRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserMergeToRefResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRebaseToRefRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRebaseToRefResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*OperationBranchUpdate); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserFFBranchRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserFFBranchResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCherryPickRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCherryPickResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCherryPickError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRevertRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRevertResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRevertError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCommitFilesActionHeader); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCommitFilesAction); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCommitFilesRequestHeader); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCommitFilesRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCommitFilesResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserCommitFilesError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRebaseConfirmableRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRebaseConfirmableResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserSquashRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserSquashResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRebaseConfirmableError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserSquashError); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserApplyPatchRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserApplyPatchResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserUpdateSubmoduleRequest); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserUpdateSubmoduleResponse); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserRebaseConfirmableRequest_Header); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
		file_operations_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
			switch v := v.(*UserApplyPatchRequest_Header); i {
			case 0:
				return &v.state
			case 1:
				return &v.sizeCache
			case 2:
				return &v.unknownFields
			default:
				return nil
			}
		}
	}
	file_operations_proto_msgTypes[2].OneofWrappers = []interface{}{
		(*UserCreateBranchError_CustomHook)(nil),
	}
	file_operations_proto_msgTypes[7].OneofWrappers = []interface{}{
		(*UserDeleteBranchError_AccessCheck)(nil),
		(*UserDeleteBranchError_ReferenceUpdate)(nil),
		(*UserDeleteBranchError_CustomHook)(nil),
	}
	file_operations_proto_msgTypes[12].OneofWrappers = []interface{}{
		(*UserCreateTagError_AccessCheck)(nil),
		(*UserCreateTagError_ReferenceUpdate)(nil),
		(*UserCreateTagError_CustomHook)(nil),
		(*UserCreateTagError_ReferenceExists)(nil),
	}
	file_operations_proto_msgTypes[15].OneofWrappers = []interface{}{
		(*UserMergeBranchError_AccessCheck)(nil),
		(*UserMergeBranchError_ReferenceUpdate)(nil),
		(*UserMergeBranchError_CustomHook)(nil),
		(*UserMergeBranchError_MergeConflict)(nil),
	}
	file_operations_proto_msgTypes[25].OneofWrappers = []interface{}{
		(*UserCherryPickError_CherryPickConflict)(nil),
		(*UserCherryPickError_TargetBranchDiverged)(nil),
		(*UserCherryPickError_ChangesAlreadyApplied)(nil),
		(*UserCherryPickError_AccessCheck)(nil),
	}
	file_operations_proto_msgTypes[28].OneofWrappers = []interface{}{
		(*UserRevertError_MergeConflict)(nil),
		(*UserRevertError_ChangesAlreadyApplied)(nil),
		(*UserRevertError_CustomHook)(nil),
		(*UserRevertError_NotAncestor)(nil),
	}
	file_operations_proto_msgTypes[30].OneofWrappers = []interface{}{
		(*UserCommitFilesAction_Header)(nil),
		(*UserCommitFilesAction_Content)(nil),
	}
	file_operations_proto_msgTypes[32].OneofWrappers = []interface{}{
		(*UserCommitFilesRequest_Header)(nil),
		(*UserCommitFilesRequest_Action)(nil),
	}
	file_operations_proto_msgTypes[34].OneofWrappers = []interface{}{
		(*UserCommitFilesError_AccessCheck)(nil),
		(*UserCommitFilesError_IndexUpdate)(nil),
		(*UserCommitFilesError_CustomHook)(nil),
	}
	file_operations_proto_msgTypes[35].OneofWrappers = []interface{}{
		(*UserRebaseConfirmableRequest_Header_)(nil),
		(*UserRebaseConfirmableRequest_Apply)(nil),
	}
	file_operations_proto_msgTypes[36].OneofWrappers = []interface{}{
		(*UserRebaseConfirmableResponse_RebaseSha)(nil),
		(*UserRebaseConfirmableResponse_RebaseApplied)(nil),
	}
	file_operations_proto_msgTypes[39].OneofWrappers = []interface{}{
		(*UserRebaseConfirmableError_RebaseConflict)(nil),
		(*UserRebaseConfirmableError_AccessCheck)(nil),
	}
	file_operations_proto_msgTypes[40].OneofWrappers = []interface{}{
		(*UserSquashError_ResolveRevision)(nil),
		(*UserSquashError_RebaseConflict)(nil),
	}
	file_operations_proto_msgTypes[41].OneofWrappers = []interface{}{
		(*UserApplyPatchRequest_Header_)(nil),
		(*UserApplyPatchRequest_Patches)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: file_operations_proto_rawDesc,
			NumEnums:      2,
			NumMessages:   47,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_operations_proto_goTypes,
		DependencyIndexes: file_operations_proto_depIdxs,
		EnumInfos:         file_operations_proto_enumTypes,
		MessageInfos:      file_operations_proto_msgTypes,
	}.Build()
	File_operations_proto = out.File
	file_operations_proto_rawDesc = nil
	file_operations_proto_goTypes = nil
	file_operations_proto_depIdxs = nil
}
