go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/cv/internal/changelist/storage.pb.go (about)

     1  // Copyright 2020 The LUCI Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Code generated by protoc-gen-go. DO NOT EDIT.
    16  // versions:
    17  // 	protoc-gen-go v1.31.0
    18  // 	protoc        v3.21.7
    19  // source: go.chromium.org/luci/cv/internal/changelist/storage.proto
    20  
    21  package changelist
    22  
    23  import (
    24  	gerrit "go.chromium.org/luci/common/proto/gerrit"
    25  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    26  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    27  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    28  	reflect "reflect"
    29  	sync "sync"
    30  )
    31  
    32  const (
    33  	// Verify that this generated code is sufficiently up-to-date.
    34  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    35  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    36  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    37  )
    38  
    39  type DepKind int32
    40  
    41  const (
    42  	DepKind_DEP_KIND_UNSPECIFIED DepKind = 0
    43  	// Dep MUST be patched in / submitted before the dependent CL.
    44  	DepKind_HARD DepKind = 1
    45  	// Dep SHOULD be patched in / submitted before the dependent CL,
    46  	// but doesn't have to be.
    47  	DepKind_SOFT DepKind = 2
    48  )
    49  
    50  // Enum value maps for DepKind.
    51  var (
    52  	DepKind_name = map[int32]string{
    53  		0: "DEP_KIND_UNSPECIFIED",
    54  		1: "HARD",
    55  		2: "SOFT",
    56  	}
    57  	DepKind_value = map[string]int32{
    58  		"DEP_KIND_UNSPECIFIED": 0,
    59  		"HARD":                 1,
    60  		"SOFT":                 2,
    61  	}
    62  )
    63  
    64  func (x DepKind) Enum() *DepKind {
    65  	p := new(DepKind)
    66  	*p = x
    67  	return p
    68  }
    69  
    70  func (x DepKind) String() string {
    71  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    72  }
    73  
    74  func (DepKind) Descriptor() protoreflect.EnumDescriptor {
    75  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes[0].Descriptor()
    76  }
    77  
    78  func (DepKind) Type() protoreflect.EnumType {
    79  	return &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes[0]
    80  }
    81  
    82  func (x DepKind) Number() protoreflect.EnumNumber {
    83  	return protoreflect.EnumNumber(x)
    84  }
    85  
    86  // Deprecated: Use DepKind.Descriptor instead.
    87  func (DepKind) EnumDescriptor() ([]byte, []int) {
    88  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{0}
    89  }
    90  
    91  // Snapshot stores a snapshot of CL info as seen by CV at a certain time.
    92  //
    93  // When stored in CL entity, represents latest known Gerrit data.
    94  // When stored in RunCL entity, represents data pertaining to a fixed patchset.
    95  type Snapshot struct {
    96  	state         protoimpl.MessageState
    97  	sizeCache     protoimpl.SizeCache
    98  	unknownFields protoimpl.UnknownFields
    99  
   100  	// The timestamp from external system.
   101  	// Used to determine if re-querying external system is needed.
   102  	ExternalUpdateTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=external_update_time,json=externalUpdateTime,proto3" json:"external_update_time,omitempty"`
   103  	// LUCI project in the context of which this snapshot was saved.
   104  	//
   105  	// Since a CL isn't a resource of CV, CV can't infer whether specific LUCI
   106  	// project has access to a CL w/o re-querying Gerrit and effectively
   107  	// recomputing the snapshot.
   108  	LuciProject string `protobuf:"bytes,2,opt,name=luci_project,json=luciProject,proto3" json:"luci_project,omitempty"`
   109  	// Resolved dependencies of a CL.
   110  	Deps []*Dep `protobuf:"bytes,3,rep,name=deps,proto3" json:"deps,omitempty"`
   111  	// Patchset is incremental number of the latest patchset (aka revision).
   112  	Patchset int32 `protobuf:"varint,4,opt,name=patchset,proto3" json:"patchset,omitempty"`
   113  	// MinEquivalentPatchset is the smallest and hence the earliest patchset
   114  	// which is code-wise equivalent to the latest one.
   115  	//
   116  	// See gerrit.EquivalentPatchsetRange function for details.
   117  	//
   118  	// CV tracks this to determine which prior tryjobs can be re-used and which
   119  	// can be canceled.
   120  	MinEquivalentPatchset int32 `protobuf:"varint,5,opt,name=min_equivalent_patchset,json=minEquivalentPatchset,proto3" json:"min_equivalent_patchset,omitempty"`
   121  	// If set, indicates problems while ingesting CL into CV, which ought to be
   122  	// communicated back to user.
   123  	Errors []*CLError `protobuf:"bytes,6,rep,name=errors,proto3" json:"errors,omitempty"`
   124  	// Outdated if set means Snapshot must be considered likely outdated due to
   125  	// recent CV mutations.
   126  	//
   127  	// In particular, Project Manager does not act on the CLs with .Outdated set.
   128  	Outdated *Snapshot_Outdated `protobuf:"bytes,7,opt,name=outdated,proto3" json:"outdated,omitempty"`
   129  	// Metadata is an ordered list of key-value pairs, which may later be
   130  	// interpreted by CV guts.
   131  	//
   132  	// For example,
   133  	//
   134  	//	[("No-Tree-Checks", "True"), ("NOTRY", "TRUE")].
   135  	//
   136  	// In case of Gerrit CLs, these are extracted from CL descriptions,
   137  	// The Git-Footer-Style keys are normalized.
   138  	// The values are stripped from beginning and trailing whitespace.
   139  	Metadata []*StringPair `protobuf:"bytes,8,rep,name=metadata,proto3" json:"metadata,omitempty"`
   140  	// CL-kind specific data.
   141  	//
   142  	// Types that are assignable to Kind:
   143  	//
   144  	//	*Snapshot_Gerrit
   145  	Kind isSnapshot_Kind `protobuf_oneof:"kind"`
   146  }
   147  
   148  func (x *Snapshot) Reset() {
   149  	*x = Snapshot{}
   150  	if protoimpl.UnsafeEnabled {
   151  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0]
   152  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   153  		ms.StoreMessageInfo(mi)
   154  	}
   155  }
   156  
   157  func (x *Snapshot) String() string {
   158  	return protoimpl.X.MessageStringOf(x)
   159  }
   160  
   161  func (*Snapshot) ProtoMessage() {}
   162  
   163  func (x *Snapshot) ProtoReflect() protoreflect.Message {
   164  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0]
   165  	if protoimpl.UnsafeEnabled && x != nil {
   166  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   167  		if ms.LoadMessageInfo() == nil {
   168  			ms.StoreMessageInfo(mi)
   169  		}
   170  		return ms
   171  	}
   172  	return mi.MessageOf(x)
   173  }
   174  
   175  // Deprecated: Use Snapshot.ProtoReflect.Descriptor instead.
   176  func (*Snapshot) Descriptor() ([]byte, []int) {
   177  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{0}
   178  }
   179  
   180  func (x *Snapshot) GetExternalUpdateTime() *timestamppb.Timestamp {
   181  	if x != nil {
   182  		return x.ExternalUpdateTime
   183  	}
   184  	return nil
   185  }
   186  
   187  func (x *Snapshot) GetLuciProject() string {
   188  	if x != nil {
   189  		return x.LuciProject
   190  	}
   191  	return ""
   192  }
   193  
   194  func (x *Snapshot) GetDeps() []*Dep {
   195  	if x != nil {
   196  		return x.Deps
   197  	}
   198  	return nil
   199  }
   200  
   201  func (x *Snapshot) GetPatchset() int32 {
   202  	if x != nil {
   203  		return x.Patchset
   204  	}
   205  	return 0
   206  }
   207  
   208  func (x *Snapshot) GetMinEquivalentPatchset() int32 {
   209  	if x != nil {
   210  		return x.MinEquivalentPatchset
   211  	}
   212  	return 0
   213  }
   214  
   215  func (x *Snapshot) GetErrors() []*CLError {
   216  	if x != nil {
   217  		return x.Errors
   218  	}
   219  	return nil
   220  }
   221  
   222  func (x *Snapshot) GetOutdated() *Snapshot_Outdated {
   223  	if x != nil {
   224  		return x.Outdated
   225  	}
   226  	return nil
   227  }
   228  
   229  func (x *Snapshot) GetMetadata() []*StringPair {
   230  	if x != nil {
   231  		return x.Metadata
   232  	}
   233  	return nil
   234  }
   235  
   236  func (m *Snapshot) GetKind() isSnapshot_Kind {
   237  	if m != nil {
   238  		return m.Kind
   239  	}
   240  	return nil
   241  }
   242  
   243  func (x *Snapshot) GetGerrit() *Gerrit {
   244  	if x, ok := x.GetKind().(*Snapshot_Gerrit); ok {
   245  		return x.Gerrit
   246  	}
   247  	return nil
   248  }
   249  
   250  type isSnapshot_Kind interface {
   251  	isSnapshot_Kind()
   252  }
   253  
   254  type Snapshot_Gerrit struct {
   255  	Gerrit *Gerrit `protobuf:"bytes,11,opt,name=gerrit,proto3,oneof"`
   256  }
   257  
   258  func (*Snapshot_Gerrit) isSnapshot_Kind() {}
   259  
   260  type Dep struct {
   261  	state         protoimpl.MessageState
   262  	sizeCache     protoimpl.SizeCache
   263  	unknownFields protoimpl.UnknownFields
   264  
   265  	// CLID is internal CV ID of a CL which is the dependency.
   266  	Clid int64   `protobuf:"varint,1,opt,name=clid,proto3" json:"clid,omitempty"`
   267  	Kind DepKind `protobuf:"varint,2,opt,name=kind,proto3,enum=cv.internal.changelist.DepKind" json:"kind,omitempty"`
   268  }
   269  
   270  func (x *Dep) Reset() {
   271  	*x = Dep{}
   272  	if protoimpl.UnsafeEnabled {
   273  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[1]
   274  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   275  		ms.StoreMessageInfo(mi)
   276  	}
   277  }
   278  
   279  func (x *Dep) String() string {
   280  	return protoimpl.X.MessageStringOf(x)
   281  }
   282  
   283  func (*Dep) ProtoMessage() {}
   284  
   285  func (x *Dep) ProtoReflect() protoreflect.Message {
   286  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[1]
   287  	if protoimpl.UnsafeEnabled && x != nil {
   288  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   289  		if ms.LoadMessageInfo() == nil {
   290  			ms.StoreMessageInfo(mi)
   291  		}
   292  		return ms
   293  	}
   294  	return mi.MessageOf(x)
   295  }
   296  
   297  // Deprecated: Use Dep.ProtoReflect.Descriptor instead.
   298  func (*Dep) Descriptor() ([]byte, []int) {
   299  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{1}
   300  }
   301  
   302  func (x *Dep) GetClid() int64 {
   303  	if x != nil {
   304  		return x.Clid
   305  	}
   306  	return 0
   307  }
   308  
   309  func (x *Dep) GetKind() DepKind {
   310  	if x != nil {
   311  		return x.Kind
   312  	}
   313  	return DepKind_DEP_KIND_UNSPECIFIED
   314  }
   315  
   316  type Gerrit struct {
   317  	state         protoimpl.MessageState
   318  	sizeCache     protoimpl.SizeCache
   319  	unknownFields protoimpl.UnknownFields
   320  
   321  	// Gerrit host.
   322  	Host string `protobuf:"bytes,5,opt,name=host,proto3" json:"host,omitempty"`
   323  	// Info contains subset of ChangeInfo listed below.
   324  	//
   325  	// NOTE: keep this list in sync with RemoveUnusedGerritInfo() function.
   326  	//   - number
   327  	//   - owner
   328  	//   - id
   329  	//   - email (may be not set)
   330  	//   - project
   331  	//   - ref
   332  	//   - status
   333  	//   - current_revision
   334  	//   - revisions
   335  	//   - kind
   336  	//   - number
   337  	//   - ref
   338  	//   - created
   339  	//   - commit
   340  	//   - id
   341  	//   - parents
   342  	//   - labels
   343  	//   - optional
   344  	//   - all (only if vote != 0)
   345  	//   - user
   346  	//   - id
   347  	//   - email (may be not set)
   348  	//   - value
   349  	//   - messages
   350  	//   - id
   351  	//   - date
   352  	//   - message
   353  	//   - author
   354  	//   - id
   355  	//   - realauthor
   356  	//   - id
   357  	//   - updated
   358  	//   - created
   359  	Info *gerrit.ChangeInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"`
   360  	// Files are filenames touched in the current revision.
   361  	//
   362  	// It's derived from gerrit.ListFilesResponse, see
   363  	// https://gerrit-review.googlesource.com/Documentation/rest-api-changes.html#list-files.
   364  	Files []string `protobuf:"bytes,2,rep,name=files,proto3" json:"files,omitempty"`
   365  	// Git dependencies of the current revision.
   366  	GitDeps []*GerritGitDep `protobuf:"bytes,3,rep,name=git_deps,json=gitDeps,proto3" json:"git_deps,omitempty"`
   367  	// Free-form dependencies. Currently, sourced from CQ-Depend footers.
   368  	// In the future, this may be derived from Gerrit hashtags, topics, or other
   369  	// mechanisms.
   370  	SoftDeps []*GerritSoftDep `protobuf:"bytes,4,rep,name=soft_deps,json=softDeps,proto3" json:"soft_deps,omitempty"`
   371  }
   372  
   373  func (x *Gerrit) Reset() {
   374  	*x = Gerrit{}
   375  	if protoimpl.UnsafeEnabled {
   376  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[2]
   377  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   378  		ms.StoreMessageInfo(mi)
   379  	}
   380  }
   381  
   382  func (x *Gerrit) String() string {
   383  	return protoimpl.X.MessageStringOf(x)
   384  }
   385  
   386  func (*Gerrit) ProtoMessage() {}
   387  
   388  func (x *Gerrit) ProtoReflect() protoreflect.Message {
   389  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[2]
   390  	if protoimpl.UnsafeEnabled && x != nil {
   391  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   392  		if ms.LoadMessageInfo() == nil {
   393  			ms.StoreMessageInfo(mi)
   394  		}
   395  		return ms
   396  	}
   397  	return mi.MessageOf(x)
   398  }
   399  
   400  // Deprecated: Use Gerrit.ProtoReflect.Descriptor instead.
   401  func (*Gerrit) Descriptor() ([]byte, []int) {
   402  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{2}
   403  }
   404  
   405  func (x *Gerrit) GetHost() string {
   406  	if x != nil {
   407  		return x.Host
   408  	}
   409  	return ""
   410  }
   411  
   412  func (x *Gerrit) GetInfo() *gerrit.ChangeInfo {
   413  	if x != nil {
   414  		return x.Info
   415  	}
   416  	return nil
   417  }
   418  
   419  func (x *Gerrit) GetFiles() []string {
   420  	if x != nil {
   421  		return x.Files
   422  	}
   423  	return nil
   424  }
   425  
   426  func (x *Gerrit) GetGitDeps() []*GerritGitDep {
   427  	if x != nil {
   428  		return x.GitDeps
   429  	}
   430  	return nil
   431  }
   432  
   433  func (x *Gerrit) GetSoftDeps() []*GerritSoftDep {
   434  	if x != nil {
   435  		return x.SoftDeps
   436  	}
   437  	return nil
   438  }
   439  
   440  // GerritGitDep is a dependency discovered via Git child->parent chain for one Gerrit CL.
   441  type GerritGitDep struct {
   442  	state         protoimpl.MessageState
   443  	sizeCache     protoimpl.SizeCache
   444  	unknownFields protoimpl.UnknownFields
   445  
   446  	// Gerrit Change number.
   447  	Change int64 `protobuf:"varint,1,opt,name=change,proto3" json:"change,omitempty"`
   448  	// Immediate is set iff this dep is an immediate parent of the Gerrit CL.
   449  	//
   450  	// Immediate dep must be submitted before its child.
   451  	// Non-immediate CLs don't necessarily have to be submitted before:
   452  	//
   453  	//	for example, for a chain <base> <- A1 <- B1 <- C1 <- D1
   454  	//	D1's deps are [A,B,C] but only C is immediate, and 1 stands for patchset.
   455  	//	Developer may then swap B,C without re-uploading D (say, to avoid
   456  	//	patchset churn), resulting in a new logical chain:
   457  	//	   <base> <- A1 <- C2 <- B2
   458  	//	                \
   459  	//	                 <- B1 <- C1 <- D1
   460  	//
   461  	//	In this case, Gerrit's related changes for D1 will still return A1,B1,C1,
   462  	//	which CV interprets as C must be landed before D, while B and A should
   463  	//	be landed before D.
   464  	Immediate bool `protobuf:"varint,2,opt,name=immediate,proto3" json:"immediate,omitempty"`
   465  }
   466  
   467  func (x *GerritGitDep) Reset() {
   468  	*x = GerritGitDep{}
   469  	if protoimpl.UnsafeEnabled {
   470  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[3]
   471  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   472  		ms.StoreMessageInfo(mi)
   473  	}
   474  }
   475  
   476  func (x *GerritGitDep) String() string {
   477  	return protoimpl.X.MessageStringOf(x)
   478  }
   479  
   480  func (*GerritGitDep) ProtoMessage() {}
   481  
   482  func (x *GerritGitDep) ProtoReflect() protoreflect.Message {
   483  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[3]
   484  	if protoimpl.UnsafeEnabled && x != nil {
   485  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   486  		if ms.LoadMessageInfo() == nil {
   487  			ms.StoreMessageInfo(mi)
   488  		}
   489  		return ms
   490  	}
   491  	return mi.MessageOf(x)
   492  }
   493  
   494  // Deprecated: Use GerritGitDep.ProtoReflect.Descriptor instead.
   495  func (*GerritGitDep) Descriptor() ([]byte, []int) {
   496  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{3}
   497  }
   498  
   499  func (x *GerritGitDep) GetChange() int64 {
   500  	if x != nil {
   501  		return x.Change
   502  	}
   503  	return 0
   504  }
   505  
   506  func (x *GerritGitDep) GetImmediate() bool {
   507  	if x != nil {
   508  		return x.Immediate
   509  	}
   510  	return false
   511  }
   512  
   513  type GerritSoftDep struct {
   514  	state         protoimpl.MessageState
   515  	sizeCache     protoimpl.SizeCache
   516  	unknownFields protoimpl.UnknownFields
   517  
   518  	// Gerrit host.
   519  	Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"`
   520  	// Gerrit change number.
   521  	Change int64 `protobuf:"varint,2,opt,name=change,proto3" json:"change,omitempty"`
   522  }
   523  
   524  func (x *GerritSoftDep) Reset() {
   525  	*x = GerritSoftDep{}
   526  	if protoimpl.UnsafeEnabled {
   527  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[4]
   528  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   529  		ms.StoreMessageInfo(mi)
   530  	}
   531  }
   532  
   533  func (x *GerritSoftDep) String() string {
   534  	return protoimpl.X.MessageStringOf(x)
   535  }
   536  
   537  func (*GerritSoftDep) ProtoMessage() {}
   538  
   539  func (x *GerritSoftDep) ProtoReflect() protoreflect.Message {
   540  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[4]
   541  	if protoimpl.UnsafeEnabled && x != nil {
   542  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   543  		if ms.LoadMessageInfo() == nil {
   544  			ms.StoreMessageInfo(mi)
   545  		}
   546  		return ms
   547  	}
   548  	return mi.MessageOf(x)
   549  }
   550  
   551  // Deprecated: Use GerritSoftDep.ProtoReflect.Descriptor instead.
   552  func (*GerritSoftDep) Descriptor() ([]byte, []int) {
   553  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{4}
   554  }
   555  
   556  func (x *GerritSoftDep) GetHost() string {
   557  	if x != nil {
   558  		return x.Host
   559  	}
   560  	return ""
   561  }
   562  
   563  func (x *GerritSoftDep) GetChange() int64 {
   564  	if x != nil {
   565  		return x.Change
   566  	}
   567  	return 0
   568  }
   569  
   570  // ApplicableConfig keeps track of configs applicable to a CL.
   571  //
   572  // This is computed based on known set of LUCI project configs, versions of
   573  // which are updated by CV independently, so the ApplicableConfig are also
   574  // eventually consistent.
   575  //
   576  // Normally, there is 1 applicable configs = exactly 1 project with 1 config
   577  // group. If CL is no longer watched by CV, there will be 0 applicable configs.
   578  //
   579  // Sometimes, there can be 2+ applicable configs. This happens if either:
   580  //   - eventual consistency: responsibility for CL is moved from one LUCI project
   581  //     to another. Three is no way to make this atomically, so CL may temporarily
   582  //     end up with 0 or 2 projects watching it, before settling on just 1.
   583  //   - misconfiguration: two projects or 2 different ConfigGroups within the same
   584  //     project watch the same CL.
   585  //
   586  // In either case, CV refuses to guess and will abstain from processing such
   587  // CLs, but storing the list is very useful for CV debugging and potentially for
   588  // better diagnostic messages to CV users and LUCI project owners.
   589  type ApplicableConfig struct {
   590  	state         protoimpl.MessageState
   591  	sizeCache     protoimpl.SizeCache
   592  	unknownFields protoimpl.UnknownFields
   593  
   594  	Projects []*ApplicableConfig_Project `protobuf:"bytes,2,rep,name=projects,proto3" json:"projects,omitempty"`
   595  }
   596  
   597  func (x *ApplicableConfig) Reset() {
   598  	*x = ApplicableConfig{}
   599  	if protoimpl.UnsafeEnabled {
   600  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[5]
   601  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   602  		ms.StoreMessageInfo(mi)
   603  	}
   604  }
   605  
   606  func (x *ApplicableConfig) String() string {
   607  	return protoimpl.X.MessageStringOf(x)
   608  }
   609  
   610  func (*ApplicableConfig) ProtoMessage() {}
   611  
   612  func (x *ApplicableConfig) ProtoReflect() protoreflect.Message {
   613  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[5]
   614  	if protoimpl.UnsafeEnabled && x != nil {
   615  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   616  		if ms.LoadMessageInfo() == nil {
   617  			ms.StoreMessageInfo(mi)
   618  		}
   619  		return ms
   620  	}
   621  	return mi.MessageOf(x)
   622  }
   623  
   624  // Deprecated: Use ApplicableConfig.ProtoReflect.Descriptor instead.
   625  func (*ApplicableConfig) Descriptor() ([]byte, []int) {
   626  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{5}
   627  }
   628  
   629  func (x *ApplicableConfig) GetProjects() []*ApplicableConfig_Project {
   630  	if x != nil {
   631  		return x.Projects
   632  	}
   633  	return nil
   634  }
   635  
   636  // Access records which LUCI project can or can't see a CL.
   637  //
   638  // If a LUCI project has Access, it means both:
   639  //
   640  //	(1) the project can read details of the CL (via Git/Gerrit ACLs);
   641  //	(2) the project is the only LUCI project watching this CL in CV
   642  //	    (via the CV config).
   643  //	    Note: there can still be several applicable ConfigGroups of the same
   644  //	    project (see ApplicableConfig).
   645  //
   646  // In practice, .Access is set in 4 cases:
   647  //
   648  // (a) `CQ-Depend: host:number` Gerrit CL footers allow users to specify
   649  //
   650  //	arbitrary dependencies, which typically happens due to typos,
   651  //	but malicious actors can try to get CL details of restricted projects.
   652  //	Either way, CV must not be a confused deputy here and must keep track
   653  //	which project can see what.
   654  //
   655  // (b) due to recent re-configuration of one or more LUCI projects, either
   656  //
   657  //	in CV config and/or in Gerrit ACLs, the previously watched & readable CL
   658  //	becomes unwatched and/or unreadable.
   659  //
   660  // (c) a previously existing CL was deleted (e.g. by its owner or Gerrit
   661  //
   662  //	administrators).
   663  //
   664  // (d) eventual consistency of Gerrit masquerading as HTTP 404 on stale replica,
   665  //
   666  //	while quorum of replicas think CL actually exists and specific LUCI
   667  //	project having access to it.
   668  //
   669  // Unfortunately, (d) isn't easy to distinguish from (b) and (c), so CV resorts
   670  // to tracking time since CL became invisible -- the longer, the more likely it
   671  // is (b) or (c).
   672  //
   673  // Furthermore, in case of (a), iff CV knows nothing about specific Gerrit CL
   674  // identified as `CQ-Depend: host:change`, CV in general can't determine which
   675  // LUCI project is allowed to watch this CL *before* fetching Gerrit project
   676  // (repo) and target ref.
   677  //
   678  // NOTE on CV as confused deputy.
   679  //
   680  // CV works with multiple LUCI projects. As of this writing (June 2021),
   681  // unfortunately, CV doesn't verify that Gerrit repos watched by a LUCI project
   682  // are in fact owned by that LUCI project. Thus, nothing prevents one LUCI
   683  // project from starting to watch repos de-facto owned by another LUCI project.
   684  // This in turn brings 2 problems:
   685  //
   686  // (1) Denial of service: unsolved.
   687  //
   688  //	Mitigation: CV will refuse to work with CLs which are watched by more
   689  //	than 1 project. Since CV will communicate by posting message to affected
   690  //	CL, this should be noticed and fixed quickly.
   691  //
   692  // (2) Information leaks: solved.
   693  //
   694  //	Each LUCI project MUST use project-scoped service account (PSSA)
   695  //	(migration is under way, see https://crbug.com/824492).
   696  //	CV uses this account for all interaction with Gerrit on behalf a specific
   697  //	LUCI project. Corresponding Gerrit repos:
   698  //	  * SHOULD limit read access to its own PSSA + developers,
   699  //	  * MUST limit Submit rights to its own PSSA and possibly developers.
   700  //
   701  // For example,
   702  //   - `infra` project has all its Gerrit CLs public and doesn't care about
   703  //     information leaks. All other LUCI projects can read its CLs, as well
   704  //     as the whole Internet.
   705  //   - `infra-internal` project protects its Gerrit CLs, making them visible
   706  //     to `infra-internal-scoped@...` account only.
   707  //     When CV queries Gerrit on `infra-internal` behalf, CV uses
   708  //     `infra-internal-scoped` account and can fetch the data.
   709  //   - Suppose malicious actor compromised `infra` repo, and placed a new CV
   710  //     config there to start watching CLs of the `infra-internal` project
   711  //     as well as super/secret/repo, which wasn't watched by any CV before.
   712  //   - Unfortunately, CV can't currently object to the new config.
   713  //   - However, when querying Gerrit on `infra` behalf, CV uses
   714  //     `infra-scoped@...` account, which presumably won't be configured with
   715  //     read access to neither infra-internal nor super/secret/repo.
   716  //   - So, corresponding CLs will have .Access entry recording that
   717  //     `infra` has no access to them.
   718  //   - NOTE: CLs of infra-internal will also have .ApplicableConfig with two
   719  //     projects there, which will prevent normal operation of
   720  //     `infra-internal` CV but will not cause any leaks.
   721  type Access struct {
   722  	state         protoimpl.MessageState
   723  	sizeCache     protoimpl.SizeCache
   724  	unknownFields protoimpl.UnknownFields
   725  
   726  	ByProject map[string]*Access_Project `protobuf:"bytes,1,rep,name=by_project,json=byProject,proto3" json:"by_project,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // TODO(tandrii): per-project ApplicableConfig here.
   727  }
   728  
   729  func (x *Access) Reset() {
   730  	*x = Access{}
   731  	if protoimpl.UnsafeEnabled {
   732  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[6]
   733  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   734  		ms.StoreMessageInfo(mi)
   735  	}
   736  }
   737  
   738  func (x *Access) String() string {
   739  	return protoimpl.X.MessageStringOf(x)
   740  }
   741  
   742  func (*Access) ProtoMessage() {}
   743  
   744  func (x *Access) ProtoReflect() protoreflect.Message {
   745  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[6]
   746  	if protoimpl.UnsafeEnabled && x != nil {
   747  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   748  		if ms.LoadMessageInfo() == nil {
   749  			ms.StoreMessageInfo(mi)
   750  		}
   751  		return ms
   752  	}
   753  	return mi.MessageOf(x)
   754  }
   755  
   756  // Deprecated: Use Access.ProtoReflect.Descriptor instead.
   757  func (*Access) Descriptor() ([]byte, []int) {
   758  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{6}
   759  }
   760  
   761  func (x *Access) GetByProject() map[string]*Access_Project {
   762  	if x != nil {
   763  		return x.ByProject
   764  	}
   765  	return nil
   766  }
   767  
   768  // CLError encapsulates all kinds of CL errors, which ultimately result in
   769  // purging of the CL while communicating the reason to the relevant users.
   770  //
   771  // The primary goal of the CLError is to transport via CV guts sufficient
   772  // information to generate a clear user-friendly error message.
   773  type CLError struct {
   774  	state         protoimpl.MessageState
   775  	sizeCache     protoimpl.SizeCache
   776  	unknownFields protoimpl.UnknownFields
   777  
   778  	// Next tag is 12.
   779  	//
   780  	// Types that are assignable to Kind:
   781  	//
   782  	//	*CLError_OwnerLacksEmail
   783  	//	*CLError_WatchedByManyConfigGroups_
   784  	//	*CLError_WatchedByManyProjects_
   785  	//	*CLError_InvalidDeps_
   786  	//	*CLError_UnsupportedMode
   787  	//	*CLError_SelfCqDepend
   788  	//	*CLError_CorruptGerritMetadata
   789  	//	*CLError_ReusedTrigger_
   790  	//	*CLError_CommitBlocked
   791  	//	*CLError_TriggerDeps_
   792  	//	*CLError_DepRunFailed
   793  	Kind isCLError_Kind `protobuf_oneof:"kind"`
   794  }
   795  
   796  func (x *CLError) Reset() {
   797  	*x = CLError{}
   798  	if protoimpl.UnsafeEnabled {
   799  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7]
   800  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   801  		ms.StoreMessageInfo(mi)
   802  	}
   803  }
   804  
   805  func (x *CLError) String() string {
   806  	return protoimpl.X.MessageStringOf(x)
   807  }
   808  
   809  func (*CLError) ProtoMessage() {}
   810  
   811  func (x *CLError) ProtoReflect() protoreflect.Message {
   812  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7]
   813  	if protoimpl.UnsafeEnabled && x != nil {
   814  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   815  		if ms.LoadMessageInfo() == nil {
   816  			ms.StoreMessageInfo(mi)
   817  		}
   818  		return ms
   819  	}
   820  	return mi.MessageOf(x)
   821  }
   822  
   823  // Deprecated: Use CLError.ProtoReflect.Descriptor instead.
   824  func (*CLError) Descriptor() ([]byte, []int) {
   825  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7}
   826  }
   827  
   828  func (m *CLError) GetKind() isCLError_Kind {
   829  	if m != nil {
   830  		return m.Kind
   831  	}
   832  	return nil
   833  }
   834  
   835  func (x *CLError) GetOwnerLacksEmail() bool {
   836  	if x, ok := x.GetKind().(*CLError_OwnerLacksEmail); ok {
   837  		return x.OwnerLacksEmail
   838  	}
   839  	return false
   840  }
   841  
   842  func (x *CLError) GetWatchedByManyConfigGroups() *CLError_WatchedByManyConfigGroups {
   843  	if x, ok := x.GetKind().(*CLError_WatchedByManyConfigGroups_); ok {
   844  		return x.WatchedByManyConfigGroups
   845  	}
   846  	return nil
   847  }
   848  
   849  func (x *CLError) GetWatchedByManyProjects() *CLError_WatchedByManyProjects {
   850  	if x, ok := x.GetKind().(*CLError_WatchedByManyProjects_); ok {
   851  		return x.WatchedByManyProjects
   852  	}
   853  	return nil
   854  }
   855  
   856  func (x *CLError) GetInvalidDeps() *CLError_InvalidDeps {
   857  	if x, ok := x.GetKind().(*CLError_InvalidDeps_); ok {
   858  		return x.InvalidDeps
   859  	}
   860  	return nil
   861  }
   862  
   863  func (x *CLError) GetUnsupportedMode() string {
   864  	if x, ok := x.GetKind().(*CLError_UnsupportedMode); ok {
   865  		return x.UnsupportedMode
   866  	}
   867  	return ""
   868  }
   869  
   870  func (x *CLError) GetSelfCqDepend() bool {
   871  	if x, ok := x.GetKind().(*CLError_SelfCqDepend); ok {
   872  		return x.SelfCqDepend
   873  	}
   874  	return false
   875  }
   876  
   877  func (x *CLError) GetCorruptGerritMetadata() string {
   878  	if x, ok := x.GetKind().(*CLError_CorruptGerritMetadata); ok {
   879  		return x.CorruptGerritMetadata
   880  	}
   881  	return ""
   882  }
   883  
   884  func (x *CLError) GetReusedTrigger() *CLError_ReusedTrigger {
   885  	if x, ok := x.GetKind().(*CLError_ReusedTrigger_); ok {
   886  		return x.ReusedTrigger
   887  	}
   888  	return nil
   889  }
   890  
   891  func (x *CLError) GetCommitBlocked() bool {
   892  	if x, ok := x.GetKind().(*CLError_CommitBlocked); ok {
   893  		return x.CommitBlocked
   894  	}
   895  	return false
   896  }
   897  
   898  func (x *CLError) GetTriggerDeps() *CLError_TriggerDeps {
   899  	if x, ok := x.GetKind().(*CLError_TriggerDeps_); ok {
   900  		return x.TriggerDeps
   901  	}
   902  	return nil
   903  }
   904  
   905  func (x *CLError) GetDepRunFailed() int64 {
   906  	if x, ok := x.GetKind().(*CLError_DepRunFailed); ok {
   907  		return x.DepRunFailed
   908  	}
   909  	return 0
   910  }
   911  
   912  type isCLError_Kind interface {
   913  	isCLError_Kind()
   914  }
   915  
   916  type CLError_OwnerLacksEmail struct {
   917  	OwnerLacksEmail bool `protobuf:"varint,1,opt,name=owner_lacks_email,json=ownerLacksEmail,proto3,oneof"`
   918  }
   919  
   920  type CLError_WatchedByManyConfigGroups_ struct {
   921  	WatchedByManyConfigGroups *CLError_WatchedByManyConfigGroups `protobuf:"bytes,2,opt,name=watched_by_many_config_groups,json=watchedByManyConfigGroups,proto3,oneof"`
   922  }
   923  
   924  type CLError_WatchedByManyProjects_ struct {
   925  	WatchedByManyProjects *CLError_WatchedByManyProjects `protobuf:"bytes,8,opt,name=watched_by_many_projects,json=watchedByManyProjects,proto3,oneof"`
   926  }
   927  
   928  type CLError_InvalidDeps_ struct {
   929  	InvalidDeps *CLError_InvalidDeps `protobuf:"bytes,3,opt,name=invalid_deps,json=invalidDeps,proto3,oneof"`
   930  }
   931  
   932  type CLError_UnsupportedMode struct {
   933  	UnsupportedMode string `protobuf:"bytes,4,opt,name=unsupported_mode,json=unsupportedMode,proto3,oneof"`
   934  }
   935  
   936  type CLError_SelfCqDepend struct {
   937  	SelfCqDepend bool `protobuf:"varint,5,opt,name=self_cq_depend,json=selfCqDepend,proto3,oneof"`
   938  }
   939  
   940  type CLError_CorruptGerritMetadata struct {
   941  	CorruptGerritMetadata string `protobuf:"bytes,6,opt,name=corrupt_gerrit_metadata,json=corruptGerritMetadata,proto3,oneof"`
   942  }
   943  
   944  type CLError_ReusedTrigger_ struct {
   945  	ReusedTrigger *CLError_ReusedTrigger `protobuf:"bytes,7,opt,name=reused_trigger,json=reusedTrigger,proto3,oneof"`
   946  }
   947  
   948  type CLError_CommitBlocked struct {
   949  	// Set to true when the footer "Commit: false" is present.
   950  	CommitBlocked bool `protobuf:"varint,9,opt,name=commit_blocked,json=commitBlocked,proto3,oneof"`
   951  }
   952  
   953  type CLError_TriggerDeps_ struct {
   954  	TriggerDeps *CLError_TriggerDeps `protobuf:"bytes,10,opt,name=trigger_deps,json=triggerDeps,proto3,oneof"`
   955  }
   956  
   957  type CLError_DepRunFailed struct {
   958  	// Set with the CL ID of a failed Run, if the purge-requested-CL depends on
   959  	// the CL.
   960  	DepRunFailed int64 `protobuf:"varint,11,opt,name=dep_run_failed,json=depRunFailed,proto3,oneof"`
   961  }
   962  
   963  func (*CLError_OwnerLacksEmail) isCLError_Kind() {}
   964  
   965  func (*CLError_WatchedByManyConfigGroups_) isCLError_Kind() {}
   966  
   967  func (*CLError_WatchedByManyProjects_) isCLError_Kind() {}
   968  
   969  func (*CLError_InvalidDeps_) isCLError_Kind() {}
   970  
   971  func (*CLError_UnsupportedMode) isCLError_Kind() {}
   972  
   973  func (*CLError_SelfCqDepend) isCLError_Kind() {}
   974  
   975  func (*CLError_CorruptGerritMetadata) isCLError_Kind() {}
   976  
   977  func (*CLError_ReusedTrigger_) isCLError_Kind() {}
   978  
   979  func (*CLError_CommitBlocked) isCLError_Kind() {}
   980  
   981  func (*CLError_TriggerDeps_) isCLError_Kind() {}
   982  
   983  func (*CLError_DepRunFailed) isCLError_Kind() {}
   984  
   985  // CLUpdatedEvent is just a CL ID pinned to its latest known EVersion.
   986  type CLUpdatedEvent struct {
   987  	state         protoimpl.MessageState
   988  	sizeCache     protoimpl.SizeCache
   989  	unknownFields protoimpl.UnknownFields
   990  
   991  	Clid     int64 `protobuf:"varint,1,opt,name=clid,proto3" json:"clid,omitempty"`
   992  	Eversion int64 `protobuf:"varint,2,opt,name=eversion,proto3" json:"eversion,omitempty"`
   993  }
   994  
   995  func (x *CLUpdatedEvent) Reset() {
   996  	*x = CLUpdatedEvent{}
   997  	if protoimpl.UnsafeEnabled {
   998  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[8]
   999  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1000  		ms.StoreMessageInfo(mi)
  1001  	}
  1002  }
  1003  
  1004  func (x *CLUpdatedEvent) String() string {
  1005  	return protoimpl.X.MessageStringOf(x)
  1006  }
  1007  
  1008  func (*CLUpdatedEvent) ProtoMessage() {}
  1009  
  1010  func (x *CLUpdatedEvent) ProtoReflect() protoreflect.Message {
  1011  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[8]
  1012  	if protoimpl.UnsafeEnabled && x != nil {
  1013  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1014  		if ms.LoadMessageInfo() == nil {
  1015  			ms.StoreMessageInfo(mi)
  1016  		}
  1017  		return ms
  1018  	}
  1019  	return mi.MessageOf(x)
  1020  }
  1021  
  1022  // Deprecated: Use CLUpdatedEvent.ProtoReflect.Descriptor instead.
  1023  func (*CLUpdatedEvent) Descriptor() ([]byte, []int) {
  1024  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{8}
  1025  }
  1026  
  1027  func (x *CLUpdatedEvent) GetClid() int64 {
  1028  	if x != nil {
  1029  		return x.Clid
  1030  	}
  1031  	return 0
  1032  }
  1033  
  1034  func (x *CLUpdatedEvent) GetEversion() int64 {
  1035  	if x != nil {
  1036  		return x.Eversion
  1037  	}
  1038  	return 0
  1039  }
  1040  
  1041  // CLUpdatedEvents is a batch of CLUpdatedEvents.
  1042  type CLUpdatedEvents struct {
  1043  	state         protoimpl.MessageState
  1044  	sizeCache     protoimpl.SizeCache
  1045  	unknownFields protoimpl.UnknownFields
  1046  
  1047  	Events []*CLUpdatedEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
  1048  }
  1049  
  1050  func (x *CLUpdatedEvents) Reset() {
  1051  	*x = CLUpdatedEvents{}
  1052  	if protoimpl.UnsafeEnabled {
  1053  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[9]
  1054  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1055  		ms.StoreMessageInfo(mi)
  1056  	}
  1057  }
  1058  
  1059  func (x *CLUpdatedEvents) String() string {
  1060  	return protoimpl.X.MessageStringOf(x)
  1061  }
  1062  
  1063  func (*CLUpdatedEvents) ProtoMessage() {}
  1064  
  1065  func (x *CLUpdatedEvents) ProtoReflect() protoreflect.Message {
  1066  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[9]
  1067  	if protoimpl.UnsafeEnabled && x != nil {
  1068  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1069  		if ms.LoadMessageInfo() == nil {
  1070  			ms.StoreMessageInfo(mi)
  1071  		}
  1072  		return ms
  1073  	}
  1074  	return mi.MessageOf(x)
  1075  }
  1076  
  1077  // Deprecated: Use CLUpdatedEvents.ProtoReflect.Descriptor instead.
  1078  func (*CLUpdatedEvents) Descriptor() ([]byte, []int) {
  1079  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{9}
  1080  }
  1081  
  1082  func (x *CLUpdatedEvents) GetEvents() []*CLUpdatedEvent {
  1083  	if x != nil {
  1084  		return x.Events
  1085  	}
  1086  	return nil
  1087  }
  1088  
  1089  // A string key-value pair.
  1090  type StringPair struct {
  1091  	state         protoimpl.MessageState
  1092  	sizeCache     protoimpl.SizeCache
  1093  	unknownFields protoimpl.UnknownFields
  1094  
  1095  	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
  1096  	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
  1097  }
  1098  
  1099  func (x *StringPair) Reset() {
  1100  	*x = StringPair{}
  1101  	if protoimpl.UnsafeEnabled {
  1102  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[10]
  1103  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1104  		ms.StoreMessageInfo(mi)
  1105  	}
  1106  }
  1107  
  1108  func (x *StringPair) String() string {
  1109  	return protoimpl.X.MessageStringOf(x)
  1110  }
  1111  
  1112  func (*StringPair) ProtoMessage() {}
  1113  
  1114  func (x *StringPair) ProtoReflect() protoreflect.Message {
  1115  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[10]
  1116  	if protoimpl.UnsafeEnabled && x != nil {
  1117  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1118  		if ms.LoadMessageInfo() == nil {
  1119  			ms.StoreMessageInfo(mi)
  1120  		}
  1121  		return ms
  1122  	}
  1123  	return mi.MessageOf(x)
  1124  }
  1125  
  1126  // Deprecated: Use StringPair.ProtoReflect.Descriptor instead.
  1127  func (*StringPair) Descriptor() ([]byte, []int) {
  1128  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{10}
  1129  }
  1130  
  1131  func (x *StringPair) GetKey() string {
  1132  	if x != nil {
  1133  		return x.Key
  1134  	}
  1135  	return ""
  1136  }
  1137  
  1138  func (x *StringPair) GetValue() string {
  1139  	if x != nil {
  1140  		return x.Value
  1141  	}
  1142  	return ""
  1143  }
  1144  
  1145  // Outdated establishes conditions for refreshing Snapshot after CV mutations.
  1146  type Snapshot_Outdated struct {
  1147  	state         protoimpl.MessageState
  1148  	sizeCache     protoimpl.SizeCache
  1149  	unknownFields protoimpl.UnknownFields
  1150  }
  1151  
  1152  func (x *Snapshot_Outdated) Reset() {
  1153  	*x = Snapshot_Outdated{}
  1154  	if protoimpl.UnsafeEnabled {
  1155  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[11]
  1156  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1157  		ms.StoreMessageInfo(mi)
  1158  	}
  1159  }
  1160  
  1161  func (x *Snapshot_Outdated) String() string {
  1162  	return protoimpl.X.MessageStringOf(x)
  1163  }
  1164  
  1165  func (*Snapshot_Outdated) ProtoMessage() {}
  1166  
  1167  func (x *Snapshot_Outdated) ProtoReflect() protoreflect.Message {
  1168  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[11]
  1169  	if protoimpl.UnsafeEnabled && x != nil {
  1170  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1171  		if ms.LoadMessageInfo() == nil {
  1172  			ms.StoreMessageInfo(mi)
  1173  		}
  1174  		return ms
  1175  	}
  1176  	return mi.MessageOf(x)
  1177  }
  1178  
  1179  // Deprecated: Use Snapshot_Outdated.ProtoReflect.Descriptor instead.
  1180  func (*Snapshot_Outdated) Descriptor() ([]byte, []int) {
  1181  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{0, 0}
  1182  }
  1183  
  1184  type ApplicableConfig_Project struct {
  1185  	state         protoimpl.MessageState
  1186  	sizeCache     protoimpl.SizeCache
  1187  	unknownFields protoimpl.UnknownFields
  1188  
  1189  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1190  	// ID of the specific ConfigGroup. See cv/internal/config.ConfigGroupID.
  1191  	//
  1192  	// The referenced version may no longer be available to datastore,
  1193  	// commonly happening if CL wasn't active for a long time.
  1194  	ConfigGroupIds []string `protobuf:"bytes,2,rep,name=config_group_ids,json=configGroupIds,proto3" json:"config_group_ids,omitempty"`
  1195  }
  1196  
  1197  func (x *ApplicableConfig_Project) Reset() {
  1198  	*x = ApplicableConfig_Project{}
  1199  	if protoimpl.UnsafeEnabled {
  1200  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[12]
  1201  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1202  		ms.StoreMessageInfo(mi)
  1203  	}
  1204  }
  1205  
  1206  func (x *ApplicableConfig_Project) String() string {
  1207  	return protoimpl.X.MessageStringOf(x)
  1208  }
  1209  
  1210  func (*ApplicableConfig_Project) ProtoMessage() {}
  1211  
  1212  func (x *ApplicableConfig_Project) ProtoReflect() protoreflect.Message {
  1213  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[12]
  1214  	if protoimpl.UnsafeEnabled && x != nil {
  1215  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1216  		if ms.LoadMessageInfo() == nil {
  1217  			ms.StoreMessageInfo(mi)
  1218  		}
  1219  		return ms
  1220  	}
  1221  	return mi.MessageOf(x)
  1222  }
  1223  
  1224  // Deprecated: Use ApplicableConfig_Project.ProtoReflect.Descriptor instead.
  1225  func (*ApplicableConfig_Project) Descriptor() ([]byte, []int) {
  1226  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{5, 0}
  1227  }
  1228  
  1229  func (x *ApplicableConfig_Project) GetName() string {
  1230  	if x != nil {
  1231  		return x.Name
  1232  	}
  1233  	return ""
  1234  }
  1235  
  1236  func (x *ApplicableConfig_Project) GetConfigGroupIds() []string {
  1237  	if x != nil {
  1238  		return x.ConfigGroupIds
  1239  	}
  1240  	return nil
  1241  }
  1242  
  1243  type Access_Project struct {
  1244  	state         protoimpl.MessageState
  1245  	sizeCache     protoimpl.SizeCache
  1246  	unknownFields protoimpl.UnknownFields
  1247  
  1248  	// Deprecated. Use no_access_time instead.
  1249  	NoAccess bool `protobuf:"varint,1,opt,name=no_access,json=noAccess,proto3" json:"no_access,omitempty"`
  1250  	// The time when this was last re-confirmed.
  1251  	UpdateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
  1252  	// The time after which CV should consider lack of access stable.
  1253  	//
  1254  	// TODO(crbug/1216630): may be unset until backfil is done,
  1255  	// in which case use `no_access` field.
  1256  	NoAccessTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=no_access_time,json=noAccessTime,proto3" json:"no_access_time,omitempty"`
  1257  }
  1258  
  1259  func (x *Access_Project) Reset() {
  1260  	*x = Access_Project{}
  1261  	if protoimpl.UnsafeEnabled {
  1262  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[13]
  1263  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1264  		ms.StoreMessageInfo(mi)
  1265  	}
  1266  }
  1267  
  1268  func (x *Access_Project) String() string {
  1269  	return protoimpl.X.MessageStringOf(x)
  1270  }
  1271  
  1272  func (*Access_Project) ProtoMessage() {}
  1273  
  1274  func (x *Access_Project) ProtoReflect() protoreflect.Message {
  1275  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[13]
  1276  	if protoimpl.UnsafeEnabled && x != nil {
  1277  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1278  		if ms.LoadMessageInfo() == nil {
  1279  			ms.StoreMessageInfo(mi)
  1280  		}
  1281  		return ms
  1282  	}
  1283  	return mi.MessageOf(x)
  1284  }
  1285  
  1286  // Deprecated: Use Access_Project.ProtoReflect.Descriptor instead.
  1287  func (*Access_Project) Descriptor() ([]byte, []int) {
  1288  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{6, 0}
  1289  }
  1290  
  1291  func (x *Access_Project) GetNoAccess() bool {
  1292  	if x != nil {
  1293  		return x.NoAccess
  1294  	}
  1295  	return false
  1296  }
  1297  
  1298  func (x *Access_Project) GetUpdateTime() *timestamppb.Timestamp {
  1299  	if x != nil {
  1300  		return x.UpdateTime
  1301  	}
  1302  	return nil
  1303  }
  1304  
  1305  func (x *Access_Project) GetNoAccessTime() *timestamppb.Timestamp {
  1306  	if x != nil {
  1307  		return x.NoAccessTime
  1308  	}
  1309  	return nil
  1310  }
  1311  
  1312  type CLError_WatchedByManyConfigGroups struct {
  1313  	state         protoimpl.MessageState
  1314  	sizeCache     protoimpl.SizeCache
  1315  	unknownFields protoimpl.UnknownFields
  1316  
  1317  	// Config group names without LUCI project prefix.
  1318  	ConfigGroups []string `protobuf:"bytes,1,rep,name=config_groups,json=configGroups,proto3" json:"config_groups,omitempty"`
  1319  }
  1320  
  1321  func (x *CLError_WatchedByManyConfigGroups) Reset() {
  1322  	*x = CLError_WatchedByManyConfigGroups{}
  1323  	if protoimpl.UnsafeEnabled {
  1324  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[15]
  1325  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1326  		ms.StoreMessageInfo(mi)
  1327  	}
  1328  }
  1329  
  1330  func (x *CLError_WatchedByManyConfigGroups) String() string {
  1331  	return protoimpl.X.MessageStringOf(x)
  1332  }
  1333  
  1334  func (*CLError_WatchedByManyConfigGroups) ProtoMessage() {}
  1335  
  1336  func (x *CLError_WatchedByManyConfigGroups) ProtoReflect() protoreflect.Message {
  1337  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[15]
  1338  	if protoimpl.UnsafeEnabled && x != nil {
  1339  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1340  		if ms.LoadMessageInfo() == nil {
  1341  			ms.StoreMessageInfo(mi)
  1342  		}
  1343  		return ms
  1344  	}
  1345  	return mi.MessageOf(x)
  1346  }
  1347  
  1348  // Deprecated: Use CLError_WatchedByManyConfigGroups.ProtoReflect.Descriptor instead.
  1349  func (*CLError_WatchedByManyConfigGroups) Descriptor() ([]byte, []int) {
  1350  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 0}
  1351  }
  1352  
  1353  func (x *CLError_WatchedByManyConfigGroups) GetConfigGroups() []string {
  1354  	if x != nil {
  1355  		return x.ConfigGroups
  1356  	}
  1357  	return nil
  1358  }
  1359  
  1360  type CLError_WatchedByManyProjects struct {
  1361  	state         protoimpl.MessageState
  1362  	sizeCache     protoimpl.SizeCache
  1363  	unknownFields protoimpl.UnknownFields
  1364  
  1365  	Projects []string `protobuf:"bytes,1,rep,name=projects,proto3" json:"projects,omitempty"`
  1366  }
  1367  
  1368  func (x *CLError_WatchedByManyProjects) Reset() {
  1369  	*x = CLError_WatchedByManyProjects{}
  1370  	if protoimpl.UnsafeEnabled {
  1371  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[16]
  1372  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1373  		ms.StoreMessageInfo(mi)
  1374  	}
  1375  }
  1376  
  1377  func (x *CLError_WatchedByManyProjects) String() string {
  1378  	return protoimpl.X.MessageStringOf(x)
  1379  }
  1380  
  1381  func (*CLError_WatchedByManyProjects) ProtoMessage() {}
  1382  
  1383  func (x *CLError_WatchedByManyProjects) ProtoReflect() protoreflect.Message {
  1384  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[16]
  1385  	if protoimpl.UnsafeEnabled && x != nil {
  1386  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1387  		if ms.LoadMessageInfo() == nil {
  1388  			ms.StoreMessageInfo(mi)
  1389  		}
  1390  		return ms
  1391  	}
  1392  	return mi.MessageOf(x)
  1393  }
  1394  
  1395  // Deprecated: Use CLError_WatchedByManyProjects.ProtoReflect.Descriptor instead.
  1396  func (*CLError_WatchedByManyProjects) Descriptor() ([]byte, []int) {
  1397  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 1}
  1398  }
  1399  
  1400  func (x *CLError_WatchedByManyProjects) GetProjects() []string {
  1401  	if x != nil {
  1402  		return x.Projects
  1403  	}
  1404  	return nil
  1405  }
  1406  
  1407  type CLError_InvalidDeps struct {
  1408  	state         protoimpl.MessageState
  1409  	sizeCache     protoimpl.SizeCache
  1410  	unknownFields protoimpl.UnknownFields
  1411  
  1412  	// Deps not watched by the same LUCI project as the dependent.
  1413  	Unwatched []*Dep `protobuf:"bytes,1,rep,name=unwatched,proto3" json:"unwatched,omitempty"`
  1414  	// Deps watched by the same LUCI project but different config group.
  1415  	WrongConfigGroup []*Dep `protobuf:"bytes,2,rep,name=wrong_config_group,json=wrongConfigGroup,proto3" json:"wrong_config_group,omitempty"`
  1416  	// Not yet submitted deps of a full run in non-combinable mode.
  1417  	SingleFullDeps []*Dep `protobuf:"bytes,3,rep,name=single_full_deps,json=singleFullDeps,proto3" json:"single_full_deps,omitempty"`
  1418  	// Not yet CQ-ed deps of a Run in combinable mode.
  1419  	CombinableUntriggered []*Dep `protobuf:"bytes,4,rep,name=combinable_untriggered,json=combinableUntriggered,proto3" json:"combinable_untriggered,omitempty"`
  1420  	// CQ-ed deps of a different mode.
  1421  	CombinableMismatchedMode []*Dep `protobuf:"bytes,5,rep,name=combinable_mismatched_mode,json=combinableMismatchedMode,proto3" json:"combinable_mismatched_mode,omitempty"`
  1422  	// There are more non-submitted deps than is supported by CV.
  1423  	TooMany *CLError_InvalidDeps_TooMany `protobuf:"bytes,6,opt,name=too_many,json=tooMany,proto3" json:"too_many,omitempty"`
  1424  }
  1425  
  1426  func (x *CLError_InvalidDeps) Reset() {
  1427  	*x = CLError_InvalidDeps{}
  1428  	if protoimpl.UnsafeEnabled {
  1429  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[17]
  1430  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1431  		ms.StoreMessageInfo(mi)
  1432  	}
  1433  }
  1434  
  1435  func (x *CLError_InvalidDeps) String() string {
  1436  	return protoimpl.X.MessageStringOf(x)
  1437  }
  1438  
  1439  func (*CLError_InvalidDeps) ProtoMessage() {}
  1440  
  1441  func (x *CLError_InvalidDeps) ProtoReflect() protoreflect.Message {
  1442  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[17]
  1443  	if protoimpl.UnsafeEnabled && x != nil {
  1444  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1445  		if ms.LoadMessageInfo() == nil {
  1446  			ms.StoreMessageInfo(mi)
  1447  		}
  1448  		return ms
  1449  	}
  1450  	return mi.MessageOf(x)
  1451  }
  1452  
  1453  // Deprecated: Use CLError_InvalidDeps.ProtoReflect.Descriptor instead.
  1454  func (*CLError_InvalidDeps) Descriptor() ([]byte, []int) {
  1455  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 2}
  1456  }
  1457  
  1458  func (x *CLError_InvalidDeps) GetUnwatched() []*Dep {
  1459  	if x != nil {
  1460  		return x.Unwatched
  1461  	}
  1462  	return nil
  1463  }
  1464  
  1465  func (x *CLError_InvalidDeps) GetWrongConfigGroup() []*Dep {
  1466  	if x != nil {
  1467  		return x.WrongConfigGroup
  1468  	}
  1469  	return nil
  1470  }
  1471  
  1472  func (x *CLError_InvalidDeps) GetSingleFullDeps() []*Dep {
  1473  	if x != nil {
  1474  		return x.SingleFullDeps
  1475  	}
  1476  	return nil
  1477  }
  1478  
  1479  func (x *CLError_InvalidDeps) GetCombinableUntriggered() []*Dep {
  1480  	if x != nil {
  1481  		return x.CombinableUntriggered
  1482  	}
  1483  	return nil
  1484  }
  1485  
  1486  func (x *CLError_InvalidDeps) GetCombinableMismatchedMode() []*Dep {
  1487  	if x != nil {
  1488  		return x.CombinableMismatchedMode
  1489  	}
  1490  	return nil
  1491  }
  1492  
  1493  func (x *CLError_InvalidDeps) GetTooMany() *CLError_InvalidDeps_TooMany {
  1494  	if x != nil {
  1495  		return x.TooMany
  1496  	}
  1497  	return nil
  1498  }
  1499  
  1500  // ReusedTrigger means a CL trigger (e.g. CQ+1 vote) has already resulted in
  1501  // a CQ Run which was finalized.
  1502  //
  1503  // Two known cases when this happens with a Gerrit CL:
  1504  //  1. A user uploads a CL on ref A, then votes CQ+1.
  1505  //     Before the Dry Run completes, the CL is moved to ref B, while
  1506  //     preserving the CQ+1 vote.
  1507  //     The old Run is finalized, but the new Run has the exact same trigger,
  1508  //     which in CQDaemon-compatible mode means the new Run's ID is exactly the
  1509  //     same as the old one, so CV can't create a new Run.
  1510  //     TODO(crbug/1223349): after CQDaemon is deleted, the Run ID generation scheme
  1511  //     can take into account the ref of a CL, and this use case can be allowed.
  1512  //  2. The same as above but instead of moving CL between refs, abandon and
  1513  //     restore the CL.
  1514  type CLError_ReusedTrigger struct {
  1515  	state         protoimpl.MessageState
  1516  	sizeCache     protoimpl.SizeCache
  1517  	unknownFields protoimpl.UnknownFields
  1518  
  1519  	// ID of the finalized Run.
  1520  	Run string `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
  1521  }
  1522  
  1523  func (x *CLError_ReusedTrigger) Reset() {
  1524  	*x = CLError_ReusedTrigger{}
  1525  	if protoimpl.UnsafeEnabled {
  1526  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[18]
  1527  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1528  		ms.StoreMessageInfo(mi)
  1529  	}
  1530  }
  1531  
  1532  func (x *CLError_ReusedTrigger) String() string {
  1533  	return protoimpl.X.MessageStringOf(x)
  1534  }
  1535  
  1536  func (*CLError_ReusedTrigger) ProtoMessage() {}
  1537  
  1538  func (x *CLError_ReusedTrigger) ProtoReflect() protoreflect.Message {
  1539  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[18]
  1540  	if protoimpl.UnsafeEnabled && x != nil {
  1541  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1542  		if ms.LoadMessageInfo() == nil {
  1543  			ms.StoreMessageInfo(mi)
  1544  		}
  1545  		return ms
  1546  	}
  1547  	return mi.MessageOf(x)
  1548  }
  1549  
  1550  // Deprecated: Use CLError_ReusedTrigger.ProtoReflect.Descriptor instead.
  1551  func (*CLError_ReusedTrigger) Descriptor() ([]byte, []int) {
  1552  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 3}
  1553  }
  1554  
  1555  func (x *CLError_ReusedTrigger) GetRun() string {
  1556  	if x != nil {
  1557  		return x.Run
  1558  	}
  1559  	return ""
  1560  }
  1561  
  1562  // TriggerDeps indicates failures for triggering deps.
  1563  type CLError_TriggerDeps struct {
  1564  	state         protoimpl.MessageState
  1565  	sizeCache     protoimpl.SizeCache
  1566  	unknownFields protoimpl.UnknownFields
  1567  
  1568  	// IDs of CLs for which trigger attempts failed due to permission denied.
  1569  	PermissionDenied []*CLError_TriggerDeps_PermissionDenied `protobuf:"bytes,1,rep,name=permission_denied,json=permissionDenied,proto3" json:"permission_denied,omitempty"`
  1570  	// IDs of CLs for which trigger attempts failed because they were not found
  1571  	// in Gerrit.
  1572  	NotFound []int64 `protobuf:"varint,2,rep,packed,name=not_found,json=notFound,proto3" json:"not_found,omitempty"`
  1573  	// IDs of CLs for which trigger attempts failed due to internal Gerrit
  1574  	// error.
  1575  	InternalGerritError []int64 `protobuf:"varint,3,rep,packed,name=internal_gerrit_error,json=internalGerritError,proto3" json:"internal_gerrit_error,omitempty"`
  1576  }
  1577  
  1578  func (x *CLError_TriggerDeps) Reset() {
  1579  	*x = CLError_TriggerDeps{}
  1580  	if protoimpl.UnsafeEnabled {
  1581  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[19]
  1582  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1583  		ms.StoreMessageInfo(mi)
  1584  	}
  1585  }
  1586  
  1587  func (x *CLError_TriggerDeps) String() string {
  1588  	return protoimpl.X.MessageStringOf(x)
  1589  }
  1590  
  1591  func (*CLError_TriggerDeps) ProtoMessage() {}
  1592  
  1593  func (x *CLError_TriggerDeps) ProtoReflect() protoreflect.Message {
  1594  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[19]
  1595  	if protoimpl.UnsafeEnabled && x != nil {
  1596  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1597  		if ms.LoadMessageInfo() == nil {
  1598  			ms.StoreMessageInfo(mi)
  1599  		}
  1600  		return ms
  1601  	}
  1602  	return mi.MessageOf(x)
  1603  }
  1604  
  1605  // Deprecated: Use CLError_TriggerDeps.ProtoReflect.Descriptor instead.
  1606  func (*CLError_TriggerDeps) Descriptor() ([]byte, []int) {
  1607  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 4}
  1608  }
  1609  
  1610  func (x *CLError_TriggerDeps) GetPermissionDenied() []*CLError_TriggerDeps_PermissionDenied {
  1611  	if x != nil {
  1612  		return x.PermissionDenied
  1613  	}
  1614  	return nil
  1615  }
  1616  
  1617  func (x *CLError_TriggerDeps) GetNotFound() []int64 {
  1618  	if x != nil {
  1619  		return x.NotFound
  1620  	}
  1621  	return nil
  1622  }
  1623  
  1624  func (x *CLError_TriggerDeps) GetInternalGerritError() []int64 {
  1625  	if x != nil {
  1626  		return x.InternalGerritError
  1627  	}
  1628  	return nil
  1629  }
  1630  
  1631  type CLError_InvalidDeps_TooMany struct {
  1632  	state         protoimpl.MessageState
  1633  	sizeCache     protoimpl.SizeCache
  1634  	unknownFields protoimpl.UnknownFields
  1635  
  1636  	Actual     int32 `protobuf:"varint,1,opt,name=actual,proto3" json:"actual,omitempty"`
  1637  	MaxAllowed int32 `protobuf:"varint,2,opt,name=max_allowed,json=maxAllowed,proto3" json:"max_allowed,omitempty"`
  1638  }
  1639  
  1640  func (x *CLError_InvalidDeps_TooMany) Reset() {
  1641  	*x = CLError_InvalidDeps_TooMany{}
  1642  	if protoimpl.UnsafeEnabled {
  1643  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[20]
  1644  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1645  		ms.StoreMessageInfo(mi)
  1646  	}
  1647  }
  1648  
  1649  func (x *CLError_InvalidDeps_TooMany) String() string {
  1650  	return protoimpl.X.MessageStringOf(x)
  1651  }
  1652  
  1653  func (*CLError_InvalidDeps_TooMany) ProtoMessage() {}
  1654  
  1655  func (x *CLError_InvalidDeps_TooMany) ProtoReflect() protoreflect.Message {
  1656  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[20]
  1657  	if protoimpl.UnsafeEnabled && x != nil {
  1658  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1659  		if ms.LoadMessageInfo() == nil {
  1660  			ms.StoreMessageInfo(mi)
  1661  		}
  1662  		return ms
  1663  	}
  1664  	return mi.MessageOf(x)
  1665  }
  1666  
  1667  // Deprecated: Use CLError_InvalidDeps_TooMany.ProtoReflect.Descriptor instead.
  1668  func (*CLError_InvalidDeps_TooMany) Descriptor() ([]byte, []int) {
  1669  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 2, 0}
  1670  }
  1671  
  1672  func (x *CLError_InvalidDeps_TooMany) GetActual() int32 {
  1673  	if x != nil {
  1674  		return x.Actual
  1675  	}
  1676  	return 0
  1677  }
  1678  
  1679  func (x *CLError_InvalidDeps_TooMany) GetMaxAllowed() int32 {
  1680  	if x != nil {
  1681  		return x.MaxAllowed
  1682  	}
  1683  	return 0
  1684  }
  1685  
  1686  type CLError_TriggerDeps_PermissionDenied struct {
  1687  	state         protoimpl.MessageState
  1688  	sizeCache     protoimpl.SizeCache
  1689  	unknownFields protoimpl.UnknownFields
  1690  
  1691  	Clid int64 `protobuf:"varint,1,opt,name=clid,proto3" json:"clid,omitempty"`
  1692  	// If set, the vote was attempted on behalf of the Gerrit user.
  1693  	Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"`
  1694  }
  1695  
  1696  func (x *CLError_TriggerDeps_PermissionDenied) Reset() {
  1697  	*x = CLError_TriggerDeps_PermissionDenied{}
  1698  	if protoimpl.UnsafeEnabled {
  1699  		mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[21]
  1700  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1701  		ms.StoreMessageInfo(mi)
  1702  	}
  1703  }
  1704  
  1705  func (x *CLError_TriggerDeps_PermissionDenied) String() string {
  1706  	return protoimpl.X.MessageStringOf(x)
  1707  }
  1708  
  1709  func (*CLError_TriggerDeps_PermissionDenied) ProtoMessage() {}
  1710  
  1711  func (x *CLError_TriggerDeps_PermissionDenied) ProtoReflect() protoreflect.Message {
  1712  	mi := &file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[21]
  1713  	if protoimpl.UnsafeEnabled && x != nil {
  1714  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1715  		if ms.LoadMessageInfo() == nil {
  1716  			ms.StoreMessageInfo(mi)
  1717  		}
  1718  		return ms
  1719  	}
  1720  	return mi.MessageOf(x)
  1721  }
  1722  
  1723  // Deprecated: Use CLError_TriggerDeps_PermissionDenied.ProtoReflect.Descriptor instead.
  1724  func (*CLError_TriggerDeps_PermissionDenied) Descriptor() ([]byte, []int) {
  1725  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP(), []int{7, 4, 0}
  1726  }
  1727  
  1728  func (x *CLError_TriggerDeps_PermissionDenied) GetClid() int64 {
  1729  	if x != nil {
  1730  		return x.Clid
  1731  	}
  1732  	return 0
  1733  }
  1734  
  1735  func (x *CLError_TriggerDeps_PermissionDenied) GetEmail() string {
  1736  	if x != nil {
  1737  		return x.Email
  1738  	}
  1739  	return ""
  1740  }
  1741  
  1742  var File_go_chromium_org_luci_cv_internal_changelist_storage_proto protoreflect.FileDescriptor
  1743  
  1744  var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc = []byte{
  1745  	0x0a, 0x39, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
  1746  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x76, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
  1747  	0x61, 0x6c, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x73, 0x74,
  1748  	0x6f, 0x72, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x63, 0x76, 0x2e,
  1749  	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c,
  1750  	0x69, 0x73, 0x74, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
  1751  	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70,
  1752  	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75,
  1753  	0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
  1754  	0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x2f, 0x67,
  1755  	0x65, 0x72, 0x72, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x04, 0x0a, 0x08,
  1756  	0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x12, 0x4c, 0x0a, 0x14, 0x65, 0x78, 0x74, 0x65,
  1757  	0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65,
  1758  	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  1759  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
  1760  	0x6d, 0x70, 0x52, 0x12, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x55, 0x70, 0x64, 0x61,
  1761  	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x75, 0x63, 0x69, 0x5f, 0x70,
  1762  	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x75,
  1763  	0x63, 0x69, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2f, 0x0a, 0x04, 0x64, 0x65, 0x70,
  1764  	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74,
  1765  	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74,
  1766  	0x2e, 0x44, 0x65, 0x70, 0x52, 0x04, 0x64, 0x65, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61,
  1767  	0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61,
  1768  	0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x12, 0x36, 0x0a, 0x17, 0x6d, 0x69, 0x6e, 0x5f, 0x65, 0x71,
  1769  	0x75, 0x69, 0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65,
  1770  	0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x6d, 0x69, 0x6e, 0x45, 0x71, 0x75, 0x69,
  1771  	0x76, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x12, 0x37,
  1772  	0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
  1773  	0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61,
  1774  	0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52,
  1775  	0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x64, 0x61,
  1776  	0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x63, 0x76, 0x2e, 0x69,
  1777  	0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69,
  1778  	0x73, 0x74, 0x2e, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x4f, 0x75, 0x74, 0x64,
  1779  	0x61, 0x74, 0x65, 0x64, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3e,
  1780  	0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
  1781  	0x32, 0x22, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63,
  1782  	0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
  1783  	0x50, 0x61, 0x69, 0x72, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x38,
  1784  	0x0a, 0x06, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
  1785  	0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61,
  1786  	0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x48, 0x00,
  1787  	0x52, 0x06, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x1a, 0x0a, 0x0a, 0x08, 0x4f, 0x75, 0x74, 0x64,
  1788  	0x61, 0x74, 0x65, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x4e, 0x0a, 0x03,
  1789  	0x44, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
  1790  	0x03, 0x52, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18,
  1791  	0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
  1792  	0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44,
  1793  	0x65, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xdf, 0x01, 0x0a,
  1794  	0x06, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18,
  1795  	0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x04, 0x69,
  1796  	0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x65, 0x72, 0x72,
  1797  	0x69, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69,
  1798  	0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03,
  1799  	0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x3f, 0x0a, 0x08, 0x67, 0x69, 0x74,
  1800  	0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x76,
  1801  	0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
  1802  	0x6c, 0x69, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x47, 0x69, 0x74, 0x44, 0x65,
  1803  	0x70, 0x52, 0x07, 0x67, 0x69, 0x74, 0x44, 0x65, 0x70, 0x73, 0x12, 0x42, 0x0a, 0x09, 0x73, 0x6f,
  1804  	0x66, 0x74, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
  1805  	0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e,
  1806  	0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x53, 0x6f, 0x66,
  1807  	0x74, 0x44, 0x65, 0x70, 0x52, 0x08, 0x73, 0x6f, 0x66, 0x74, 0x44, 0x65, 0x70, 0x73, 0x22, 0x44,
  1808  	0x0a, 0x0c, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x47, 0x69, 0x74, 0x44, 0x65, 0x70, 0x12, 0x16,
  1809  	0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
  1810  	0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6d, 0x6d, 0x65, 0x64, 0x69,
  1811  	0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6d, 0x6d, 0x65, 0x64,
  1812  	0x69, 0x61, 0x74, 0x65, 0x22, 0x3b, 0x0a, 0x0d, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x53, 0x6f,
  1813  	0x66, 0x74, 0x44, 0x65, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20,
  1814  	0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x68, 0x61,
  1815  	0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67,
  1816  	0x65, 0x22, 0xa9, 0x01, 0x0a, 0x10, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65,
  1817  	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
  1818  	0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e,
  1819  	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73,
  1820  	0x74, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x66,
  1821  	0x69, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a,
  1822  	0x65, 0x63, 0x74, 0x73, 0x1a, 0x47, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12,
  1823  	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
  1824  	0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72,
  1825  	0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x63,
  1826  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x73, 0x22, 0xe4, 0x02,
  1827  	0x0a, 0x06, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x4c, 0x0a, 0x0a, 0x62, 0x79, 0x5f, 0x70,
  1828  	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63,
  1829  	0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67,
  1830  	0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2e, 0x42, 0x79, 0x50,
  1831  	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x62, 0x79, 0x50,
  1832  	0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0xa5, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x6a, 0x65,
  1833  	0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18,
  1834  	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12,
  1835  	0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02,
  1836  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  1837  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
  1838  	0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x40, 0x0a, 0x0e,
  1839  	0x6e, 0x6f, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03,
  1840  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  1841  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
  1842  	0x52, 0x0c, 0x6e, 0x6f, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x1a, 0x64,
  1843  	0x0a, 0x0e, 0x42, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79,
  1844  	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
  1845  	0x65, 0x79, 0x12, 0x3c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
  1846  	0x0b, 0x32, 0x26, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e,
  1847  	0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73,
  1848  	0x73, 0x2e, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
  1849  	0x3a, 0x02, 0x38, 0x01, 0x22, 0xd0, 0x0d, 0x0a, 0x07, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72,
  1850  	0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x63, 0x6b, 0x73, 0x5f,
  1851  	0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0f, 0x6f,
  1852  	0x77, 0x6e, 0x65, 0x72, 0x4c, 0x61, 0x63, 0x6b, 0x73, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x7d,
  1853  	0x0a, 0x1d, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6d, 0x61, 0x6e,
  1854  	0x79, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18,
  1855  	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
  1856  	0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43,
  1857  	0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79,
  1858  	0x4d, 0x61, 0x6e, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73,
  1859  	0x48, 0x00, 0x52, 0x19, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e,
  1860  	0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x70, 0x0a,
  1861  	0x18, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x6d, 0x61, 0x6e, 0x79,
  1862  	0x5f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
  1863  	0x35, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68,
  1864  	0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72,
  1865  	0x2e, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x50, 0x72,
  1866  	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x48, 0x00, 0x52, 0x15, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65,
  1867  	0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12,
  1868  	0x50, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18,
  1869  	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
  1870  	0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43,
  1871  	0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65,
  1872  	0x70, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65, 0x70,
  1873  	0x73, 0x12, 0x2b, 0x0a, 0x10, 0x75, 0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64,
  1874  	0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0f, 0x75,
  1875  	0x6e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x26,
  1876  	0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x66, 0x5f, 0x63, 0x71, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64,
  1877  	0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x65, 0x6c, 0x66, 0x43, 0x71,
  1878  	0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x17, 0x63, 0x6f, 0x72, 0x72, 0x75, 0x70,
  1879  	0x74, 0x5f, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
  1880  	0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x15, 0x63, 0x6f, 0x72, 0x72, 0x75,
  1881  	0x70, 0x74, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
  1882  	0x12, 0x56, 0x0a, 0x0e, 0x72, 0x65, 0x75, 0x73, 0x65, 0x64, 0x5f, 0x74, 0x72, 0x69, 0x67, 0x67,
  1883  	0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e,
  1884  	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73,
  1885  	0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x52, 0x65, 0x75, 0x73, 0x65, 0x64,
  1886  	0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0d, 0x72, 0x65, 0x75, 0x73, 0x65,
  1887  	0x64, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x27, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d,
  1888  	0x69, 0x74, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
  1889  	0x48, 0x00, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x65,
  1890  	0x64, 0x12, 0x50, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x64, 0x65, 0x70,
  1891  	0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74,
  1892  	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74,
  1893  	0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
  1894  	0x44, 0x65, 0x70, 0x73, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44,
  1895  	0x65, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x64, 0x65, 0x70, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x66,
  1896  	0x61, 0x69, 0x6c, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0c, 0x64,
  1897  	0x65, 0x70, 0x52, 0x75, 0x6e, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x1a, 0x40, 0x0a, 0x19, 0x57,
  1898  	0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x43, 0x6f, 0x6e, 0x66,
  1899  	0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x66,
  1900  	0x69, 0x67, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
  1901  	0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x1a, 0x33, 0x0a,
  1902  	0x15, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x42, 0x79, 0x4d, 0x61, 0x6e, 0x79, 0x50, 0x72,
  1903  	0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
  1904  	0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63,
  1905  	0x74, 0x73, 0x1a, 0x9d, 0x04, 0x0a, 0x0b, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65,
  1906  	0x70, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x75, 0x6e, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x18,
  1907  	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72,
  1908  	0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44,
  1909  	0x65, 0x70, 0x52, 0x09, 0x75, 0x6e, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x12, 0x49, 0x0a,
  1910  	0x12, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x67, 0x72,
  1911  	0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69,
  1912  	0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69,
  1913  	0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x52, 0x10, 0x77, 0x72, 0x6f, 0x6e, 0x67, 0x43, 0x6f, 0x6e,
  1914  	0x66, 0x69, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x45, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67,
  1915  	0x6c, 0x65, 0x5f, 0x66, 0x75, 0x6c, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x73, 0x18, 0x03, 0x20, 0x03,
  1916  	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
  1917  	0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x52,
  1918  	0x0e, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x46, 0x75, 0x6c, 0x6c, 0x44, 0x65, 0x70, 0x73, 0x12,
  1919  	0x52, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x75, 0x6e,
  1920  	0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
  1921  	0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68,
  1922  	0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x44, 0x65, 0x70, 0x52, 0x15, 0x63, 0x6f,
  1923  	0x6d, 0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x55, 0x6e, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
  1924  	0x72, 0x65, 0x64, 0x12, 0x59, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c,
  1925  	0x65, 0x5f, 0x6d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x6d, 0x6f, 0x64,
  1926  	0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74,
  1927  	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74,
  1928  	0x2e, 0x44, 0x65, 0x70, 0x52, 0x18, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x62, 0x6c, 0x65,
  1929  	0x4d, 0x69, 0x73, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x4e,
  1930  	0x0a, 0x08, 0x74, 0x6f, 0x6f, 0x5f, 0x6d, 0x61, 0x6e, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
  1931  	0x32, 0x33, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63,
  1932  	0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f,
  1933  	0x72, 0x2e, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x44, 0x65, 0x70, 0x73, 0x2e, 0x54, 0x6f,
  1934  	0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x07, 0x74, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x1a, 0x42,
  1935  	0x0a, 0x07, 0x54, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74,
  1936  	0x75, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x61, 0x63, 0x74, 0x75, 0x61,
  1937  	0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64,
  1938  	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x77,
  1939  	0x65, 0x64, 0x1a, 0x21, 0x0a, 0x0d, 0x52, 0x65, 0x75, 0x73, 0x65, 0x64, 0x54, 0x72, 0x69, 0x67,
  1940  	0x67, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x75, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  1941  	0x52, 0x03, 0x72, 0x75, 0x6e, 0x1a, 0x87, 0x02, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
  1942  	0x72, 0x44, 0x65, 0x70, 0x73, 0x12, 0x69, 0x0a, 0x11, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
  1943  	0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
  1944  	0x32, 0x3c, 0x2e, 0x63, 0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63,
  1945  	0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x45, 0x72, 0x72, 0x6f,
  1946  	0x72, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x70, 0x73, 0x2e, 0x50, 0x65,
  1947  	0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x52, 0x10,
  1948  	0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64,
  1949  	0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x02, 0x20,
  1950  	0x03, 0x28, 0x03, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x32, 0x0a,
  1951  	0x15, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x67, 0x65, 0x72, 0x72, 0x69, 0x74,
  1952  	0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x13, 0x69, 0x6e,
  1953  	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x47, 0x65, 0x72, 0x72, 0x69, 0x74, 0x45, 0x72, 0x72, 0x6f,
  1954  	0x72, 0x1a, 0x3c, 0x0a, 0x10, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44,
  1955  	0x65, 0x6e, 0x69, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x18, 0x01, 0x20,
  1956  	0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61,
  1957  	0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x42,
  1958  	0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x40, 0x0a, 0x0e, 0x43, 0x4c, 0x55, 0x70, 0x64,
  1959  	0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6c, 0x69,
  1960  	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6c, 0x69, 0x64, 0x12, 0x1a, 0x0a,
  1961  	0x08, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
  1962  	0x08, 0x65, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x51, 0x0a, 0x0f, 0x43, 0x4c, 0x55,
  1963  	0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x06,
  1964  	0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63,
  1965  	0x76, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x63, 0x68, 0x61, 0x6e, 0x67,
  1966  	0x65, 0x6c, 0x69, 0x73, 0x74, 0x2e, 0x43, 0x4c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x45,
  1967  	0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x34, 0x0a, 0x0a,
  1968  	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
  1969  	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
  1970  	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
  1971  	0x75, 0x65, 0x2a, 0x37, 0x0a, 0x07, 0x44, 0x65, 0x70, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a,
  1972  	0x14, 0x44, 0x45, 0x50, 0x5f, 0x4b, 0x49, 0x4e, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
  1973  	0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x41, 0x52, 0x44, 0x10,
  1974  	0x01, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x4f, 0x46, 0x54, 0x10, 0x02, 0x42, 0x2d, 0x5a, 0x2b, 0x67,
  1975  	0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c,
  1976  	0x75, 0x63, 0x69, 0x2f, 0x63, 0x76, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f,
  1977  	0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
  1978  	0x6f, 0x33,
  1979  }
  1980  
  1981  var (
  1982  	file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescOnce sync.Once
  1983  	file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData = file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc
  1984  )
  1985  
  1986  func file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescGZIP() []byte {
  1987  	file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescOnce.Do(func() {
  1988  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData)
  1989  	})
  1990  	return file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDescData
  1991  }
  1992  
  1993  var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
  1994  var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
  1995  var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_goTypes = []interface{}{
  1996  	(DepKind)(0),                                 // 0: cv.internal.changelist.DepKind
  1997  	(*Snapshot)(nil),                             // 1: cv.internal.changelist.Snapshot
  1998  	(*Dep)(nil),                                  // 2: cv.internal.changelist.Dep
  1999  	(*Gerrit)(nil),                               // 3: cv.internal.changelist.Gerrit
  2000  	(*GerritGitDep)(nil),                         // 4: cv.internal.changelist.GerritGitDep
  2001  	(*GerritSoftDep)(nil),                        // 5: cv.internal.changelist.GerritSoftDep
  2002  	(*ApplicableConfig)(nil),                     // 6: cv.internal.changelist.ApplicableConfig
  2003  	(*Access)(nil),                               // 7: cv.internal.changelist.Access
  2004  	(*CLError)(nil),                              // 8: cv.internal.changelist.CLError
  2005  	(*CLUpdatedEvent)(nil),                       // 9: cv.internal.changelist.CLUpdatedEvent
  2006  	(*CLUpdatedEvents)(nil),                      // 10: cv.internal.changelist.CLUpdatedEvents
  2007  	(*StringPair)(nil),                           // 11: cv.internal.changelist.StringPair
  2008  	(*Snapshot_Outdated)(nil),                    // 12: cv.internal.changelist.Snapshot.Outdated
  2009  	(*ApplicableConfig_Project)(nil),             // 13: cv.internal.changelist.ApplicableConfig.Project
  2010  	(*Access_Project)(nil),                       // 14: cv.internal.changelist.Access.Project
  2011  	nil,                                          // 15: cv.internal.changelist.Access.ByProjectEntry
  2012  	(*CLError_WatchedByManyConfigGroups)(nil),    // 16: cv.internal.changelist.CLError.WatchedByManyConfigGroups
  2013  	(*CLError_WatchedByManyProjects)(nil),        // 17: cv.internal.changelist.CLError.WatchedByManyProjects
  2014  	(*CLError_InvalidDeps)(nil),                  // 18: cv.internal.changelist.CLError.InvalidDeps
  2015  	(*CLError_ReusedTrigger)(nil),                // 19: cv.internal.changelist.CLError.ReusedTrigger
  2016  	(*CLError_TriggerDeps)(nil),                  // 20: cv.internal.changelist.CLError.TriggerDeps
  2017  	(*CLError_InvalidDeps_TooMany)(nil),          // 21: cv.internal.changelist.CLError.InvalidDeps.TooMany
  2018  	(*CLError_TriggerDeps_PermissionDenied)(nil), // 22: cv.internal.changelist.CLError.TriggerDeps.PermissionDenied
  2019  	(*timestamppb.Timestamp)(nil),                // 23: google.protobuf.Timestamp
  2020  	(*gerrit.ChangeInfo)(nil),                    // 24: gerrit.ChangeInfo
  2021  }
  2022  var file_go_chromium_org_luci_cv_internal_changelist_storage_proto_depIdxs = []int32{
  2023  	23, // 0: cv.internal.changelist.Snapshot.external_update_time:type_name -> google.protobuf.Timestamp
  2024  	2,  // 1: cv.internal.changelist.Snapshot.deps:type_name -> cv.internal.changelist.Dep
  2025  	8,  // 2: cv.internal.changelist.Snapshot.errors:type_name -> cv.internal.changelist.CLError
  2026  	12, // 3: cv.internal.changelist.Snapshot.outdated:type_name -> cv.internal.changelist.Snapshot.Outdated
  2027  	11, // 4: cv.internal.changelist.Snapshot.metadata:type_name -> cv.internal.changelist.StringPair
  2028  	3,  // 5: cv.internal.changelist.Snapshot.gerrit:type_name -> cv.internal.changelist.Gerrit
  2029  	0,  // 6: cv.internal.changelist.Dep.kind:type_name -> cv.internal.changelist.DepKind
  2030  	24, // 7: cv.internal.changelist.Gerrit.info:type_name -> gerrit.ChangeInfo
  2031  	4,  // 8: cv.internal.changelist.Gerrit.git_deps:type_name -> cv.internal.changelist.GerritGitDep
  2032  	5,  // 9: cv.internal.changelist.Gerrit.soft_deps:type_name -> cv.internal.changelist.GerritSoftDep
  2033  	13, // 10: cv.internal.changelist.ApplicableConfig.projects:type_name -> cv.internal.changelist.ApplicableConfig.Project
  2034  	15, // 11: cv.internal.changelist.Access.by_project:type_name -> cv.internal.changelist.Access.ByProjectEntry
  2035  	16, // 12: cv.internal.changelist.CLError.watched_by_many_config_groups:type_name -> cv.internal.changelist.CLError.WatchedByManyConfigGroups
  2036  	17, // 13: cv.internal.changelist.CLError.watched_by_many_projects:type_name -> cv.internal.changelist.CLError.WatchedByManyProjects
  2037  	18, // 14: cv.internal.changelist.CLError.invalid_deps:type_name -> cv.internal.changelist.CLError.InvalidDeps
  2038  	19, // 15: cv.internal.changelist.CLError.reused_trigger:type_name -> cv.internal.changelist.CLError.ReusedTrigger
  2039  	20, // 16: cv.internal.changelist.CLError.trigger_deps:type_name -> cv.internal.changelist.CLError.TriggerDeps
  2040  	9,  // 17: cv.internal.changelist.CLUpdatedEvents.events:type_name -> cv.internal.changelist.CLUpdatedEvent
  2041  	23, // 18: cv.internal.changelist.Access.Project.update_time:type_name -> google.protobuf.Timestamp
  2042  	23, // 19: cv.internal.changelist.Access.Project.no_access_time:type_name -> google.protobuf.Timestamp
  2043  	14, // 20: cv.internal.changelist.Access.ByProjectEntry.value:type_name -> cv.internal.changelist.Access.Project
  2044  	2,  // 21: cv.internal.changelist.CLError.InvalidDeps.unwatched:type_name -> cv.internal.changelist.Dep
  2045  	2,  // 22: cv.internal.changelist.CLError.InvalidDeps.wrong_config_group:type_name -> cv.internal.changelist.Dep
  2046  	2,  // 23: cv.internal.changelist.CLError.InvalidDeps.single_full_deps:type_name -> cv.internal.changelist.Dep
  2047  	2,  // 24: cv.internal.changelist.CLError.InvalidDeps.combinable_untriggered:type_name -> cv.internal.changelist.Dep
  2048  	2,  // 25: cv.internal.changelist.CLError.InvalidDeps.combinable_mismatched_mode:type_name -> cv.internal.changelist.Dep
  2049  	21, // 26: cv.internal.changelist.CLError.InvalidDeps.too_many:type_name -> cv.internal.changelist.CLError.InvalidDeps.TooMany
  2050  	22, // 27: cv.internal.changelist.CLError.TriggerDeps.permission_denied:type_name -> cv.internal.changelist.CLError.TriggerDeps.PermissionDenied
  2051  	28, // [28:28] is the sub-list for method output_type
  2052  	28, // [28:28] is the sub-list for method input_type
  2053  	28, // [28:28] is the sub-list for extension type_name
  2054  	28, // [28:28] is the sub-list for extension extendee
  2055  	0,  // [0:28] is the sub-list for field type_name
  2056  }
  2057  
  2058  func init() { file_go_chromium_org_luci_cv_internal_changelist_storage_proto_init() }
  2059  func file_go_chromium_org_luci_cv_internal_changelist_storage_proto_init() {
  2060  	if File_go_chromium_org_luci_cv_internal_changelist_storage_proto != nil {
  2061  		return
  2062  	}
  2063  	if !protoimpl.UnsafeEnabled {
  2064  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  2065  			switch v := v.(*Snapshot); i {
  2066  			case 0:
  2067  				return &v.state
  2068  			case 1:
  2069  				return &v.sizeCache
  2070  			case 2:
  2071  				return &v.unknownFields
  2072  			default:
  2073  				return nil
  2074  			}
  2075  		}
  2076  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  2077  			switch v := v.(*Dep); i {
  2078  			case 0:
  2079  				return &v.state
  2080  			case 1:
  2081  				return &v.sizeCache
  2082  			case 2:
  2083  				return &v.unknownFields
  2084  			default:
  2085  				return nil
  2086  			}
  2087  		}
  2088  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  2089  			switch v := v.(*Gerrit); i {
  2090  			case 0:
  2091  				return &v.state
  2092  			case 1:
  2093  				return &v.sizeCache
  2094  			case 2:
  2095  				return &v.unknownFields
  2096  			default:
  2097  				return nil
  2098  			}
  2099  		}
  2100  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  2101  			switch v := v.(*GerritGitDep); i {
  2102  			case 0:
  2103  				return &v.state
  2104  			case 1:
  2105  				return &v.sizeCache
  2106  			case 2:
  2107  				return &v.unknownFields
  2108  			default:
  2109  				return nil
  2110  			}
  2111  		}
  2112  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  2113  			switch v := v.(*GerritSoftDep); i {
  2114  			case 0:
  2115  				return &v.state
  2116  			case 1:
  2117  				return &v.sizeCache
  2118  			case 2:
  2119  				return &v.unknownFields
  2120  			default:
  2121  				return nil
  2122  			}
  2123  		}
  2124  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  2125  			switch v := v.(*ApplicableConfig); i {
  2126  			case 0:
  2127  				return &v.state
  2128  			case 1:
  2129  				return &v.sizeCache
  2130  			case 2:
  2131  				return &v.unknownFields
  2132  			default:
  2133  				return nil
  2134  			}
  2135  		}
  2136  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  2137  			switch v := v.(*Access); i {
  2138  			case 0:
  2139  				return &v.state
  2140  			case 1:
  2141  				return &v.sizeCache
  2142  			case 2:
  2143  				return &v.unknownFields
  2144  			default:
  2145  				return nil
  2146  			}
  2147  		}
  2148  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  2149  			switch v := v.(*CLError); i {
  2150  			case 0:
  2151  				return &v.state
  2152  			case 1:
  2153  				return &v.sizeCache
  2154  			case 2:
  2155  				return &v.unknownFields
  2156  			default:
  2157  				return nil
  2158  			}
  2159  		}
  2160  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  2161  			switch v := v.(*CLUpdatedEvent); i {
  2162  			case 0:
  2163  				return &v.state
  2164  			case 1:
  2165  				return &v.sizeCache
  2166  			case 2:
  2167  				return &v.unknownFields
  2168  			default:
  2169  				return nil
  2170  			}
  2171  		}
  2172  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  2173  			switch v := v.(*CLUpdatedEvents); i {
  2174  			case 0:
  2175  				return &v.state
  2176  			case 1:
  2177  				return &v.sizeCache
  2178  			case 2:
  2179  				return &v.unknownFields
  2180  			default:
  2181  				return nil
  2182  			}
  2183  		}
  2184  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  2185  			switch v := v.(*StringPair); i {
  2186  			case 0:
  2187  				return &v.state
  2188  			case 1:
  2189  				return &v.sizeCache
  2190  			case 2:
  2191  				return &v.unknownFields
  2192  			default:
  2193  				return nil
  2194  			}
  2195  		}
  2196  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  2197  			switch v := v.(*Snapshot_Outdated); i {
  2198  			case 0:
  2199  				return &v.state
  2200  			case 1:
  2201  				return &v.sizeCache
  2202  			case 2:
  2203  				return &v.unknownFields
  2204  			default:
  2205  				return nil
  2206  			}
  2207  		}
  2208  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  2209  			switch v := v.(*ApplicableConfig_Project); i {
  2210  			case 0:
  2211  				return &v.state
  2212  			case 1:
  2213  				return &v.sizeCache
  2214  			case 2:
  2215  				return &v.unknownFields
  2216  			default:
  2217  				return nil
  2218  			}
  2219  		}
  2220  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  2221  			switch v := v.(*Access_Project); i {
  2222  			case 0:
  2223  				return &v.state
  2224  			case 1:
  2225  				return &v.sizeCache
  2226  			case 2:
  2227  				return &v.unknownFields
  2228  			default:
  2229  				return nil
  2230  			}
  2231  		}
  2232  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  2233  			switch v := v.(*CLError_WatchedByManyConfigGroups); i {
  2234  			case 0:
  2235  				return &v.state
  2236  			case 1:
  2237  				return &v.sizeCache
  2238  			case 2:
  2239  				return &v.unknownFields
  2240  			default:
  2241  				return nil
  2242  			}
  2243  		}
  2244  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  2245  			switch v := v.(*CLError_WatchedByManyProjects); i {
  2246  			case 0:
  2247  				return &v.state
  2248  			case 1:
  2249  				return &v.sizeCache
  2250  			case 2:
  2251  				return &v.unknownFields
  2252  			default:
  2253  				return nil
  2254  			}
  2255  		}
  2256  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  2257  			switch v := v.(*CLError_InvalidDeps); i {
  2258  			case 0:
  2259  				return &v.state
  2260  			case 1:
  2261  				return &v.sizeCache
  2262  			case 2:
  2263  				return &v.unknownFields
  2264  			default:
  2265  				return nil
  2266  			}
  2267  		}
  2268  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  2269  			switch v := v.(*CLError_ReusedTrigger); i {
  2270  			case 0:
  2271  				return &v.state
  2272  			case 1:
  2273  				return &v.sizeCache
  2274  			case 2:
  2275  				return &v.unknownFields
  2276  			default:
  2277  				return nil
  2278  			}
  2279  		}
  2280  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  2281  			switch v := v.(*CLError_TriggerDeps); i {
  2282  			case 0:
  2283  				return &v.state
  2284  			case 1:
  2285  				return &v.sizeCache
  2286  			case 2:
  2287  				return &v.unknownFields
  2288  			default:
  2289  				return nil
  2290  			}
  2291  		}
  2292  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  2293  			switch v := v.(*CLError_InvalidDeps_TooMany); i {
  2294  			case 0:
  2295  				return &v.state
  2296  			case 1:
  2297  				return &v.sizeCache
  2298  			case 2:
  2299  				return &v.unknownFields
  2300  			default:
  2301  				return nil
  2302  			}
  2303  		}
  2304  		file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  2305  			switch v := v.(*CLError_TriggerDeps_PermissionDenied); i {
  2306  			case 0:
  2307  				return &v.state
  2308  			case 1:
  2309  				return &v.sizeCache
  2310  			case 2:
  2311  				return &v.unknownFields
  2312  			default:
  2313  				return nil
  2314  			}
  2315  		}
  2316  	}
  2317  	file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[0].OneofWrappers = []interface{}{
  2318  		(*Snapshot_Gerrit)(nil),
  2319  	}
  2320  	file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes[7].OneofWrappers = []interface{}{
  2321  		(*CLError_OwnerLacksEmail)(nil),
  2322  		(*CLError_WatchedByManyConfigGroups_)(nil),
  2323  		(*CLError_WatchedByManyProjects_)(nil),
  2324  		(*CLError_InvalidDeps_)(nil),
  2325  		(*CLError_UnsupportedMode)(nil),
  2326  		(*CLError_SelfCqDepend)(nil),
  2327  		(*CLError_CorruptGerritMetadata)(nil),
  2328  		(*CLError_ReusedTrigger_)(nil),
  2329  		(*CLError_CommitBlocked)(nil),
  2330  		(*CLError_TriggerDeps_)(nil),
  2331  		(*CLError_DepRunFailed)(nil),
  2332  	}
  2333  	type x struct{}
  2334  	out := protoimpl.TypeBuilder{
  2335  		File: protoimpl.DescBuilder{
  2336  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  2337  			RawDescriptor: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc,
  2338  			NumEnums:      1,
  2339  			NumMessages:   22,
  2340  			NumExtensions: 0,
  2341  			NumServices:   0,
  2342  		},
  2343  		GoTypes:           file_go_chromium_org_luci_cv_internal_changelist_storage_proto_goTypes,
  2344  		DependencyIndexes: file_go_chromium_org_luci_cv_internal_changelist_storage_proto_depIdxs,
  2345  		EnumInfos:         file_go_chromium_org_luci_cv_internal_changelist_storage_proto_enumTypes,
  2346  		MessageInfos:      file_go_chromium_org_luci_cv_internal_changelist_storage_proto_msgTypes,
  2347  	}.Build()
  2348  	File_go_chromium_org_luci_cv_internal_changelist_storage_proto = out.File
  2349  	file_go_chromium_org_luci_cv_internal_changelist_storage_proto_rawDesc = nil
  2350  	file_go_chromium_org_luci_cv_internal_changelist_storage_proto_goTypes = nil
  2351  	file_go_chromium_org_luci_cv_internal_changelist_storage_proto_depIdxs = nil
  2352  }