github.com/GoogleCloudPlatform/testgrid@v0.0.174/pb/api/v1/data.pb.go (about)

     1  /*
     2  Copyright The TestGrid Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  // Code generated by protoc-gen-go. DO NOT EDIT.
    18  // versions:
    19  // 	protoc-gen-go v1.28.0
    20  // 	protoc        v3.21.1
    21  // source: data.proto
    22  
    23  package v1
    24  
    25  import (
    26  	context "context"
    27  	config "github.com/GoogleCloudPlatform/testgrid/pb/config"
    28  	state "github.com/GoogleCloudPlatform/testgrid/pb/state"
    29  	summary "github.com/GoogleCloudPlatform/testgrid/pb/summary"
    30  	grpc "google.golang.org/grpc"
    31  	codes "google.golang.org/grpc/codes"
    32  	status "google.golang.org/grpc/status"
    33  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    34  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    35  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    36  	reflect "reflect"
    37  	sync "sync"
    38  )
    39  
    40  const (
    41  	// Verify that this generated code is sufficiently up-to-date.
    42  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    43  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    44  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    45  )
    46  
    47  type ListDashboardsRequest struct {
    48  	state         protoimpl.MessageState
    49  	sizeCache     protoimpl.SizeCache
    50  	unknownFields protoimpl.UnknownFields
    51  
    52  	Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
    53  }
    54  
    55  func (x *ListDashboardsRequest) Reset() {
    56  	*x = ListDashboardsRequest{}
    57  	if protoimpl.UnsafeEnabled {
    58  		mi := &file_data_proto_msgTypes[0]
    59  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    60  		ms.StoreMessageInfo(mi)
    61  	}
    62  }
    63  
    64  func (x *ListDashboardsRequest) String() string {
    65  	return protoimpl.X.MessageStringOf(x)
    66  }
    67  
    68  func (*ListDashboardsRequest) ProtoMessage() {}
    69  
    70  func (x *ListDashboardsRequest) ProtoReflect() protoreflect.Message {
    71  	mi := &file_data_proto_msgTypes[0]
    72  	if protoimpl.UnsafeEnabled && x != nil {
    73  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
    74  		if ms.LoadMessageInfo() == nil {
    75  			ms.StoreMessageInfo(mi)
    76  		}
    77  		return ms
    78  	}
    79  	return mi.MessageOf(x)
    80  }
    81  
    82  // Deprecated: Use ListDashboardsRequest.ProtoReflect.Descriptor instead.
    83  func (*ListDashboardsRequest) Descriptor() ([]byte, []int) {
    84  	return file_data_proto_rawDescGZIP(), []int{0}
    85  }
    86  
    87  func (x *ListDashboardsRequest) GetScope() string {
    88  	if x != nil {
    89  		return x.Scope
    90  	}
    91  	return ""
    92  }
    93  
    94  type ListDashboardsResponse struct {
    95  	state         protoimpl.MessageState
    96  	sizeCache     protoimpl.SizeCache
    97  	unknownFields protoimpl.UnknownFields
    98  
    99  	Dashboards []*DashboardResource `protobuf:"bytes,1,rep,name=dashboards,proto3" json:"dashboards,omitempty"`
   100  }
   101  
   102  func (x *ListDashboardsResponse) Reset() {
   103  	*x = ListDashboardsResponse{}
   104  	if protoimpl.UnsafeEnabled {
   105  		mi := &file_data_proto_msgTypes[1]
   106  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   107  		ms.StoreMessageInfo(mi)
   108  	}
   109  }
   110  
   111  func (x *ListDashboardsResponse) String() string {
   112  	return protoimpl.X.MessageStringOf(x)
   113  }
   114  
   115  func (*ListDashboardsResponse) ProtoMessage() {}
   116  
   117  func (x *ListDashboardsResponse) ProtoReflect() protoreflect.Message {
   118  	mi := &file_data_proto_msgTypes[1]
   119  	if protoimpl.UnsafeEnabled && x != nil {
   120  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   121  		if ms.LoadMessageInfo() == nil {
   122  			ms.StoreMessageInfo(mi)
   123  		}
   124  		return ms
   125  	}
   126  	return mi.MessageOf(x)
   127  }
   128  
   129  // Deprecated: Use ListDashboardsResponse.ProtoReflect.Descriptor instead.
   130  func (*ListDashboardsResponse) Descriptor() ([]byte, []int) {
   131  	return file_data_proto_rawDescGZIP(), []int{1}
   132  }
   133  
   134  func (x *ListDashboardsResponse) GetDashboards() []*DashboardResource {
   135  	if x != nil {
   136  		return x.Dashboards
   137  	}
   138  	return nil
   139  }
   140  
   141  type ListDashboardGroupsRequest struct {
   142  	state         protoimpl.MessageState
   143  	sizeCache     protoimpl.SizeCache
   144  	unknownFields protoimpl.UnknownFields
   145  
   146  	Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
   147  }
   148  
   149  func (x *ListDashboardGroupsRequest) Reset() {
   150  	*x = ListDashboardGroupsRequest{}
   151  	if protoimpl.UnsafeEnabled {
   152  		mi := &file_data_proto_msgTypes[2]
   153  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   154  		ms.StoreMessageInfo(mi)
   155  	}
   156  }
   157  
   158  func (x *ListDashboardGroupsRequest) String() string {
   159  	return protoimpl.X.MessageStringOf(x)
   160  }
   161  
   162  func (*ListDashboardGroupsRequest) ProtoMessage() {}
   163  
   164  func (x *ListDashboardGroupsRequest) ProtoReflect() protoreflect.Message {
   165  	mi := &file_data_proto_msgTypes[2]
   166  	if protoimpl.UnsafeEnabled && x != nil {
   167  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   168  		if ms.LoadMessageInfo() == nil {
   169  			ms.StoreMessageInfo(mi)
   170  		}
   171  		return ms
   172  	}
   173  	return mi.MessageOf(x)
   174  }
   175  
   176  // Deprecated: Use ListDashboardGroupsRequest.ProtoReflect.Descriptor instead.
   177  func (*ListDashboardGroupsRequest) Descriptor() ([]byte, []int) {
   178  	return file_data_proto_rawDescGZIP(), []int{2}
   179  }
   180  
   181  func (x *ListDashboardGroupsRequest) GetScope() string {
   182  	if x != nil {
   183  		return x.Scope
   184  	}
   185  	return ""
   186  }
   187  
   188  type ListDashboardGroupsResponse struct {
   189  	state         protoimpl.MessageState
   190  	sizeCache     protoimpl.SizeCache
   191  	unknownFields protoimpl.UnknownFields
   192  
   193  	DashboardGroups []*Resource `protobuf:"bytes,1,rep,name=dashboard_groups,json=dashboardGroups,proto3" json:"dashboard_groups,omitempty"`
   194  }
   195  
   196  func (x *ListDashboardGroupsResponse) Reset() {
   197  	*x = ListDashboardGroupsResponse{}
   198  	if protoimpl.UnsafeEnabled {
   199  		mi := &file_data_proto_msgTypes[3]
   200  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   201  		ms.StoreMessageInfo(mi)
   202  	}
   203  }
   204  
   205  func (x *ListDashboardGroupsResponse) String() string {
   206  	return protoimpl.X.MessageStringOf(x)
   207  }
   208  
   209  func (*ListDashboardGroupsResponse) ProtoMessage() {}
   210  
   211  func (x *ListDashboardGroupsResponse) ProtoReflect() protoreflect.Message {
   212  	mi := &file_data_proto_msgTypes[3]
   213  	if protoimpl.UnsafeEnabled && x != nil {
   214  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   215  		if ms.LoadMessageInfo() == nil {
   216  			ms.StoreMessageInfo(mi)
   217  		}
   218  		return ms
   219  	}
   220  	return mi.MessageOf(x)
   221  }
   222  
   223  // Deprecated: Use ListDashboardGroupsResponse.ProtoReflect.Descriptor instead.
   224  func (*ListDashboardGroupsResponse) Descriptor() ([]byte, []int) {
   225  	return file_data_proto_rawDescGZIP(), []int{3}
   226  }
   227  
   228  func (x *ListDashboardGroupsResponse) GetDashboardGroups() []*Resource {
   229  	if x != nil {
   230  		return x.DashboardGroups
   231  	}
   232  	return nil
   233  }
   234  
   235  type ListDashboardTabsRequest struct {
   236  	state         protoimpl.MessageState
   237  	sizeCache     protoimpl.SizeCache
   238  	unknownFields protoimpl.UnknownFields
   239  
   240  	Scope     string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
   241  	Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
   242  }
   243  
   244  func (x *ListDashboardTabsRequest) Reset() {
   245  	*x = ListDashboardTabsRequest{}
   246  	if protoimpl.UnsafeEnabled {
   247  		mi := &file_data_proto_msgTypes[4]
   248  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   249  		ms.StoreMessageInfo(mi)
   250  	}
   251  }
   252  
   253  func (x *ListDashboardTabsRequest) String() string {
   254  	return protoimpl.X.MessageStringOf(x)
   255  }
   256  
   257  func (*ListDashboardTabsRequest) ProtoMessage() {}
   258  
   259  func (x *ListDashboardTabsRequest) ProtoReflect() protoreflect.Message {
   260  	mi := &file_data_proto_msgTypes[4]
   261  	if protoimpl.UnsafeEnabled && x != nil {
   262  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   263  		if ms.LoadMessageInfo() == nil {
   264  			ms.StoreMessageInfo(mi)
   265  		}
   266  		return ms
   267  	}
   268  	return mi.MessageOf(x)
   269  }
   270  
   271  // Deprecated: Use ListDashboardTabsRequest.ProtoReflect.Descriptor instead.
   272  func (*ListDashboardTabsRequest) Descriptor() ([]byte, []int) {
   273  	return file_data_proto_rawDescGZIP(), []int{4}
   274  }
   275  
   276  func (x *ListDashboardTabsRequest) GetScope() string {
   277  	if x != nil {
   278  		return x.Scope
   279  	}
   280  	return ""
   281  }
   282  
   283  func (x *ListDashboardTabsRequest) GetDashboard() string {
   284  	if x != nil {
   285  		return x.Dashboard
   286  	}
   287  	return ""
   288  }
   289  
   290  type ListDashboardTabsResponse struct {
   291  	state         protoimpl.MessageState
   292  	sizeCache     protoimpl.SizeCache
   293  	unknownFields protoimpl.UnknownFields
   294  
   295  	DashboardTabs []*Resource `protobuf:"bytes,1,rep,name=dashboard_tabs,json=dashboardTabs,proto3" json:"dashboard_tabs,omitempty"`
   296  }
   297  
   298  func (x *ListDashboardTabsResponse) Reset() {
   299  	*x = ListDashboardTabsResponse{}
   300  	if protoimpl.UnsafeEnabled {
   301  		mi := &file_data_proto_msgTypes[5]
   302  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   303  		ms.StoreMessageInfo(mi)
   304  	}
   305  }
   306  
   307  func (x *ListDashboardTabsResponse) String() string {
   308  	return protoimpl.X.MessageStringOf(x)
   309  }
   310  
   311  func (*ListDashboardTabsResponse) ProtoMessage() {}
   312  
   313  func (x *ListDashboardTabsResponse) ProtoReflect() protoreflect.Message {
   314  	mi := &file_data_proto_msgTypes[5]
   315  	if protoimpl.UnsafeEnabled && x != nil {
   316  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   317  		if ms.LoadMessageInfo() == nil {
   318  			ms.StoreMessageInfo(mi)
   319  		}
   320  		return ms
   321  	}
   322  	return mi.MessageOf(x)
   323  }
   324  
   325  // Deprecated: Use ListDashboardTabsResponse.ProtoReflect.Descriptor instead.
   326  func (*ListDashboardTabsResponse) Descriptor() ([]byte, []int) {
   327  	return file_data_proto_rawDescGZIP(), []int{5}
   328  }
   329  
   330  func (x *ListDashboardTabsResponse) GetDashboardTabs() []*Resource {
   331  	if x != nil {
   332  		return x.DashboardTabs
   333  	}
   334  	return nil
   335  }
   336  
   337  type GetDashboardRequest struct {
   338  	state         protoimpl.MessageState
   339  	sizeCache     protoimpl.SizeCache
   340  	unknownFields protoimpl.UnknownFields
   341  
   342  	Scope     string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
   343  	Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
   344  }
   345  
   346  func (x *GetDashboardRequest) Reset() {
   347  	*x = GetDashboardRequest{}
   348  	if protoimpl.UnsafeEnabled {
   349  		mi := &file_data_proto_msgTypes[6]
   350  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   351  		ms.StoreMessageInfo(mi)
   352  	}
   353  }
   354  
   355  func (x *GetDashboardRequest) String() string {
   356  	return protoimpl.X.MessageStringOf(x)
   357  }
   358  
   359  func (*GetDashboardRequest) ProtoMessage() {}
   360  
   361  func (x *GetDashboardRequest) ProtoReflect() protoreflect.Message {
   362  	mi := &file_data_proto_msgTypes[6]
   363  	if protoimpl.UnsafeEnabled && x != nil {
   364  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   365  		if ms.LoadMessageInfo() == nil {
   366  			ms.StoreMessageInfo(mi)
   367  		}
   368  		return ms
   369  	}
   370  	return mi.MessageOf(x)
   371  }
   372  
   373  // Deprecated: Use GetDashboardRequest.ProtoReflect.Descriptor instead.
   374  func (*GetDashboardRequest) Descriptor() ([]byte, []int) {
   375  	return file_data_proto_rawDescGZIP(), []int{6}
   376  }
   377  
   378  func (x *GetDashboardRequest) GetScope() string {
   379  	if x != nil {
   380  		return x.Scope
   381  	}
   382  	return ""
   383  }
   384  
   385  func (x *GetDashboardRequest) GetDashboard() string {
   386  	if x != nil {
   387  		return x.Dashboard
   388  	}
   389  	return ""
   390  }
   391  
   392  type GetDashboardResponse struct {
   393  	state         protoimpl.MessageState
   394  	sizeCache     protoimpl.SizeCache
   395  	unknownFields protoimpl.UnknownFields
   396  
   397  	// A list of notifications attached to this dashboard.
   398  	// This is displayed on any dashboard tab in this dashboard.
   399  	Notifications []*config.Notification `protobuf:"bytes,1,rep,name=notifications,proto3" json:"notifications,omitempty"`
   400  	// Control which tab is displayed when first opening a dashboard.
   401  	// Defaults to Summary
   402  	DefaultTab string `protobuf:"bytes,2,opt,name=default_tab,json=defaultTab,proto3" json:"default_tab,omitempty"`
   403  	// Controls whether to suppress highlighting of failing tabs.
   404  	SuppressFailingTabs bool `protobuf:"varint,3,opt,name=suppress_failing_tabs,json=suppressFailingTabs,proto3" json:"suppress_failing_tabs,omitempty"`
   405  	// Controls whether to apply special highlighting to result header columns for
   406  	// the current day.
   407  	HighlightToday bool `protobuf:"varint,4,opt,name=highlight_today,json=highlightToday,proto3" json:"highlight_today,omitempty"`
   408  }
   409  
   410  func (x *GetDashboardResponse) Reset() {
   411  	*x = GetDashboardResponse{}
   412  	if protoimpl.UnsafeEnabled {
   413  		mi := &file_data_proto_msgTypes[7]
   414  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   415  		ms.StoreMessageInfo(mi)
   416  	}
   417  }
   418  
   419  func (x *GetDashboardResponse) String() string {
   420  	return protoimpl.X.MessageStringOf(x)
   421  }
   422  
   423  func (*GetDashboardResponse) ProtoMessage() {}
   424  
   425  func (x *GetDashboardResponse) ProtoReflect() protoreflect.Message {
   426  	mi := &file_data_proto_msgTypes[7]
   427  	if protoimpl.UnsafeEnabled && x != nil {
   428  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   429  		if ms.LoadMessageInfo() == nil {
   430  			ms.StoreMessageInfo(mi)
   431  		}
   432  		return ms
   433  	}
   434  	return mi.MessageOf(x)
   435  }
   436  
   437  // Deprecated: Use GetDashboardResponse.ProtoReflect.Descriptor instead.
   438  func (*GetDashboardResponse) Descriptor() ([]byte, []int) {
   439  	return file_data_proto_rawDescGZIP(), []int{7}
   440  }
   441  
   442  func (x *GetDashboardResponse) GetNotifications() []*config.Notification {
   443  	if x != nil {
   444  		return x.Notifications
   445  	}
   446  	return nil
   447  }
   448  
   449  func (x *GetDashboardResponse) GetDefaultTab() string {
   450  	if x != nil {
   451  		return x.DefaultTab
   452  	}
   453  	return ""
   454  }
   455  
   456  func (x *GetDashboardResponse) GetSuppressFailingTabs() bool {
   457  	if x != nil {
   458  		return x.SuppressFailingTabs
   459  	}
   460  	return false
   461  }
   462  
   463  func (x *GetDashboardResponse) GetHighlightToday() bool {
   464  	if x != nil {
   465  		return x.HighlightToday
   466  	}
   467  	return false
   468  }
   469  
   470  type GetDashboardGroupRequest struct {
   471  	state         protoimpl.MessageState
   472  	sizeCache     protoimpl.SizeCache
   473  	unknownFields protoimpl.UnknownFields
   474  
   475  	Scope          string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
   476  	DashboardGroup string `protobuf:"bytes,2,opt,name=dashboard_group,json=dashboardGroup,proto3" json:"dashboard_group,omitempty"`
   477  }
   478  
   479  func (x *GetDashboardGroupRequest) Reset() {
   480  	*x = GetDashboardGroupRequest{}
   481  	if protoimpl.UnsafeEnabled {
   482  		mi := &file_data_proto_msgTypes[8]
   483  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   484  		ms.StoreMessageInfo(mi)
   485  	}
   486  }
   487  
   488  func (x *GetDashboardGroupRequest) String() string {
   489  	return protoimpl.X.MessageStringOf(x)
   490  }
   491  
   492  func (*GetDashboardGroupRequest) ProtoMessage() {}
   493  
   494  func (x *GetDashboardGroupRequest) ProtoReflect() protoreflect.Message {
   495  	mi := &file_data_proto_msgTypes[8]
   496  	if protoimpl.UnsafeEnabled && x != nil {
   497  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   498  		if ms.LoadMessageInfo() == nil {
   499  			ms.StoreMessageInfo(mi)
   500  		}
   501  		return ms
   502  	}
   503  	return mi.MessageOf(x)
   504  }
   505  
   506  // Deprecated: Use GetDashboardGroupRequest.ProtoReflect.Descriptor instead.
   507  func (*GetDashboardGroupRequest) Descriptor() ([]byte, []int) {
   508  	return file_data_proto_rawDescGZIP(), []int{8}
   509  }
   510  
   511  func (x *GetDashboardGroupRequest) GetScope() string {
   512  	if x != nil {
   513  		return x.Scope
   514  	}
   515  	return ""
   516  }
   517  
   518  func (x *GetDashboardGroupRequest) GetDashboardGroup() string {
   519  	if x != nil {
   520  		return x.DashboardGroup
   521  	}
   522  	return ""
   523  }
   524  
   525  type GetDashboardGroupResponse struct {
   526  	state         protoimpl.MessageState
   527  	sizeCache     protoimpl.SizeCache
   528  	unknownFields protoimpl.UnknownFields
   529  
   530  	Dashboards []*Resource `protobuf:"bytes,1,rep,name=dashboards,proto3" json:"dashboards,omitempty"`
   531  }
   532  
   533  func (x *GetDashboardGroupResponse) Reset() {
   534  	*x = GetDashboardGroupResponse{}
   535  	if protoimpl.UnsafeEnabled {
   536  		mi := &file_data_proto_msgTypes[9]
   537  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   538  		ms.StoreMessageInfo(mi)
   539  	}
   540  }
   541  
   542  func (x *GetDashboardGroupResponse) String() string {
   543  	return protoimpl.X.MessageStringOf(x)
   544  }
   545  
   546  func (*GetDashboardGroupResponse) ProtoMessage() {}
   547  
   548  func (x *GetDashboardGroupResponse) ProtoReflect() protoreflect.Message {
   549  	mi := &file_data_proto_msgTypes[9]
   550  	if protoimpl.UnsafeEnabled && x != nil {
   551  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   552  		if ms.LoadMessageInfo() == nil {
   553  			ms.StoreMessageInfo(mi)
   554  		}
   555  		return ms
   556  	}
   557  	return mi.MessageOf(x)
   558  }
   559  
   560  // Deprecated: Use GetDashboardGroupResponse.ProtoReflect.Descriptor instead.
   561  func (*GetDashboardGroupResponse) Descriptor() ([]byte, []int) {
   562  	return file_data_proto_rawDescGZIP(), []int{9}
   563  }
   564  
   565  func (x *GetDashboardGroupResponse) GetDashboards() []*Resource {
   566  	if x != nil {
   567  		return x.Dashboards
   568  	}
   569  	return nil
   570  }
   571  
   572  type ListHeadersRequest struct {
   573  	state         protoimpl.MessageState
   574  	sizeCache     protoimpl.SizeCache
   575  	unknownFields protoimpl.UnknownFields
   576  
   577  	Scope     string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
   578  	Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
   579  	Tab       string `protobuf:"bytes,3,opt,name=tab,proto3" json:"tab,omitempty"`
   580  }
   581  
   582  func (x *ListHeadersRequest) Reset() {
   583  	*x = ListHeadersRequest{}
   584  	if protoimpl.UnsafeEnabled {
   585  		mi := &file_data_proto_msgTypes[10]
   586  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   587  		ms.StoreMessageInfo(mi)
   588  	}
   589  }
   590  
   591  func (x *ListHeadersRequest) String() string {
   592  	return protoimpl.X.MessageStringOf(x)
   593  }
   594  
   595  func (*ListHeadersRequest) ProtoMessage() {}
   596  
   597  func (x *ListHeadersRequest) ProtoReflect() protoreflect.Message {
   598  	mi := &file_data_proto_msgTypes[10]
   599  	if protoimpl.UnsafeEnabled && x != nil {
   600  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   601  		if ms.LoadMessageInfo() == nil {
   602  			ms.StoreMessageInfo(mi)
   603  		}
   604  		return ms
   605  	}
   606  	return mi.MessageOf(x)
   607  }
   608  
   609  // Deprecated: Use ListHeadersRequest.ProtoReflect.Descriptor instead.
   610  func (*ListHeadersRequest) Descriptor() ([]byte, []int) {
   611  	return file_data_proto_rawDescGZIP(), []int{10}
   612  }
   613  
   614  func (x *ListHeadersRequest) GetScope() string {
   615  	if x != nil {
   616  		return x.Scope
   617  	}
   618  	return ""
   619  }
   620  
   621  func (x *ListHeadersRequest) GetDashboard() string {
   622  	if x != nil {
   623  		return x.Dashboard
   624  	}
   625  	return ""
   626  }
   627  
   628  func (x *ListHeadersRequest) GetTab() string {
   629  	if x != nil {
   630  		return x.Tab
   631  	}
   632  	return ""
   633  }
   634  
   635  type ListHeadersResponse struct {
   636  	state         protoimpl.MessageState
   637  	sizeCache     protoimpl.SizeCache
   638  	unknownFields protoimpl.UnknownFields
   639  
   640  	Headers []*ListHeadersResponse_Header `protobuf:"bytes,1,rep,name=headers,proto3" json:"headers,omitempty"`
   641  }
   642  
   643  func (x *ListHeadersResponse) Reset() {
   644  	*x = ListHeadersResponse{}
   645  	if protoimpl.UnsafeEnabled {
   646  		mi := &file_data_proto_msgTypes[11]
   647  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   648  		ms.StoreMessageInfo(mi)
   649  	}
   650  }
   651  
   652  func (x *ListHeadersResponse) String() string {
   653  	return protoimpl.X.MessageStringOf(x)
   654  }
   655  
   656  func (*ListHeadersResponse) ProtoMessage() {}
   657  
   658  func (x *ListHeadersResponse) ProtoReflect() protoreflect.Message {
   659  	mi := &file_data_proto_msgTypes[11]
   660  	if protoimpl.UnsafeEnabled && x != nil {
   661  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   662  		if ms.LoadMessageInfo() == nil {
   663  			ms.StoreMessageInfo(mi)
   664  		}
   665  		return ms
   666  	}
   667  	return mi.MessageOf(x)
   668  }
   669  
   670  // Deprecated: Use ListHeadersResponse.ProtoReflect.Descriptor instead.
   671  func (*ListHeadersResponse) Descriptor() ([]byte, []int) {
   672  	return file_data_proto_rawDescGZIP(), []int{11}
   673  }
   674  
   675  func (x *ListHeadersResponse) GetHeaders() []*ListHeadersResponse_Header {
   676  	if x != nil {
   677  		return x.Headers
   678  	}
   679  	return nil
   680  }
   681  
   682  type ListRowsRequest struct {
   683  	state         protoimpl.MessageState
   684  	sizeCache     protoimpl.SizeCache
   685  	unknownFields protoimpl.UnknownFields
   686  
   687  	Scope     string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
   688  	Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
   689  	Tab       string `protobuf:"bytes,3,opt,name=tab,proto3" json:"tab,omitempty"`
   690  }
   691  
   692  func (x *ListRowsRequest) Reset() {
   693  	*x = ListRowsRequest{}
   694  	if protoimpl.UnsafeEnabled {
   695  		mi := &file_data_proto_msgTypes[12]
   696  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   697  		ms.StoreMessageInfo(mi)
   698  	}
   699  }
   700  
   701  func (x *ListRowsRequest) String() string {
   702  	return protoimpl.X.MessageStringOf(x)
   703  }
   704  
   705  func (*ListRowsRequest) ProtoMessage() {}
   706  
   707  func (x *ListRowsRequest) ProtoReflect() protoreflect.Message {
   708  	mi := &file_data_proto_msgTypes[12]
   709  	if protoimpl.UnsafeEnabled && x != nil {
   710  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   711  		if ms.LoadMessageInfo() == nil {
   712  			ms.StoreMessageInfo(mi)
   713  		}
   714  		return ms
   715  	}
   716  	return mi.MessageOf(x)
   717  }
   718  
   719  // Deprecated: Use ListRowsRequest.ProtoReflect.Descriptor instead.
   720  func (*ListRowsRequest) Descriptor() ([]byte, []int) {
   721  	return file_data_proto_rawDescGZIP(), []int{12}
   722  }
   723  
   724  func (x *ListRowsRequest) GetScope() string {
   725  	if x != nil {
   726  		return x.Scope
   727  	}
   728  	return ""
   729  }
   730  
   731  func (x *ListRowsRequest) GetDashboard() string {
   732  	if x != nil {
   733  		return x.Dashboard
   734  	}
   735  	return ""
   736  }
   737  
   738  func (x *ListRowsRequest) GetTab() string {
   739  	if x != nil {
   740  		return x.Tab
   741  	}
   742  	return ""
   743  }
   744  
   745  type ListRowsResponse struct {
   746  	state         protoimpl.MessageState
   747  	sizeCache     protoimpl.SizeCache
   748  	unknownFields protoimpl.UnknownFields
   749  
   750  	Rows []*ListRowsResponse_Row `protobuf:"bytes,1,rep,name=rows,proto3" json:"rows,omitempty"`
   751  }
   752  
   753  func (x *ListRowsResponse) Reset() {
   754  	*x = ListRowsResponse{}
   755  	if protoimpl.UnsafeEnabled {
   756  		mi := &file_data_proto_msgTypes[13]
   757  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   758  		ms.StoreMessageInfo(mi)
   759  	}
   760  }
   761  
   762  func (x *ListRowsResponse) String() string {
   763  	return protoimpl.X.MessageStringOf(x)
   764  }
   765  
   766  func (*ListRowsResponse) ProtoMessage() {}
   767  
   768  func (x *ListRowsResponse) ProtoReflect() protoreflect.Message {
   769  	mi := &file_data_proto_msgTypes[13]
   770  	if protoimpl.UnsafeEnabled && x != nil {
   771  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   772  		if ms.LoadMessageInfo() == nil {
   773  			ms.StoreMessageInfo(mi)
   774  		}
   775  		return ms
   776  	}
   777  	return mi.MessageOf(x)
   778  }
   779  
   780  // Deprecated: Use ListRowsResponse.ProtoReflect.Descriptor instead.
   781  func (*ListRowsResponse) Descriptor() ([]byte, []int) {
   782  	return file_data_proto_rawDescGZIP(), []int{13}
   783  }
   784  
   785  func (x *ListRowsResponse) GetRows() []*ListRowsResponse_Row {
   786  	if x != nil {
   787  		return x.Rows
   788  	}
   789  	return nil
   790  }
   791  
   792  // A Resource is a REST resource, often returned by a LIST command
   793  // It includes the name of the resource and a link to the resource
   794  type Resource struct {
   795  	state         protoimpl.MessageState
   796  	sizeCache     protoimpl.SizeCache
   797  	unknownFields protoimpl.UnknownFields
   798  
   799  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   800  	Link string `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"`
   801  }
   802  
   803  func (x *Resource) Reset() {
   804  	*x = Resource{}
   805  	if protoimpl.UnsafeEnabled {
   806  		mi := &file_data_proto_msgTypes[14]
   807  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   808  		ms.StoreMessageInfo(mi)
   809  	}
   810  }
   811  
   812  func (x *Resource) String() string {
   813  	return protoimpl.X.MessageStringOf(x)
   814  }
   815  
   816  func (*Resource) ProtoMessage() {}
   817  
   818  func (x *Resource) ProtoReflect() protoreflect.Message {
   819  	mi := &file_data_proto_msgTypes[14]
   820  	if protoimpl.UnsafeEnabled && x != nil {
   821  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   822  		if ms.LoadMessageInfo() == nil {
   823  			ms.StoreMessageInfo(mi)
   824  		}
   825  		return ms
   826  	}
   827  	return mi.MessageOf(x)
   828  }
   829  
   830  // Deprecated: Use Resource.ProtoReflect.Descriptor instead.
   831  func (*Resource) Descriptor() ([]byte, []int) {
   832  	return file_data_proto_rawDescGZIP(), []int{14}
   833  }
   834  
   835  func (x *Resource) GetName() string {
   836  	if x != nil {
   837  		return x.Name
   838  	}
   839  	return ""
   840  }
   841  
   842  func (x *Resource) GetLink() string {
   843  	if x != nil {
   844  		return x.Link
   845  	}
   846  	return ""
   847  }
   848  
   849  // A DashboardResource is a REST resource for a dashboard
   850  // It includes the name of the resource, a link, and a dashboard group to which it belongs
   851  type DashboardResource struct {
   852  	state         protoimpl.MessageState
   853  	sizeCache     protoimpl.SizeCache
   854  	unknownFields protoimpl.UnknownFields
   855  
   856  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   857  	Link string `protobuf:"bytes,2,opt,name=link,proto3" json:"link,omitempty"`
   858  	// Dashboard group to which the dashboard belongs to.
   859  	// Empty if dashboard doesn't belong to any group.
   860  	DashboardGroupName string `protobuf:"bytes,3,opt,name=dashboard_group_name,json=dashboardGroupName,proto3" json:"dashboard_group_name,omitempty"`
   861  }
   862  
   863  func (x *DashboardResource) Reset() {
   864  	*x = DashboardResource{}
   865  	if protoimpl.UnsafeEnabled {
   866  		mi := &file_data_proto_msgTypes[15]
   867  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   868  		ms.StoreMessageInfo(mi)
   869  	}
   870  }
   871  
   872  func (x *DashboardResource) String() string {
   873  	return protoimpl.X.MessageStringOf(x)
   874  }
   875  
   876  func (*DashboardResource) ProtoMessage() {}
   877  
   878  func (x *DashboardResource) ProtoReflect() protoreflect.Message {
   879  	mi := &file_data_proto_msgTypes[15]
   880  	if protoimpl.UnsafeEnabled && x != nil {
   881  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   882  		if ms.LoadMessageInfo() == nil {
   883  			ms.StoreMessageInfo(mi)
   884  		}
   885  		return ms
   886  	}
   887  	return mi.MessageOf(x)
   888  }
   889  
   890  // Deprecated: Use DashboardResource.ProtoReflect.Descriptor instead.
   891  func (*DashboardResource) Descriptor() ([]byte, []int) {
   892  	return file_data_proto_rawDescGZIP(), []int{15}
   893  }
   894  
   895  func (x *DashboardResource) GetName() string {
   896  	if x != nil {
   897  		return x.Name
   898  	}
   899  	return ""
   900  }
   901  
   902  func (x *DashboardResource) GetLink() string {
   903  	if x != nil {
   904  		return x.Link
   905  	}
   906  	return ""
   907  }
   908  
   909  func (x *DashboardResource) GetDashboardGroupName() string {
   910  	if x != nil {
   911  		return x.DashboardGroupName
   912  	}
   913  	return ""
   914  }
   915  
   916  type ListTabSummariesRequest struct {
   917  	state         protoimpl.MessageState
   918  	sizeCache     protoimpl.SizeCache
   919  	unknownFields protoimpl.UnknownFields
   920  
   921  	// Scope defines the GCS bucket to read the results from.
   922  	Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
   923  	// Name of the dashboard to fetch tab summaries for.
   924  	Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
   925  }
   926  
   927  func (x *ListTabSummariesRequest) Reset() {
   928  	*x = ListTabSummariesRequest{}
   929  	if protoimpl.UnsafeEnabled {
   930  		mi := &file_data_proto_msgTypes[16]
   931  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   932  		ms.StoreMessageInfo(mi)
   933  	}
   934  }
   935  
   936  func (x *ListTabSummariesRequest) String() string {
   937  	return protoimpl.X.MessageStringOf(x)
   938  }
   939  
   940  func (*ListTabSummariesRequest) ProtoMessage() {}
   941  
   942  func (x *ListTabSummariesRequest) ProtoReflect() protoreflect.Message {
   943  	mi := &file_data_proto_msgTypes[16]
   944  	if protoimpl.UnsafeEnabled && x != nil {
   945  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   946  		if ms.LoadMessageInfo() == nil {
   947  			ms.StoreMessageInfo(mi)
   948  		}
   949  		return ms
   950  	}
   951  	return mi.MessageOf(x)
   952  }
   953  
   954  // Deprecated: Use ListTabSummariesRequest.ProtoReflect.Descriptor instead.
   955  func (*ListTabSummariesRequest) Descriptor() ([]byte, []int) {
   956  	return file_data_proto_rawDescGZIP(), []int{16}
   957  }
   958  
   959  func (x *ListTabSummariesRequest) GetScope() string {
   960  	if x != nil {
   961  		return x.Scope
   962  	}
   963  	return ""
   964  }
   965  
   966  func (x *ListTabSummariesRequest) GetDashboard() string {
   967  	if x != nil {
   968  		return x.Dashboard
   969  	}
   970  	return ""
   971  }
   972  
   973  type ListTabSummariesResponse struct {
   974  	state         protoimpl.MessageState
   975  	sizeCache     protoimpl.SizeCache
   976  	unknownFields protoimpl.UnknownFields
   977  
   978  	// List of tab summaries.
   979  	TabSummaries []*TabSummary `protobuf:"bytes,1,rep,name=tab_summaries,json=tabSummaries,proto3" json:"tab_summaries,omitempty"`
   980  }
   981  
   982  func (x *ListTabSummariesResponse) Reset() {
   983  	*x = ListTabSummariesResponse{}
   984  	if protoimpl.UnsafeEnabled {
   985  		mi := &file_data_proto_msgTypes[17]
   986  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   987  		ms.StoreMessageInfo(mi)
   988  	}
   989  }
   990  
   991  func (x *ListTabSummariesResponse) String() string {
   992  	return protoimpl.X.MessageStringOf(x)
   993  }
   994  
   995  func (*ListTabSummariesResponse) ProtoMessage() {}
   996  
   997  func (x *ListTabSummariesResponse) ProtoReflect() protoreflect.Message {
   998  	mi := &file_data_proto_msgTypes[17]
   999  	if protoimpl.UnsafeEnabled && x != nil {
  1000  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1001  		if ms.LoadMessageInfo() == nil {
  1002  			ms.StoreMessageInfo(mi)
  1003  		}
  1004  		return ms
  1005  	}
  1006  	return mi.MessageOf(x)
  1007  }
  1008  
  1009  // Deprecated: Use ListTabSummariesResponse.ProtoReflect.Descriptor instead.
  1010  func (*ListTabSummariesResponse) Descriptor() ([]byte, []int) {
  1011  	return file_data_proto_rawDescGZIP(), []int{17}
  1012  }
  1013  
  1014  func (x *ListTabSummariesResponse) GetTabSummaries() []*TabSummary {
  1015  	if x != nil {
  1016  		return x.TabSummaries
  1017  	}
  1018  	return nil
  1019  }
  1020  
  1021  type GetTabSummaryRequest struct {
  1022  	state         protoimpl.MessageState
  1023  	sizeCache     protoimpl.SizeCache
  1024  	unknownFields protoimpl.UnknownFields
  1025  
  1026  	// Scope defines the GCS bucket to read the results from.
  1027  	Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
  1028  	// Name of the dashboard to fetch tab summaries for.
  1029  	Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
  1030  	// Name of the particular tab to fetch the summary for.
  1031  	Tab string `protobuf:"bytes,3,opt,name=tab,proto3" json:"tab,omitempty"`
  1032  }
  1033  
  1034  func (x *GetTabSummaryRequest) Reset() {
  1035  	*x = GetTabSummaryRequest{}
  1036  	if protoimpl.UnsafeEnabled {
  1037  		mi := &file_data_proto_msgTypes[18]
  1038  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1039  		ms.StoreMessageInfo(mi)
  1040  	}
  1041  }
  1042  
  1043  func (x *GetTabSummaryRequest) String() string {
  1044  	return protoimpl.X.MessageStringOf(x)
  1045  }
  1046  
  1047  func (*GetTabSummaryRequest) ProtoMessage() {}
  1048  
  1049  func (x *GetTabSummaryRequest) ProtoReflect() protoreflect.Message {
  1050  	mi := &file_data_proto_msgTypes[18]
  1051  	if protoimpl.UnsafeEnabled && x != nil {
  1052  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1053  		if ms.LoadMessageInfo() == nil {
  1054  			ms.StoreMessageInfo(mi)
  1055  		}
  1056  		return ms
  1057  	}
  1058  	return mi.MessageOf(x)
  1059  }
  1060  
  1061  // Deprecated: Use GetTabSummaryRequest.ProtoReflect.Descriptor instead.
  1062  func (*GetTabSummaryRequest) Descriptor() ([]byte, []int) {
  1063  	return file_data_proto_rawDescGZIP(), []int{18}
  1064  }
  1065  
  1066  func (x *GetTabSummaryRequest) GetScope() string {
  1067  	if x != nil {
  1068  		return x.Scope
  1069  	}
  1070  	return ""
  1071  }
  1072  
  1073  func (x *GetTabSummaryRequest) GetDashboard() string {
  1074  	if x != nil {
  1075  		return x.Dashboard
  1076  	}
  1077  	return ""
  1078  }
  1079  
  1080  func (x *GetTabSummaryRequest) GetTab() string {
  1081  	if x != nil {
  1082  		return x.Tab
  1083  	}
  1084  	return ""
  1085  }
  1086  
  1087  type GetTabSummaryResponse struct {
  1088  	state         protoimpl.MessageState
  1089  	sizeCache     protoimpl.SizeCache
  1090  	unknownFields protoimpl.UnknownFields
  1091  
  1092  	// Summary for the tab
  1093  	TabSummary *TabSummary `protobuf:"bytes,1,opt,name=tab_summary,json=tabSummary,proto3" json:"tab_summary,omitempty"`
  1094  }
  1095  
  1096  func (x *GetTabSummaryResponse) Reset() {
  1097  	*x = GetTabSummaryResponse{}
  1098  	if protoimpl.UnsafeEnabled {
  1099  		mi := &file_data_proto_msgTypes[19]
  1100  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1101  		ms.StoreMessageInfo(mi)
  1102  	}
  1103  }
  1104  
  1105  func (x *GetTabSummaryResponse) String() string {
  1106  	return protoimpl.X.MessageStringOf(x)
  1107  }
  1108  
  1109  func (*GetTabSummaryResponse) ProtoMessage() {}
  1110  
  1111  func (x *GetTabSummaryResponse) ProtoReflect() protoreflect.Message {
  1112  	mi := &file_data_proto_msgTypes[19]
  1113  	if protoimpl.UnsafeEnabled && x != nil {
  1114  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1115  		if ms.LoadMessageInfo() == nil {
  1116  			ms.StoreMessageInfo(mi)
  1117  		}
  1118  		return ms
  1119  	}
  1120  	return mi.MessageOf(x)
  1121  }
  1122  
  1123  // Deprecated: Use GetTabSummaryResponse.ProtoReflect.Descriptor instead.
  1124  func (*GetTabSummaryResponse) Descriptor() ([]byte, []int) {
  1125  	return file_data_proto_rawDescGZIP(), []int{19}
  1126  }
  1127  
  1128  func (x *GetTabSummaryResponse) GetTabSummary() *TabSummary {
  1129  	if x != nil {
  1130  		return x.TabSummary
  1131  	}
  1132  	return nil
  1133  }
  1134  
  1135  type ListDashboardSummariesRequest struct {
  1136  	state         protoimpl.MessageState
  1137  	sizeCache     protoimpl.SizeCache
  1138  	unknownFields protoimpl.UnknownFields
  1139  
  1140  	// Scope defines the GCS bucket to read the results from.
  1141  	Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
  1142  	// Name of the dashboard group to fetch dashboard summaries for.
  1143  	DashboardGroup string `protobuf:"bytes,2,opt,name=dashboard_group,json=dashboardGroup,proto3" json:"dashboard_group,omitempty"`
  1144  }
  1145  
  1146  func (x *ListDashboardSummariesRequest) Reset() {
  1147  	*x = ListDashboardSummariesRequest{}
  1148  	if protoimpl.UnsafeEnabled {
  1149  		mi := &file_data_proto_msgTypes[20]
  1150  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1151  		ms.StoreMessageInfo(mi)
  1152  	}
  1153  }
  1154  
  1155  func (x *ListDashboardSummariesRequest) String() string {
  1156  	return protoimpl.X.MessageStringOf(x)
  1157  }
  1158  
  1159  func (*ListDashboardSummariesRequest) ProtoMessage() {}
  1160  
  1161  func (x *ListDashboardSummariesRequest) ProtoReflect() protoreflect.Message {
  1162  	mi := &file_data_proto_msgTypes[20]
  1163  	if protoimpl.UnsafeEnabled && x != nil {
  1164  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1165  		if ms.LoadMessageInfo() == nil {
  1166  			ms.StoreMessageInfo(mi)
  1167  		}
  1168  		return ms
  1169  	}
  1170  	return mi.MessageOf(x)
  1171  }
  1172  
  1173  // Deprecated: Use ListDashboardSummariesRequest.ProtoReflect.Descriptor instead.
  1174  func (*ListDashboardSummariesRequest) Descriptor() ([]byte, []int) {
  1175  	return file_data_proto_rawDescGZIP(), []int{20}
  1176  }
  1177  
  1178  func (x *ListDashboardSummariesRequest) GetScope() string {
  1179  	if x != nil {
  1180  		return x.Scope
  1181  	}
  1182  	return ""
  1183  }
  1184  
  1185  func (x *ListDashboardSummariesRequest) GetDashboardGroup() string {
  1186  	if x != nil {
  1187  		return x.DashboardGroup
  1188  	}
  1189  	return ""
  1190  }
  1191  
  1192  type ListDashboardSummariesResponse struct {
  1193  	state         protoimpl.MessageState
  1194  	sizeCache     protoimpl.SizeCache
  1195  	unknownFields protoimpl.UnknownFields
  1196  
  1197  	// List of dashboard summaries.
  1198  	DashboardSummaries []*DashboardSummary `protobuf:"bytes,1,rep,name=dashboard_summaries,json=dashboardSummaries,proto3" json:"dashboard_summaries,omitempty"`
  1199  }
  1200  
  1201  func (x *ListDashboardSummariesResponse) Reset() {
  1202  	*x = ListDashboardSummariesResponse{}
  1203  	if protoimpl.UnsafeEnabled {
  1204  		mi := &file_data_proto_msgTypes[21]
  1205  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1206  		ms.StoreMessageInfo(mi)
  1207  	}
  1208  }
  1209  
  1210  func (x *ListDashboardSummariesResponse) String() string {
  1211  	return protoimpl.X.MessageStringOf(x)
  1212  }
  1213  
  1214  func (*ListDashboardSummariesResponse) ProtoMessage() {}
  1215  
  1216  func (x *ListDashboardSummariesResponse) ProtoReflect() protoreflect.Message {
  1217  	mi := &file_data_proto_msgTypes[21]
  1218  	if protoimpl.UnsafeEnabled && x != nil {
  1219  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1220  		if ms.LoadMessageInfo() == nil {
  1221  			ms.StoreMessageInfo(mi)
  1222  		}
  1223  		return ms
  1224  	}
  1225  	return mi.MessageOf(x)
  1226  }
  1227  
  1228  // Deprecated: Use ListDashboardSummariesResponse.ProtoReflect.Descriptor instead.
  1229  func (*ListDashboardSummariesResponse) Descriptor() ([]byte, []int) {
  1230  	return file_data_proto_rawDescGZIP(), []int{21}
  1231  }
  1232  
  1233  func (x *ListDashboardSummariesResponse) GetDashboardSummaries() []*DashboardSummary {
  1234  	if x != nil {
  1235  		return x.DashboardSummaries
  1236  	}
  1237  	return nil
  1238  }
  1239  
  1240  type GetDashboardSummaryRequest struct {
  1241  	state         protoimpl.MessageState
  1242  	sizeCache     protoimpl.SizeCache
  1243  	unknownFields protoimpl.UnknownFields
  1244  
  1245  	// Scope defines the GCS bucket to read the results from.
  1246  	Scope string `protobuf:"bytes,1,opt,name=scope,proto3" json:"scope,omitempty"`
  1247  	// Name of the dashboard to fetch the summary for.
  1248  	Dashboard string `protobuf:"bytes,2,opt,name=dashboard,proto3" json:"dashboard,omitempty"`
  1249  }
  1250  
  1251  func (x *GetDashboardSummaryRequest) Reset() {
  1252  	*x = GetDashboardSummaryRequest{}
  1253  	if protoimpl.UnsafeEnabled {
  1254  		mi := &file_data_proto_msgTypes[22]
  1255  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1256  		ms.StoreMessageInfo(mi)
  1257  	}
  1258  }
  1259  
  1260  func (x *GetDashboardSummaryRequest) String() string {
  1261  	return protoimpl.X.MessageStringOf(x)
  1262  }
  1263  
  1264  func (*GetDashboardSummaryRequest) ProtoMessage() {}
  1265  
  1266  func (x *GetDashboardSummaryRequest) ProtoReflect() protoreflect.Message {
  1267  	mi := &file_data_proto_msgTypes[22]
  1268  	if protoimpl.UnsafeEnabled && x != nil {
  1269  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1270  		if ms.LoadMessageInfo() == nil {
  1271  			ms.StoreMessageInfo(mi)
  1272  		}
  1273  		return ms
  1274  	}
  1275  	return mi.MessageOf(x)
  1276  }
  1277  
  1278  // Deprecated: Use GetDashboardSummaryRequest.ProtoReflect.Descriptor instead.
  1279  func (*GetDashboardSummaryRequest) Descriptor() ([]byte, []int) {
  1280  	return file_data_proto_rawDescGZIP(), []int{22}
  1281  }
  1282  
  1283  func (x *GetDashboardSummaryRequest) GetScope() string {
  1284  	if x != nil {
  1285  		return x.Scope
  1286  	}
  1287  	return ""
  1288  }
  1289  
  1290  func (x *GetDashboardSummaryRequest) GetDashboard() string {
  1291  	if x != nil {
  1292  		return x.Dashboard
  1293  	}
  1294  	return ""
  1295  }
  1296  
  1297  type GetDashboardSummaryResponse struct {
  1298  	state         protoimpl.MessageState
  1299  	sizeCache     protoimpl.SizeCache
  1300  	unknownFields protoimpl.UnknownFields
  1301  
  1302  	// Summary for the dashboard.
  1303  	DashboardSummary *DashboardSummary `protobuf:"bytes,1,opt,name=dashboard_summary,json=dashboardSummary,proto3" json:"dashboard_summary,omitempty"`
  1304  }
  1305  
  1306  func (x *GetDashboardSummaryResponse) Reset() {
  1307  	*x = GetDashboardSummaryResponse{}
  1308  	if protoimpl.UnsafeEnabled {
  1309  		mi := &file_data_proto_msgTypes[23]
  1310  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1311  		ms.StoreMessageInfo(mi)
  1312  	}
  1313  }
  1314  
  1315  func (x *GetDashboardSummaryResponse) String() string {
  1316  	return protoimpl.X.MessageStringOf(x)
  1317  }
  1318  
  1319  func (*GetDashboardSummaryResponse) ProtoMessage() {}
  1320  
  1321  func (x *GetDashboardSummaryResponse) ProtoReflect() protoreflect.Message {
  1322  	mi := &file_data_proto_msgTypes[23]
  1323  	if protoimpl.UnsafeEnabled && x != nil {
  1324  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1325  		if ms.LoadMessageInfo() == nil {
  1326  			ms.StoreMessageInfo(mi)
  1327  		}
  1328  		return ms
  1329  	}
  1330  	return mi.MessageOf(x)
  1331  }
  1332  
  1333  // Deprecated: Use GetDashboardSummaryResponse.ProtoReflect.Descriptor instead.
  1334  func (*GetDashboardSummaryResponse) Descriptor() ([]byte, []int) {
  1335  	return file_data_proto_rawDescGZIP(), []int{23}
  1336  }
  1337  
  1338  func (x *GetDashboardSummaryResponse) GetDashboardSummary() *DashboardSummary {
  1339  	if x != nil {
  1340  		return x.DashboardSummary
  1341  	}
  1342  	return nil
  1343  }
  1344  
  1345  // Summary for a particular tab.
  1346  // Contains the info required to render tab summary in UI.
  1347  type TabSummary struct {
  1348  	state         protoimpl.MessageState
  1349  	sizeCache     protoimpl.SizeCache
  1350  	unknownFields protoimpl.UnknownFields
  1351  
  1352  	// The name of the dashboard this tab belongs to.
  1353  	DashboardName string `protobuf:"bytes,1,opt,name=dashboard_name,json=dashboardName,proto3" json:"dashboard_name,omitempty"`
  1354  	// The name of the tab.
  1355  	TabName string `protobuf:"bytes,2,opt,name=tab_name,json=tabName,proto3" json:"tab_name,omitempty"`
  1356  	// Overall status for the dashboard tab (e.g. PASSING, FAILING, etc.)
  1357  	OverallStatus string `protobuf:"bytes,3,opt,name=overall_status,json=overallStatus,proto3" json:"overall_status,omitempty"`
  1358  	// Summary of the status for this dashboard tab.
  1359  	DetailedStatusMessage string `protobuf:"bytes,4,opt,name=detailed_status_message,json=detailedStatusMessage,proto3" json:"detailed_status_message,omitempty"`
  1360  	// Timestamp at which tests last ran.
  1361  	LastRunTimestamp *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=last_run_timestamp,json=lastRunTimestamp,proto3" json:"last_run_timestamp,omitempty"`
  1362  	// Timestamp at which the test group was last updated.
  1363  	LastUpdateTimestamp *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_update_timestamp,json=lastUpdateTimestamp,proto3" json:"last_update_timestamp,omitempty"`
  1364  	// The ID for the latest passing build.
  1365  	LatestPassingBuild string `protobuf:"bytes,7,opt,name=latest_passing_build,json=latestPassingBuild,proto3" json:"latest_passing_build,omitempty"`
  1366  	// Summarized info on the failing tests.
  1367  	// In this case, any test which raised an alert and did not suppress it is considered failing.
  1368  	FailuresSummary *FailuresSummary `protobuf:"bytes,8,opt,name=failures_summary,json=failuresSummary,proto3" json:"failures_summary,omitempty"`
  1369  	//Summarized info on the tab's healthiness.
  1370  	HealthinessSummary *HealthinessSummary `protobuf:"bytes,9,opt,name=healthiness_summary,json=healthinessSummary,proto3" json:"healthiness_summary,omitempty"`
  1371  }
  1372  
  1373  func (x *TabSummary) Reset() {
  1374  	*x = TabSummary{}
  1375  	if protoimpl.UnsafeEnabled {
  1376  		mi := &file_data_proto_msgTypes[24]
  1377  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1378  		ms.StoreMessageInfo(mi)
  1379  	}
  1380  }
  1381  
  1382  func (x *TabSummary) String() string {
  1383  	return protoimpl.X.MessageStringOf(x)
  1384  }
  1385  
  1386  func (*TabSummary) ProtoMessage() {}
  1387  
  1388  func (x *TabSummary) ProtoReflect() protoreflect.Message {
  1389  	mi := &file_data_proto_msgTypes[24]
  1390  	if protoimpl.UnsafeEnabled && x != nil {
  1391  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1392  		if ms.LoadMessageInfo() == nil {
  1393  			ms.StoreMessageInfo(mi)
  1394  		}
  1395  		return ms
  1396  	}
  1397  	return mi.MessageOf(x)
  1398  }
  1399  
  1400  // Deprecated: Use TabSummary.ProtoReflect.Descriptor instead.
  1401  func (*TabSummary) Descriptor() ([]byte, []int) {
  1402  	return file_data_proto_rawDescGZIP(), []int{24}
  1403  }
  1404  
  1405  func (x *TabSummary) GetDashboardName() string {
  1406  	if x != nil {
  1407  		return x.DashboardName
  1408  	}
  1409  	return ""
  1410  }
  1411  
  1412  func (x *TabSummary) GetTabName() string {
  1413  	if x != nil {
  1414  		return x.TabName
  1415  	}
  1416  	return ""
  1417  }
  1418  
  1419  func (x *TabSummary) GetOverallStatus() string {
  1420  	if x != nil {
  1421  		return x.OverallStatus
  1422  	}
  1423  	return ""
  1424  }
  1425  
  1426  func (x *TabSummary) GetDetailedStatusMessage() string {
  1427  	if x != nil {
  1428  		return x.DetailedStatusMessage
  1429  	}
  1430  	return ""
  1431  }
  1432  
  1433  func (x *TabSummary) GetLastRunTimestamp() *timestamppb.Timestamp {
  1434  	if x != nil {
  1435  		return x.LastRunTimestamp
  1436  	}
  1437  	return nil
  1438  }
  1439  
  1440  func (x *TabSummary) GetLastUpdateTimestamp() *timestamppb.Timestamp {
  1441  	if x != nil {
  1442  		return x.LastUpdateTimestamp
  1443  	}
  1444  	return nil
  1445  }
  1446  
  1447  func (x *TabSummary) GetLatestPassingBuild() string {
  1448  	if x != nil {
  1449  		return x.LatestPassingBuild
  1450  	}
  1451  	return ""
  1452  }
  1453  
  1454  func (x *TabSummary) GetFailuresSummary() *FailuresSummary {
  1455  	if x != nil {
  1456  		return x.FailuresSummary
  1457  	}
  1458  	return nil
  1459  }
  1460  
  1461  func (x *TabSummary) GetHealthinessSummary() *HealthinessSummary {
  1462  	if x != nil {
  1463  		return x.HealthinessSummary
  1464  	}
  1465  	return nil
  1466  }
  1467  
  1468  // Summarized representation of data from failing test summaries.
  1469  // Will be rendered in failures summary component within tab summary.
  1470  type FailuresSummary struct {
  1471  	state         protoimpl.MessageState
  1472  	sizeCache     protoimpl.SizeCache
  1473  	unknownFields protoimpl.UnknownFields
  1474  
  1475  	// Top failing tests by fail count.
  1476  	TopFailingTests []*FailingTestInfo `protobuf:"bytes,1,rep,name=top_failing_tests,json=topFailingTests,proto3" json:"top_failing_tests,omitempty"`
  1477  	// Aggregated stats across all failing tests.
  1478  	FailureStats *FailureStats `protobuf:"bytes,2,opt,name=failure_stats,json=failureStats,proto3" json:"failure_stats,omitempty"`
  1479  }
  1480  
  1481  func (x *FailuresSummary) Reset() {
  1482  	*x = FailuresSummary{}
  1483  	if protoimpl.UnsafeEnabled {
  1484  		mi := &file_data_proto_msgTypes[25]
  1485  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1486  		ms.StoreMessageInfo(mi)
  1487  	}
  1488  }
  1489  
  1490  func (x *FailuresSummary) String() string {
  1491  	return protoimpl.X.MessageStringOf(x)
  1492  }
  1493  
  1494  func (*FailuresSummary) ProtoMessage() {}
  1495  
  1496  func (x *FailuresSummary) ProtoReflect() protoreflect.Message {
  1497  	mi := &file_data_proto_msgTypes[25]
  1498  	if protoimpl.UnsafeEnabled && x != nil {
  1499  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1500  		if ms.LoadMessageInfo() == nil {
  1501  			ms.StoreMessageInfo(mi)
  1502  		}
  1503  		return ms
  1504  	}
  1505  	return mi.MessageOf(x)
  1506  }
  1507  
  1508  // Deprecated: Use FailuresSummary.ProtoReflect.Descriptor instead.
  1509  func (*FailuresSummary) Descriptor() ([]byte, []int) {
  1510  	return file_data_proto_rawDescGZIP(), []int{25}
  1511  }
  1512  
  1513  func (x *FailuresSummary) GetTopFailingTests() []*FailingTestInfo {
  1514  	if x != nil {
  1515  		return x.TopFailingTests
  1516  	}
  1517  	return nil
  1518  }
  1519  
  1520  func (x *FailuresSummary) GetFailureStats() *FailureStats {
  1521  	if x != nil {
  1522  		return x.FailureStats
  1523  	}
  1524  	return nil
  1525  }
  1526  
  1527  // Subset of data from FailingTestSummary defined in summary.proto.
  1528  type FailingTestInfo struct {
  1529  	state         protoimpl.MessageState
  1530  	sizeCache     protoimpl.SizeCache
  1531  	unknownFields protoimpl.UnknownFields
  1532  
  1533  	// Name of the failing test.
  1534  	DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
  1535  	// number of times the test has failed.
  1536  	FailCount int32 `protobuf:"varint,2,opt,name=fail_count,json=failCount,proto3" json:"fail_count,omitempty"`
  1537  	// Timestamp for the last cycle in which the test passed.
  1538  	PassTimestamp *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=pass_timestamp,json=passTimestamp,proto3" json:"pass_timestamp,omitempty"`
  1539  	// Timestamp for the first cycle in which the test failed.
  1540  	FailTimestamp *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=fail_timestamp,json=failTimestamp,proto3" json:"fail_timestamp,omitempty"`
  1541  }
  1542  
  1543  func (x *FailingTestInfo) Reset() {
  1544  	*x = FailingTestInfo{}
  1545  	if protoimpl.UnsafeEnabled {
  1546  		mi := &file_data_proto_msgTypes[26]
  1547  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1548  		ms.StoreMessageInfo(mi)
  1549  	}
  1550  }
  1551  
  1552  func (x *FailingTestInfo) String() string {
  1553  	return protoimpl.X.MessageStringOf(x)
  1554  }
  1555  
  1556  func (*FailingTestInfo) ProtoMessage() {}
  1557  
  1558  func (x *FailingTestInfo) ProtoReflect() protoreflect.Message {
  1559  	mi := &file_data_proto_msgTypes[26]
  1560  	if protoimpl.UnsafeEnabled && x != nil {
  1561  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1562  		if ms.LoadMessageInfo() == nil {
  1563  			ms.StoreMessageInfo(mi)
  1564  		}
  1565  		return ms
  1566  	}
  1567  	return mi.MessageOf(x)
  1568  }
  1569  
  1570  // Deprecated: Use FailingTestInfo.ProtoReflect.Descriptor instead.
  1571  func (*FailingTestInfo) Descriptor() ([]byte, []int) {
  1572  	return file_data_proto_rawDescGZIP(), []int{26}
  1573  }
  1574  
  1575  func (x *FailingTestInfo) GetDisplayName() string {
  1576  	if x != nil {
  1577  		return x.DisplayName
  1578  	}
  1579  	return ""
  1580  }
  1581  
  1582  func (x *FailingTestInfo) GetFailCount() int32 {
  1583  	if x != nil {
  1584  		return x.FailCount
  1585  	}
  1586  	return 0
  1587  }
  1588  
  1589  func (x *FailingTestInfo) GetPassTimestamp() *timestamppb.Timestamp {
  1590  	if x != nil {
  1591  		return x.PassTimestamp
  1592  	}
  1593  	return nil
  1594  }
  1595  
  1596  func (x *FailingTestInfo) GetFailTimestamp() *timestamppb.Timestamp {
  1597  	if x != nil {
  1598  		return x.FailTimestamp
  1599  	}
  1600  	return nil
  1601  }
  1602  
  1603  // Aggregate stats across all failing tests.
  1604  type FailureStats struct {
  1605  	state         protoimpl.MessageState
  1606  	sizeCache     protoimpl.SizeCache
  1607  	unknownFields protoimpl.UnknownFields
  1608  
  1609  	// Number of failing tests for the tab.
  1610  	NumFailingTests int32 `protobuf:"varint,1,opt,name=num_failing_tests,json=numFailingTests,proto3" json:"num_failing_tests,omitempty"`
  1611  }
  1612  
  1613  func (x *FailureStats) Reset() {
  1614  	*x = FailureStats{}
  1615  	if protoimpl.UnsafeEnabled {
  1616  		mi := &file_data_proto_msgTypes[27]
  1617  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1618  		ms.StoreMessageInfo(mi)
  1619  	}
  1620  }
  1621  
  1622  func (x *FailureStats) String() string {
  1623  	return protoimpl.X.MessageStringOf(x)
  1624  }
  1625  
  1626  func (*FailureStats) ProtoMessage() {}
  1627  
  1628  func (x *FailureStats) ProtoReflect() protoreflect.Message {
  1629  	mi := &file_data_proto_msgTypes[27]
  1630  	if protoimpl.UnsafeEnabled && x != nil {
  1631  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1632  		if ms.LoadMessageInfo() == nil {
  1633  			ms.StoreMessageInfo(mi)
  1634  		}
  1635  		return ms
  1636  	}
  1637  	return mi.MessageOf(x)
  1638  }
  1639  
  1640  // Deprecated: Use FailureStats.ProtoReflect.Descriptor instead.
  1641  func (*FailureStats) Descriptor() ([]byte, []int) {
  1642  	return file_data_proto_rawDescGZIP(), []int{27}
  1643  }
  1644  
  1645  func (x *FailureStats) GetNumFailingTests() int32 {
  1646  	if x != nil {
  1647  		return x.NumFailingTests
  1648  	}
  1649  	return 0
  1650  }
  1651  
  1652  // Summarized representation of data from tab's HealthinessInfo.
  1653  // Will be rendered in healthiness summary component within tab summary.
  1654  type HealthinessSummary struct {
  1655  	state         protoimpl.MessageState
  1656  	sizeCache     protoimpl.SizeCache
  1657  	unknownFields protoimpl.UnknownFields
  1658  
  1659  	// Top flaky tests (with flakiness > 0) by the current flakiness %.
  1660  	TopFlakyTests []*FlakyTestInfo `protobuf:"bytes,1,rep,name=top_flaky_tests,json=topFlakyTests,proto3" json:"top_flaky_tests,omitempty"`
  1661  	// Aggregated healthiness stats for the tab.
  1662  	HealthinessStats *HealthinessStats `protobuf:"bytes,2,opt,name=healthiness_stats,json=healthinessStats,proto3" json:"healthiness_stats,omitempty"`
  1663  }
  1664  
  1665  func (x *HealthinessSummary) Reset() {
  1666  	*x = HealthinessSummary{}
  1667  	if protoimpl.UnsafeEnabled {
  1668  		mi := &file_data_proto_msgTypes[28]
  1669  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1670  		ms.StoreMessageInfo(mi)
  1671  	}
  1672  }
  1673  
  1674  func (x *HealthinessSummary) String() string {
  1675  	return protoimpl.X.MessageStringOf(x)
  1676  }
  1677  
  1678  func (*HealthinessSummary) ProtoMessage() {}
  1679  
  1680  func (x *HealthinessSummary) ProtoReflect() protoreflect.Message {
  1681  	mi := &file_data_proto_msgTypes[28]
  1682  	if protoimpl.UnsafeEnabled && x != nil {
  1683  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1684  		if ms.LoadMessageInfo() == nil {
  1685  			ms.StoreMessageInfo(mi)
  1686  		}
  1687  		return ms
  1688  	}
  1689  	return mi.MessageOf(x)
  1690  }
  1691  
  1692  // Deprecated: Use HealthinessSummary.ProtoReflect.Descriptor instead.
  1693  func (*HealthinessSummary) Descriptor() ([]byte, []int) {
  1694  	return file_data_proto_rawDescGZIP(), []int{28}
  1695  }
  1696  
  1697  func (x *HealthinessSummary) GetTopFlakyTests() []*FlakyTestInfo {
  1698  	if x != nil {
  1699  		return x.TopFlakyTests
  1700  	}
  1701  	return nil
  1702  }
  1703  
  1704  func (x *HealthinessSummary) GetHealthinessStats() *HealthinessStats {
  1705  	if x != nil {
  1706  		return x.HealthinessStats
  1707  	}
  1708  	return nil
  1709  }
  1710  
  1711  // Subset of data from HealthinessInfo.TestInfo defined in summary.proto.
  1712  type FlakyTestInfo struct {
  1713  	state         protoimpl.MessageState
  1714  	sizeCache     protoimpl.SizeCache
  1715  	unknownFields protoimpl.UnknownFields
  1716  
  1717  	// Name of the flaky test.
  1718  	DisplayName string `protobuf:"bytes,1,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
  1719  	// The flakiness of the test, in % measured out of 100
  1720  	Flakiness float32 `protobuf:"fixed32,2,opt,name=flakiness,proto3" json:"flakiness,omitempty"`
  1721  	// The change of flakiness based on the last interval's flakiness
  1722  	// The interval is set by each tab's config, with a default of 7 days.
  1723  	Change summary.TestInfo_Trend `protobuf:"varint,3,opt,name=change,proto3,enum=testgrid.summary.TestInfo_Trend" json:"change,omitempty"`
  1724  }
  1725  
  1726  func (x *FlakyTestInfo) Reset() {
  1727  	*x = FlakyTestInfo{}
  1728  	if protoimpl.UnsafeEnabled {
  1729  		mi := &file_data_proto_msgTypes[29]
  1730  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1731  		ms.StoreMessageInfo(mi)
  1732  	}
  1733  }
  1734  
  1735  func (x *FlakyTestInfo) String() string {
  1736  	return protoimpl.X.MessageStringOf(x)
  1737  }
  1738  
  1739  func (*FlakyTestInfo) ProtoMessage() {}
  1740  
  1741  func (x *FlakyTestInfo) ProtoReflect() protoreflect.Message {
  1742  	mi := &file_data_proto_msgTypes[29]
  1743  	if protoimpl.UnsafeEnabled && x != nil {
  1744  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1745  		if ms.LoadMessageInfo() == nil {
  1746  			ms.StoreMessageInfo(mi)
  1747  		}
  1748  		return ms
  1749  	}
  1750  	return mi.MessageOf(x)
  1751  }
  1752  
  1753  // Deprecated: Use FlakyTestInfo.ProtoReflect.Descriptor instead.
  1754  func (*FlakyTestInfo) Descriptor() ([]byte, []int) {
  1755  	return file_data_proto_rawDescGZIP(), []int{29}
  1756  }
  1757  
  1758  func (x *FlakyTestInfo) GetDisplayName() string {
  1759  	if x != nil {
  1760  		return x.DisplayName
  1761  	}
  1762  	return ""
  1763  }
  1764  
  1765  func (x *FlakyTestInfo) GetFlakiness() float32 {
  1766  	if x != nil {
  1767  		return x.Flakiness
  1768  	}
  1769  	return 0
  1770  }
  1771  
  1772  func (x *FlakyTestInfo) GetChange() summary.TestInfo_Trend {
  1773  	if x != nil {
  1774  		return x.Change
  1775  	}
  1776  	return summary.TestInfo_Trend(0)
  1777  }
  1778  
  1779  // Aggregated healthiness stats across the tab.
  1780  type HealthinessStats struct {
  1781  	state         protoimpl.MessageState
  1782  	sizeCache     protoimpl.SizeCache
  1783  	unknownFields protoimpl.UnknownFields
  1784  
  1785  	// The start of the time frame that the analysis was run for.
  1786  	Start *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"`
  1787  	// The end of the time frame that the analysis was run for.
  1788  	End *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"`
  1789  	// Number of flaky tests in the tab.
  1790  	NumFlakyTests int32 `protobuf:"varint,3,opt,name=num_flaky_tests,json=numFlakyTests,proto3" json:"num_flaky_tests,omitempty"`
  1791  	// Average flakiness for the current analysis interval.
  1792  	AverageFlakiness float32 `protobuf:"fixed32,4,opt,name=average_flakiness,json=averageFlakiness,proto3" json:"average_flakiness,omitempty"`
  1793  	// Average flakiness for the previous analysis interval.
  1794  	PreviousFlakiness float32 `protobuf:"fixed32,5,opt,name=previous_flakiness,json=previousFlakiness,proto3" json:"previous_flakiness,omitempty"`
  1795  }
  1796  
  1797  func (x *HealthinessStats) Reset() {
  1798  	*x = HealthinessStats{}
  1799  	if protoimpl.UnsafeEnabled {
  1800  		mi := &file_data_proto_msgTypes[30]
  1801  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1802  		ms.StoreMessageInfo(mi)
  1803  	}
  1804  }
  1805  
  1806  func (x *HealthinessStats) String() string {
  1807  	return protoimpl.X.MessageStringOf(x)
  1808  }
  1809  
  1810  func (*HealthinessStats) ProtoMessage() {}
  1811  
  1812  func (x *HealthinessStats) ProtoReflect() protoreflect.Message {
  1813  	mi := &file_data_proto_msgTypes[30]
  1814  	if protoimpl.UnsafeEnabled && x != nil {
  1815  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1816  		if ms.LoadMessageInfo() == nil {
  1817  			ms.StoreMessageInfo(mi)
  1818  		}
  1819  		return ms
  1820  	}
  1821  	return mi.MessageOf(x)
  1822  }
  1823  
  1824  // Deprecated: Use HealthinessStats.ProtoReflect.Descriptor instead.
  1825  func (*HealthinessStats) Descriptor() ([]byte, []int) {
  1826  	return file_data_proto_rawDescGZIP(), []int{30}
  1827  }
  1828  
  1829  func (x *HealthinessStats) GetStart() *timestamppb.Timestamp {
  1830  	if x != nil {
  1831  		return x.Start
  1832  	}
  1833  	return nil
  1834  }
  1835  
  1836  func (x *HealthinessStats) GetEnd() *timestamppb.Timestamp {
  1837  	if x != nil {
  1838  		return x.End
  1839  	}
  1840  	return nil
  1841  }
  1842  
  1843  func (x *HealthinessStats) GetNumFlakyTests() int32 {
  1844  	if x != nil {
  1845  		return x.NumFlakyTests
  1846  	}
  1847  	return 0
  1848  }
  1849  
  1850  func (x *HealthinessStats) GetAverageFlakiness() float32 {
  1851  	if x != nil {
  1852  		return x.AverageFlakiness
  1853  	}
  1854  	return 0
  1855  }
  1856  
  1857  func (x *HealthinessStats) GetPreviousFlakiness() float32 {
  1858  	if x != nil {
  1859  		return x.PreviousFlakiness
  1860  	}
  1861  	return 0
  1862  }
  1863  
  1864  // Summary for a particular dashboard.
  1865  // Contains the info required to render dashboard summary in UI (done in the dashboard group view).
  1866  type DashboardSummary struct {
  1867  	state         protoimpl.MessageState
  1868  	sizeCache     protoimpl.SizeCache
  1869  	unknownFields protoimpl.UnknownFields
  1870  
  1871  	// Name of the dashboard.
  1872  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1873  	// Overall status of the dashboard.
  1874  	// Will be calculated based on the presence and importance of underlying tabs.
  1875  	OverallStatus string `protobuf:"bytes,2,opt,name=overall_status,json=overallStatus,proto3" json:"overall_status,omitempty"`
  1876  	// Count of the tabs by status.
  1877  	TabStatusCount map[string]int32 `protobuf:"bytes,3,rep,name=tab_status_count,json=tabStatusCount,proto3" json:"tab_status_count,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
  1878  }
  1879  
  1880  func (x *DashboardSummary) Reset() {
  1881  	*x = DashboardSummary{}
  1882  	if protoimpl.UnsafeEnabled {
  1883  		mi := &file_data_proto_msgTypes[31]
  1884  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1885  		ms.StoreMessageInfo(mi)
  1886  	}
  1887  }
  1888  
  1889  func (x *DashboardSummary) String() string {
  1890  	return protoimpl.X.MessageStringOf(x)
  1891  }
  1892  
  1893  func (*DashboardSummary) ProtoMessage() {}
  1894  
  1895  func (x *DashboardSummary) ProtoReflect() protoreflect.Message {
  1896  	mi := &file_data_proto_msgTypes[31]
  1897  	if protoimpl.UnsafeEnabled && x != nil {
  1898  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1899  		if ms.LoadMessageInfo() == nil {
  1900  			ms.StoreMessageInfo(mi)
  1901  		}
  1902  		return ms
  1903  	}
  1904  	return mi.MessageOf(x)
  1905  }
  1906  
  1907  // Deprecated: Use DashboardSummary.ProtoReflect.Descriptor instead.
  1908  func (*DashboardSummary) Descriptor() ([]byte, []int) {
  1909  	return file_data_proto_rawDescGZIP(), []int{31}
  1910  }
  1911  
  1912  func (x *DashboardSummary) GetName() string {
  1913  	if x != nil {
  1914  		return x.Name
  1915  	}
  1916  	return ""
  1917  }
  1918  
  1919  func (x *DashboardSummary) GetOverallStatus() string {
  1920  	if x != nil {
  1921  		return x.OverallStatus
  1922  	}
  1923  	return ""
  1924  }
  1925  
  1926  func (x *DashboardSummary) GetTabStatusCount() map[string]int32 {
  1927  	if x != nil {
  1928  		return x.TabStatusCount
  1929  	}
  1930  	return nil
  1931  }
  1932  
  1933  type ListHeadersResponse_Header struct {
  1934  	state         protoimpl.MessageState
  1935  	sizeCache     protoimpl.SizeCache
  1936  	unknownFields protoimpl.UnknownFields
  1937  
  1938  	// Unique instance of the job, typically BUILD_NUMBER from prow or a guid
  1939  	Build string `protobuf:"bytes,1,opt,name=build,proto3" json:"build,omitempty"`
  1940  	// Name associated with the column (such as the run/invocation ID). No two
  1941  	// columns should have the same build_id and name. The name field allows the
  1942  	// display of multiple columns with the same build_id.
  1943  	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
  1944  	// When the build started running
  1945  	Started *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=started,proto3" json:"started,omitempty"`
  1946  	// Additional custom headers like commit, image used, etc.
  1947  	Extra []string `protobuf:"bytes,4,rep,name=extra,proto3" json:"extra,omitempty"`
  1948  	// Custom hotlist ids.
  1949  	HotlistIds string `protobuf:"bytes,5,opt,name=hotlist_ids,json=hotlistIds,proto3" json:"hotlist_ids,omitempty"`
  1950  }
  1951  
  1952  func (x *ListHeadersResponse_Header) Reset() {
  1953  	*x = ListHeadersResponse_Header{}
  1954  	if protoimpl.UnsafeEnabled {
  1955  		mi := &file_data_proto_msgTypes[32]
  1956  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1957  		ms.StoreMessageInfo(mi)
  1958  	}
  1959  }
  1960  
  1961  func (x *ListHeadersResponse_Header) String() string {
  1962  	return protoimpl.X.MessageStringOf(x)
  1963  }
  1964  
  1965  func (*ListHeadersResponse_Header) ProtoMessage() {}
  1966  
  1967  func (x *ListHeadersResponse_Header) ProtoReflect() protoreflect.Message {
  1968  	mi := &file_data_proto_msgTypes[32]
  1969  	if protoimpl.UnsafeEnabled && x != nil {
  1970  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1971  		if ms.LoadMessageInfo() == nil {
  1972  			ms.StoreMessageInfo(mi)
  1973  		}
  1974  		return ms
  1975  	}
  1976  	return mi.MessageOf(x)
  1977  }
  1978  
  1979  // Deprecated: Use ListHeadersResponse_Header.ProtoReflect.Descriptor instead.
  1980  func (*ListHeadersResponse_Header) Descriptor() ([]byte, []int) {
  1981  	return file_data_proto_rawDescGZIP(), []int{11, 0}
  1982  }
  1983  
  1984  func (x *ListHeadersResponse_Header) GetBuild() string {
  1985  	if x != nil {
  1986  		return x.Build
  1987  	}
  1988  	return ""
  1989  }
  1990  
  1991  func (x *ListHeadersResponse_Header) GetName() string {
  1992  	if x != nil {
  1993  		return x.Name
  1994  	}
  1995  	return ""
  1996  }
  1997  
  1998  func (x *ListHeadersResponse_Header) GetStarted() *timestamppb.Timestamp {
  1999  	if x != nil {
  2000  		return x.Started
  2001  	}
  2002  	return nil
  2003  }
  2004  
  2005  func (x *ListHeadersResponse_Header) GetExtra() []string {
  2006  	if x != nil {
  2007  		return x.Extra
  2008  	}
  2009  	return nil
  2010  }
  2011  
  2012  func (x *ListHeadersResponse_Header) GetHotlistIds() string {
  2013  	if x != nil {
  2014  		return x.HotlistIds
  2015  	}
  2016  	return ""
  2017  }
  2018  
  2019  type ListRowsResponse_Row struct {
  2020  	state         protoimpl.MessageState
  2021  	sizeCache     protoimpl.SizeCache
  2022  	unknownFields protoimpl.UnknownFields
  2023  
  2024  	// Display name of the test case
  2025  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  2026  	// Historical results of the test case. Unencoded.
  2027  	Cells []*ListRowsResponse_Cell `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"`
  2028  	// Issue or Bug IDs associated with the test case
  2029  	Issues []string `protobuf:"bytes,3,rep,name=issues,proto3" json:"issues,omitempty"`
  2030  	// Alert associated with the test case
  2031  	Alert *state.AlertInfo `protobuf:"bytes,4,opt,name=alert,proto3" json:"alert,omitempty"`
  2032  }
  2033  
  2034  func (x *ListRowsResponse_Row) Reset() {
  2035  	*x = ListRowsResponse_Row{}
  2036  	if protoimpl.UnsafeEnabled {
  2037  		mi := &file_data_proto_msgTypes[33]
  2038  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2039  		ms.StoreMessageInfo(mi)
  2040  	}
  2041  }
  2042  
  2043  func (x *ListRowsResponse_Row) String() string {
  2044  	return protoimpl.X.MessageStringOf(x)
  2045  }
  2046  
  2047  func (*ListRowsResponse_Row) ProtoMessage() {}
  2048  
  2049  func (x *ListRowsResponse_Row) ProtoReflect() protoreflect.Message {
  2050  	mi := &file_data_proto_msgTypes[33]
  2051  	if protoimpl.UnsafeEnabled && x != nil {
  2052  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2053  		if ms.LoadMessageInfo() == nil {
  2054  			ms.StoreMessageInfo(mi)
  2055  		}
  2056  		return ms
  2057  	}
  2058  	return mi.MessageOf(x)
  2059  }
  2060  
  2061  // Deprecated: Use ListRowsResponse_Row.ProtoReflect.Descriptor instead.
  2062  func (*ListRowsResponse_Row) Descriptor() ([]byte, []int) {
  2063  	return file_data_proto_rawDescGZIP(), []int{13, 0}
  2064  }
  2065  
  2066  func (x *ListRowsResponse_Row) GetName() string {
  2067  	if x != nil {
  2068  		return x.Name
  2069  	}
  2070  	return ""
  2071  }
  2072  
  2073  func (x *ListRowsResponse_Row) GetCells() []*ListRowsResponse_Cell {
  2074  	if x != nil {
  2075  		return x.Cells
  2076  	}
  2077  	return nil
  2078  }
  2079  
  2080  func (x *ListRowsResponse_Row) GetIssues() []string {
  2081  	if x != nil {
  2082  		return x.Issues
  2083  	}
  2084  	return nil
  2085  }
  2086  
  2087  func (x *ListRowsResponse_Row) GetAlert() *state.AlertInfo {
  2088  	if x != nil {
  2089  		return x.Alert
  2090  	}
  2091  	return nil
  2092  }
  2093  
  2094  type ListRowsResponse_Cell struct {
  2095  	state         protoimpl.MessageState
  2096  	sizeCache     protoimpl.SizeCache
  2097  	unknownFields protoimpl.UnknownFields
  2098  
  2099  	Result  int32  `protobuf:"varint,1,opt,name=result,proto3" json:"result,omitempty"`
  2100  	CellId  string `protobuf:"bytes,2,opt,name=cell_id,json=cellId,proto3" json:"cell_id,omitempty"`
  2101  	Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"`
  2102  	Icon    string `protobuf:"bytes,4,opt,name=icon,proto3" json:"icon,omitempty"`
  2103  }
  2104  
  2105  func (x *ListRowsResponse_Cell) Reset() {
  2106  	*x = ListRowsResponse_Cell{}
  2107  	if protoimpl.UnsafeEnabled {
  2108  		mi := &file_data_proto_msgTypes[34]
  2109  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2110  		ms.StoreMessageInfo(mi)
  2111  	}
  2112  }
  2113  
  2114  func (x *ListRowsResponse_Cell) String() string {
  2115  	return protoimpl.X.MessageStringOf(x)
  2116  }
  2117  
  2118  func (*ListRowsResponse_Cell) ProtoMessage() {}
  2119  
  2120  func (x *ListRowsResponse_Cell) ProtoReflect() protoreflect.Message {
  2121  	mi := &file_data_proto_msgTypes[34]
  2122  	if protoimpl.UnsafeEnabled && x != nil {
  2123  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2124  		if ms.LoadMessageInfo() == nil {
  2125  			ms.StoreMessageInfo(mi)
  2126  		}
  2127  		return ms
  2128  	}
  2129  	return mi.MessageOf(x)
  2130  }
  2131  
  2132  // Deprecated: Use ListRowsResponse_Cell.ProtoReflect.Descriptor instead.
  2133  func (*ListRowsResponse_Cell) Descriptor() ([]byte, []int) {
  2134  	return file_data_proto_rawDescGZIP(), []int{13, 1}
  2135  }
  2136  
  2137  func (x *ListRowsResponse_Cell) GetResult() int32 {
  2138  	if x != nil {
  2139  		return x.Result
  2140  	}
  2141  	return 0
  2142  }
  2143  
  2144  func (x *ListRowsResponse_Cell) GetCellId() string {
  2145  	if x != nil {
  2146  		return x.CellId
  2147  	}
  2148  	return ""
  2149  }
  2150  
  2151  func (x *ListRowsResponse_Cell) GetMessage() string {
  2152  	if x != nil {
  2153  		return x.Message
  2154  	}
  2155  	return ""
  2156  }
  2157  
  2158  func (x *ListRowsResponse_Cell) GetIcon() string {
  2159  	if x != nil {
  2160  		return x.Icon
  2161  	}
  2162  	return ""
  2163  }
  2164  
  2165  var File_data_proto protoreflect.FileDescriptor
  2166  
  2167  var file_data_proto_rawDesc = []byte{
  2168  	0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x74, 0x65,
  2169  	0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67,
  2170  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74,
  2171  	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16,
  2172  	0x70, 0x62, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  2173  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x70, 0x62, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x65,
  2174  	0x2f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x70, 0x62,
  2175  	0x2f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
  2176  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2d, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61,
  2177  	0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
  2178  	0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
  2179  	0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x5c, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73,
  2180  	0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
  2181  	0x42, 0x0a, 0x0a, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20,
  2182  	0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61,
  2183  	0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52,
  2184  	0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  2185  	0x72, 0x64, 0x73, 0x22, 0x32, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62,
  2186  	0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2187  	0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2188  	0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x22, 0x63, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x44,
  2189  	0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65,
  2190  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x44, 0x0a, 0x10, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f,
  2191  	0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
  2192  	0x32, 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
  2193  	0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0f, 0x64, 0x61, 0x73,
  2194  	0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x4e, 0x0a, 0x18,
  2195  	0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62,
  2196  	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70,
  2197  	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c,
  2198  	0x0a, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28,
  2199  	0x09, 0x52, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x22, 0x5d, 0x0a, 0x19,
  2200  	0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62,
  2201  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x61, 0x73,
  2202  	0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x74, 0x61, 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
  2203  	0x0b, 0x32, 0x19, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69,
  2204  	0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0d, 0x64, 0x61,
  2205  	0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x73, 0x22, 0x49, 0x0a, 0x13, 0x47,
  2206  	0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
  2207  	0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
  2208  	0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73, 0x68,
  2209  	0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x73,
  2210  	0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x22, 0xd9, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x44, 0x61,
  2211  	0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
  2212  	0x43, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2213  	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
  2214  	0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63,
  2215  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74,
  2216  	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
  2217  	0x74, 0x61, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x66, 0x61, 0x75,
  2218  	0x6c, 0x74, 0x54, 0x61, 0x62, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73,
  2219  	0x73, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x62, 0x73, 0x18, 0x03,
  2220  	0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x46, 0x61,
  2221  	0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x62, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x68, 0x69, 0x67,
  2222  	0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01,
  2223  	0x28, 0x08, 0x52, 0x0e, 0x68, 0x69, 0x67, 0x68, 0x6c, 0x69, 0x67, 0x68, 0x74, 0x54, 0x6f, 0x64,
  2224  	0x61, 0x79, 0x22, 0x59, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  2225  	0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14,
  2226  	0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73,
  2227  	0x63, 0x6f, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  2228  	0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64,
  2229  	0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x56, 0x0a,
  2230  	0x19, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f,
  2231  	0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x64, 0x61,
  2232  	0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19,
  2233  	0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
  2234  	0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x0a, 0x64, 0x61, 0x73, 0x68, 0x62,
  2235  	0x6f, 0x61, 0x72, 0x64, 0x73, 0x22, 0x5a, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x65, 0x61,
  2236  	0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73,
  2237  	0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70,
  2238  	0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02,
  2239  	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12,
  2240  	0x10, 0x0a, 0x03, 0x74, 0x61, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61,
  2241  	0x62, 0x22, 0xfe, 0x01, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
  2242  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x45, 0x0a, 0x07, 0x68, 0x65, 0x61,
  2243  	0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x74, 0x65, 0x73,
  2244  	0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
  2245  	0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
  2246  	0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
  2247  	0x1a, 0x9f, 0x01, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x62,
  2248  	0x75, 0x69, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x75, 0x69, 0x6c,
  2249  	0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
  2250  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64,
  2251  	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2252  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
  2253  	0x6d, 0x70, 0x52, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65,
  2254  	0x78, 0x74, 0x72, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, 0x72,
  2255  	0x61, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x73,
  2256  	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x74, 0x6c, 0x69, 0x73, 0x74, 0x49,
  2257  	0x64, 0x73, 0x22, 0x57, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65,
  2258  	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01,
  2259  	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64,
  2260  	0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
  2261  	0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x62,
  2262  	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x62, 0x22, 0xd7, 0x02, 0x0a, 0x10,
  2263  	0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
  2264  	0x12, 0x39, 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,
  2265  	0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
  2266  	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2267  	0x65, 0x2e, 0x52, 0x6f, 0x77, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x1a, 0xa0, 0x01, 0x0a, 0x03,
  2268  	0x52, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
  2269  	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x05, 0x63, 0x65, 0x6c, 0x6c, 0x73,
  2270  	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
  2271  	0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77,
  2272  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x52, 0x05,
  2273  	0x63, 0x65, 0x6c, 0x6c, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x18,
  2274  	0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, 0x73, 0x75, 0x65, 0x73, 0x12, 0x2f, 0x0a,
  2275  	0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x74,
  2276  	0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x41, 0x6c,
  2277  	0x65, 0x72, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x1a, 0x65,
  2278  	0x0a, 0x04, 0x43, 0x65, 0x6c, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
  2279  	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x17,
  2280  	0x0a, 0x07, 0x63, 0x65, 0x6c, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
  2281  	0x06, 0x63, 0x65, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61,
  2282  	0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
  2283  	0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x63, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
  2284  	0x04, 0x69, 0x63, 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x08, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63,
  2285  	0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
  2286  	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20,
  2287  	0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x6d, 0x0a, 0x11, 0x44, 0x61, 0x73,
  2288  	0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12,
  2289  	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
  2290  	0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
  2291  	0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x30, 0x0a, 0x14, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f,
  2292  	0x61, 0x72, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
  2293  	0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47,
  2294  	0x72, 0x6f, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x4d, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74,
  2295  	0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75,
  2296  	0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01,
  2297  	0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73,
  2298  	0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61,
  2299  	0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x22, 0x5c, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x54,
  2300  	0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
  2301  	0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0d, 0x74, 0x61, 0x62, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61,
  2302  	0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x65, 0x73,
  2303  	0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62,
  2304  	0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d,
  2305  	0x61, 0x72, 0x69, 0x65, 0x73, 0x22, 0x5c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x53,
  2306  	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a,
  2307  	0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63,
  2308  	0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64,
  2309  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  2310  	0x64, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
  2311  	0x74, 0x61, 0x62, 0x22, 0x55, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d,
  2312  	0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0b,
  2313  	0x74, 0x61, 0x62, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
  2314  	0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69,
  2315  	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0a,
  2316  	0x74, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x5e, 0x0a, 0x1d, 0x4c, 0x69,
  2317  	0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61,
  2318  	0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73,
  2319  	0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70,
  2320  	0x65, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x67,
  2321  	0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x64, 0x61, 0x73, 0x68,
  2322  	0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x74, 0x0a, 0x1e, 0x4c, 0x69,
  2323  	0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61,
  2324  	0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x13,
  2325  	0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
  2326  	0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74,
  2327  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x73, 0x68,
  2328  	0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x12, 0x64, 0x61,
  2329  	0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73,
  2330  	0x22, 0x50, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64,
  2331  	0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14,
  2332  	0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73,
  2333  	0x63, 0x6f, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  2334  	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  2335  	0x72, 0x64, 0x22, 0x6d, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  2336  	0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
  2337  	0x65, 0x12, 0x4e, 0x0a, 0x11, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x73,
  2338  	0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74,
  2339  	0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44,
  2340  	0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52,
  2341  	0x10, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72,
  2342  	0x79, 0x22, 0x9c, 0x04, 0x0a, 0x0a, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
  2343  	0x12, 0x25, 0x0a, 0x0e, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x61,
  2344  	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x61, 0x73, 0x68, 0x62, 0x6f,
  2345  	0x61, 0x72, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x5f, 0x6e,
  2346  	0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x61, 0x62, 0x4e, 0x61,
  2347  	0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74,
  2348  	0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72,
  2349  	0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x65, 0x74,
  2350  	0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73,
  2351  	0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x64, 0x65, 0x74, 0x61,
  2352  	0x69, 0x6c, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
  2353  	0x65, 0x12, 0x48, 0x0a, 0x12, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x74, 0x69,
  2354  	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
  2355  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  2356  	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x52,
  2357  	0x75, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4e, 0x0a, 0x15, 0x6c,
  2358  	0x61, 0x73, 0x74, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73,
  2359  	0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
  2360  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
  2361  	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x13, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61,
  2362  	0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x30, 0x0a, 0x14, 0x6c,
  2363  	0x61, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x75,
  2364  	0x69, 0x6c, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x6c, 0x61, 0x74, 0x65, 0x73,
  2365  	0x74, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x12, 0x4b, 0x0a,
  2366  	0x10, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
  2367  	0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
  2368  	0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72,
  2369  	0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x75,
  2370  	0x72, 0x65, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x54, 0x0a, 0x13, 0x68, 0x65,
  2371  	0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72,
  2372  	0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
  2373  	0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68,
  2374  	0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x12, 0x68, 0x65,
  2375  	0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
  2376  	0x22, 0xa3, 0x01, 0x0a, 0x0f, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x53, 0x75, 0x6d,
  2377  	0x6d, 0x61, 0x72, 0x79, 0x12, 0x4c, 0x0a, 0x11, 0x74, 0x6f, 0x70, 0x5f, 0x66, 0x61, 0x69, 0x6c,
  2378  	0x69, 0x6e, 0x67, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
  2379  	0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
  2380  	0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66,
  2381  	0x6f, 0x52, 0x0f, 0x74, 0x6f, 0x70, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73,
  2382  	0x74, 0x73, 0x12, 0x42, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x5f, 0x73, 0x74,
  2383  	0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x65, 0x73, 0x74,
  2384  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x61, 0x69, 0x6c,
  2385  	0x75, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72,
  2386  	0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0xd9, 0x01, 0x0a, 0x0f, 0x46, 0x61, 0x69, 0x6c, 0x69,
  2387  	0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69,
  2388  	0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2389  	0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a,
  2390  	0x0a, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28,
  2391  	0x05, 0x52, 0x09, 0x66, 0x61, 0x69, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x0e,
  2392  	0x70, 0x61, 0x73, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03,
  2393  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  2394  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
  2395  	0x52, 0x0d, 0x70, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
  2396  	0x41, 0x0a, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
  2397  	0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2398  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
  2399  	0x61, 0x6d, 0x70, 0x52, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
  2400  	0x6d, 0x70, 0x22, 0x3a, 0x0a, 0x0c, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x74, 0x61,
  2401  	0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x69, 0x6e,
  2402  	0x67, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6e,
  2403  	0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x65, 0x73, 0x74, 0x73, 0x22, 0xac,
  2404  	0x01, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x75,
  2405  	0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x46, 0x0a, 0x0f, 0x74, 0x6f, 0x70, 0x5f, 0x66, 0x6c, 0x61,
  2406  	0x6b, 0x79, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e,
  2407  	0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
  2408  	0x2e, 0x46, 0x6c, 0x61, 0x6b, 0x79, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d,
  2409  	0x74, 0x6f, 0x70, 0x46, 0x6c, 0x61, 0x6b, 0x79, 0x54, 0x65, 0x73, 0x74, 0x73, 0x12, 0x4e, 0x0a,
  2410  	0x11, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x74, 0x61,
  2411  	0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67,
  2412  	0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74,
  2413  	0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x10, 0x68, 0x65, 0x61,
  2414  	0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x8a, 0x01,
  2415  	0x0a, 0x0d, 0x46, 0x6c, 0x61, 0x6b, 0x79, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12,
  2416  	0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
  2417  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61,
  2418  	0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18,
  2419  	0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73,
  2420  	0x12, 0x38, 0x0a, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e,
  2421  	0x32, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x73, 0x75, 0x6d, 0x6d,
  2422  	0x61, 0x72, 0x79, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x54, 0x72, 0x65,
  2423  	0x6e, 0x64, 0x52, 0x06, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x10, 0x48,
  2424  	0x65, 0x61, 0x6c, 0x74, 0x68, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
  2425  	0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
  2426  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  2427  	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72,
  2428  	0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
  2429  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  2430  	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12,
  2431  	0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x79, 0x5f, 0x74, 0x65, 0x73,
  2432  	0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x46, 0x6c, 0x61,
  2433  	0x6b, 0x79, 0x54, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61,
  2434  	0x67, 0x65, 0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01,
  2435  	0x28, 0x02, 0x52, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x46, 0x6c, 0x61, 0x6b, 0x69,
  2436  	0x6e, 0x65, 0x73, 0x73, 0x12, 0x2d, 0x0a, 0x12, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73,
  2437  	0x5f, 0x66, 0x6c, 0x61, 0x6b, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02,
  2438  	0x52, 0x11, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6f, 0x75, 0x73, 0x46, 0x6c, 0x61, 0x6b, 0x69, 0x6e,
  2439  	0x65, 0x73, 0x73, 0x22, 0xf1, 0x01, 0x0a, 0x10, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  2440  	0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  2441  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e,
  2442  	0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02,
  2443  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61,
  2444  	0x74, 0x75, 0x73, 0x12, 0x5f, 0x0a, 0x10, 0x74, 0x61, 0x62, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75,
  2445  	0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e,
  2446  	0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e,
  2447  	0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
  2448  	0x2e, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45,
  2449  	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x74, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43,
  2450  	0x6f, 0x75, 0x6e, 0x74, 0x1a, 0x41, 0x0a, 0x13, 0x54, 0x61, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75,
  2451  	0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
  2452  	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
  2453  	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
  2454  	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x32, 0x8f, 0x09, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74,
  2455  	0x47, 0x72, 0x69, 0x64, 0x44, 0x61, 0x74, 0x61, 0x12, 0x63, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74,
  2456  	0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x65, 0x73,
  2457  	0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73,
  2458  	0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
  2459  	0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70,
  2460  	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  2461  	0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a,
  2462  	0x13, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72,
  2463  	0x6f, 0x75, 0x70, 0x73, 0x12, 0x2b, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e,
  2464  	0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62,
  2465  	0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2466  	0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69,
  2467  	0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  2468  	0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
  2469  	0x00, 0x12, 0x6c, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  2470  	0x72, 0x64, 0x54, 0x61, 0x62, 0x73, 0x12, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
  2471  	0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73,
  2472  	0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x54, 0x61, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
  2473  	0x74, 0x1a, 0x2a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69,
  2474  	0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72,
  2475  	0x64, 0x54, 0x61, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
  2476  	0x5d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x12,
  2477  	0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
  2478  	0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x52, 0x65,
  2479  	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64,
  2480  	0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62,
  2481  	0x6f, 0x61, 0x72, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c,
  2482  	0x0a, 0x11, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72,
  2483  	0x6f, 0x75, 0x70, 0x12, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61,
  2484  	0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  2485  	0x72, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a,
  2486  	0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
  2487  	0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x47, 0x72, 0x6f,
  2488  	0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5a, 0x0a, 0x0b,
  2489  	0x4c, 0x69, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x23, 0x2e, 0x74, 0x65,
  2490  	0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69,
  2491  	0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  2492  	0x1a, 0x24, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e,
  2493  	0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65,
  2494  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74,
  2495  	0x52, 0x6f, 0x77, 0x73, 0x12, 0x20, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e,
  2496  	0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77, 0x73, 0x52,
  2497  	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69,
  2498  	0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x77,
  2499  	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x69, 0x0a, 0x10, 0x4c,
  2500  	0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12,
  2501  	0x28, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76,
  2502  	0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69,
  2503  	0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x74, 0x65, 0x73, 0x74,
  2504  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74,
  2505  	0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70,
  2506  	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62,
  2507  	0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x25, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72,
  2508  	0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62,
  2509  	0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26,
  2510  	0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31,
  2511  	0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65,
  2512  	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74,
  2513  	0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69,
  2514  	0x65, 0x73, 0x12, 0x2e, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70,
  2515  	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  2516  	0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
  2517  	0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70,
  2518  	0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61,
  2519  	0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
  2520  	0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x72, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x44, 0x61, 0x73, 0x68,
  2521  	0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2b, 0x2e, 0x74,
  2522  	0x65, 0x73, 0x74, 0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47,
  2523  	0x65, 0x74, 0x44, 0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61,
  2524  	0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74, 0x65, 0x73, 0x74,
  2525  	0x67, 0x72, 0x69, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44,
  2526  	0x61, 0x73, 0x68, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52,
  2527  	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74,
  2528  	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x43, 0x6c,
  2529  	0x6f, 0x75, 0x64, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x74, 0x65, 0x73, 0x74,
  2530  	0x67, 0x72, 0x69, 0x64, 0x2f, 0x70, 0x62, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x62, 0x06,
  2531  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  2532  }
  2533  
  2534  var (
  2535  	file_data_proto_rawDescOnce sync.Once
  2536  	file_data_proto_rawDescData = file_data_proto_rawDesc
  2537  )
  2538  
  2539  func file_data_proto_rawDescGZIP() []byte {
  2540  	file_data_proto_rawDescOnce.Do(func() {
  2541  		file_data_proto_rawDescData = protoimpl.X.CompressGZIP(file_data_proto_rawDescData)
  2542  	})
  2543  	return file_data_proto_rawDescData
  2544  }
  2545  
  2546  var file_data_proto_msgTypes = make([]protoimpl.MessageInfo, 36)
  2547  var file_data_proto_goTypes = []interface{}{
  2548  	(*ListDashboardsRequest)(nil),          // 0: testgrid.api.v1.ListDashboardsRequest
  2549  	(*ListDashboardsResponse)(nil),         // 1: testgrid.api.v1.ListDashboardsResponse
  2550  	(*ListDashboardGroupsRequest)(nil),     // 2: testgrid.api.v1.ListDashboardGroupsRequest
  2551  	(*ListDashboardGroupsResponse)(nil),    // 3: testgrid.api.v1.ListDashboardGroupsResponse
  2552  	(*ListDashboardTabsRequest)(nil),       // 4: testgrid.api.v1.ListDashboardTabsRequest
  2553  	(*ListDashboardTabsResponse)(nil),      // 5: testgrid.api.v1.ListDashboardTabsResponse
  2554  	(*GetDashboardRequest)(nil),            // 6: testgrid.api.v1.GetDashboardRequest
  2555  	(*GetDashboardResponse)(nil),           // 7: testgrid.api.v1.GetDashboardResponse
  2556  	(*GetDashboardGroupRequest)(nil),       // 8: testgrid.api.v1.GetDashboardGroupRequest
  2557  	(*GetDashboardGroupResponse)(nil),      // 9: testgrid.api.v1.GetDashboardGroupResponse
  2558  	(*ListHeadersRequest)(nil),             // 10: testgrid.api.v1.ListHeadersRequest
  2559  	(*ListHeadersResponse)(nil),            // 11: testgrid.api.v1.ListHeadersResponse
  2560  	(*ListRowsRequest)(nil),                // 12: testgrid.api.v1.ListRowsRequest
  2561  	(*ListRowsResponse)(nil),               // 13: testgrid.api.v1.ListRowsResponse
  2562  	(*Resource)(nil),                       // 14: testgrid.api.v1.Resource
  2563  	(*DashboardResource)(nil),              // 15: testgrid.api.v1.DashboardResource
  2564  	(*ListTabSummariesRequest)(nil),        // 16: testgrid.api.v1.ListTabSummariesRequest
  2565  	(*ListTabSummariesResponse)(nil),       // 17: testgrid.api.v1.ListTabSummariesResponse
  2566  	(*GetTabSummaryRequest)(nil),           // 18: testgrid.api.v1.GetTabSummaryRequest
  2567  	(*GetTabSummaryResponse)(nil),          // 19: testgrid.api.v1.GetTabSummaryResponse
  2568  	(*ListDashboardSummariesRequest)(nil),  // 20: testgrid.api.v1.ListDashboardSummariesRequest
  2569  	(*ListDashboardSummariesResponse)(nil), // 21: testgrid.api.v1.ListDashboardSummariesResponse
  2570  	(*GetDashboardSummaryRequest)(nil),     // 22: testgrid.api.v1.GetDashboardSummaryRequest
  2571  	(*GetDashboardSummaryResponse)(nil),    // 23: testgrid.api.v1.GetDashboardSummaryResponse
  2572  	(*TabSummary)(nil),                     // 24: testgrid.api.v1.TabSummary
  2573  	(*FailuresSummary)(nil),                // 25: testgrid.api.v1.FailuresSummary
  2574  	(*FailingTestInfo)(nil),                // 26: testgrid.api.v1.FailingTestInfo
  2575  	(*FailureStats)(nil),                   // 27: testgrid.api.v1.FailureStats
  2576  	(*HealthinessSummary)(nil),             // 28: testgrid.api.v1.HealthinessSummary
  2577  	(*FlakyTestInfo)(nil),                  // 29: testgrid.api.v1.FlakyTestInfo
  2578  	(*HealthinessStats)(nil),               // 30: testgrid.api.v1.HealthinessStats
  2579  	(*DashboardSummary)(nil),               // 31: testgrid.api.v1.DashboardSummary
  2580  	(*ListHeadersResponse_Header)(nil),     // 32: testgrid.api.v1.ListHeadersResponse.Header
  2581  	(*ListRowsResponse_Row)(nil),           // 33: testgrid.api.v1.ListRowsResponse.Row
  2582  	(*ListRowsResponse_Cell)(nil),          // 34: testgrid.api.v1.ListRowsResponse.Cell
  2583  	nil,                                    // 35: testgrid.api.v1.DashboardSummary.TabStatusCountEntry
  2584  	(*config.Notification)(nil),            // 36: testgrid.config.Notification
  2585  	(*timestamppb.Timestamp)(nil),          // 37: google.protobuf.Timestamp
  2586  	(summary.TestInfo_Trend)(0),            // 38: testgrid.summary.TestInfo.Trend
  2587  	(*state.AlertInfo)(nil),                // 39: testgrid.state.AlertInfo
  2588  }
  2589  var file_data_proto_depIdxs = []int32{
  2590  	15, // 0: testgrid.api.v1.ListDashboardsResponse.dashboards:type_name -> testgrid.api.v1.DashboardResource
  2591  	14, // 1: testgrid.api.v1.ListDashboardGroupsResponse.dashboard_groups:type_name -> testgrid.api.v1.Resource
  2592  	14, // 2: testgrid.api.v1.ListDashboardTabsResponse.dashboard_tabs:type_name -> testgrid.api.v1.Resource
  2593  	36, // 3: testgrid.api.v1.GetDashboardResponse.notifications:type_name -> testgrid.config.Notification
  2594  	14, // 4: testgrid.api.v1.GetDashboardGroupResponse.dashboards:type_name -> testgrid.api.v1.Resource
  2595  	32, // 5: testgrid.api.v1.ListHeadersResponse.headers:type_name -> testgrid.api.v1.ListHeadersResponse.Header
  2596  	33, // 6: testgrid.api.v1.ListRowsResponse.rows:type_name -> testgrid.api.v1.ListRowsResponse.Row
  2597  	24, // 7: testgrid.api.v1.ListTabSummariesResponse.tab_summaries:type_name -> testgrid.api.v1.TabSummary
  2598  	24, // 8: testgrid.api.v1.GetTabSummaryResponse.tab_summary:type_name -> testgrid.api.v1.TabSummary
  2599  	31, // 9: testgrid.api.v1.ListDashboardSummariesResponse.dashboard_summaries:type_name -> testgrid.api.v1.DashboardSummary
  2600  	31, // 10: testgrid.api.v1.GetDashboardSummaryResponse.dashboard_summary:type_name -> testgrid.api.v1.DashboardSummary
  2601  	37, // 11: testgrid.api.v1.TabSummary.last_run_timestamp:type_name -> google.protobuf.Timestamp
  2602  	37, // 12: testgrid.api.v1.TabSummary.last_update_timestamp:type_name -> google.protobuf.Timestamp
  2603  	25, // 13: testgrid.api.v1.TabSummary.failures_summary:type_name -> testgrid.api.v1.FailuresSummary
  2604  	28, // 14: testgrid.api.v1.TabSummary.healthiness_summary:type_name -> testgrid.api.v1.HealthinessSummary
  2605  	26, // 15: testgrid.api.v1.FailuresSummary.top_failing_tests:type_name -> testgrid.api.v1.FailingTestInfo
  2606  	27, // 16: testgrid.api.v1.FailuresSummary.failure_stats:type_name -> testgrid.api.v1.FailureStats
  2607  	37, // 17: testgrid.api.v1.FailingTestInfo.pass_timestamp:type_name -> google.protobuf.Timestamp
  2608  	37, // 18: testgrid.api.v1.FailingTestInfo.fail_timestamp:type_name -> google.protobuf.Timestamp
  2609  	29, // 19: testgrid.api.v1.HealthinessSummary.top_flaky_tests:type_name -> testgrid.api.v1.FlakyTestInfo
  2610  	30, // 20: testgrid.api.v1.HealthinessSummary.healthiness_stats:type_name -> testgrid.api.v1.HealthinessStats
  2611  	38, // 21: testgrid.api.v1.FlakyTestInfo.change:type_name -> testgrid.summary.TestInfo.Trend
  2612  	37, // 22: testgrid.api.v1.HealthinessStats.start:type_name -> google.protobuf.Timestamp
  2613  	37, // 23: testgrid.api.v1.HealthinessStats.end:type_name -> google.protobuf.Timestamp
  2614  	35, // 24: testgrid.api.v1.DashboardSummary.tab_status_count:type_name -> testgrid.api.v1.DashboardSummary.TabStatusCountEntry
  2615  	37, // 25: testgrid.api.v1.ListHeadersResponse.Header.started:type_name -> google.protobuf.Timestamp
  2616  	34, // 26: testgrid.api.v1.ListRowsResponse.Row.cells:type_name -> testgrid.api.v1.ListRowsResponse.Cell
  2617  	39, // 27: testgrid.api.v1.ListRowsResponse.Row.alert:type_name -> testgrid.state.AlertInfo
  2618  	0,  // 28: testgrid.api.v1.TestGridData.ListDashboards:input_type -> testgrid.api.v1.ListDashboardsRequest
  2619  	2,  // 29: testgrid.api.v1.TestGridData.ListDashboardGroups:input_type -> testgrid.api.v1.ListDashboardGroupsRequest
  2620  	4,  // 30: testgrid.api.v1.TestGridData.ListDashboardTabs:input_type -> testgrid.api.v1.ListDashboardTabsRequest
  2621  	6,  // 31: testgrid.api.v1.TestGridData.GetDashboard:input_type -> testgrid.api.v1.GetDashboardRequest
  2622  	8,  // 32: testgrid.api.v1.TestGridData.GetDashboardGroup:input_type -> testgrid.api.v1.GetDashboardGroupRequest
  2623  	10, // 33: testgrid.api.v1.TestGridData.ListHeaders:input_type -> testgrid.api.v1.ListHeadersRequest
  2624  	12, // 34: testgrid.api.v1.TestGridData.ListRows:input_type -> testgrid.api.v1.ListRowsRequest
  2625  	16, // 35: testgrid.api.v1.TestGridData.ListTabSummaries:input_type -> testgrid.api.v1.ListTabSummariesRequest
  2626  	18, // 36: testgrid.api.v1.TestGridData.GetTabSummary:input_type -> testgrid.api.v1.GetTabSummaryRequest
  2627  	20, // 37: testgrid.api.v1.TestGridData.ListDashboardSummaries:input_type -> testgrid.api.v1.ListDashboardSummariesRequest
  2628  	22, // 38: testgrid.api.v1.TestGridData.GetDashboardSummary:input_type -> testgrid.api.v1.GetDashboardSummaryRequest
  2629  	1,  // 39: testgrid.api.v1.TestGridData.ListDashboards:output_type -> testgrid.api.v1.ListDashboardsResponse
  2630  	3,  // 40: testgrid.api.v1.TestGridData.ListDashboardGroups:output_type -> testgrid.api.v1.ListDashboardGroupsResponse
  2631  	5,  // 41: testgrid.api.v1.TestGridData.ListDashboardTabs:output_type -> testgrid.api.v1.ListDashboardTabsResponse
  2632  	7,  // 42: testgrid.api.v1.TestGridData.GetDashboard:output_type -> testgrid.api.v1.GetDashboardResponse
  2633  	9,  // 43: testgrid.api.v1.TestGridData.GetDashboardGroup:output_type -> testgrid.api.v1.GetDashboardGroupResponse
  2634  	11, // 44: testgrid.api.v1.TestGridData.ListHeaders:output_type -> testgrid.api.v1.ListHeadersResponse
  2635  	13, // 45: testgrid.api.v1.TestGridData.ListRows:output_type -> testgrid.api.v1.ListRowsResponse
  2636  	17, // 46: testgrid.api.v1.TestGridData.ListTabSummaries:output_type -> testgrid.api.v1.ListTabSummariesResponse
  2637  	19, // 47: testgrid.api.v1.TestGridData.GetTabSummary:output_type -> testgrid.api.v1.GetTabSummaryResponse
  2638  	21, // 48: testgrid.api.v1.TestGridData.ListDashboardSummaries:output_type -> testgrid.api.v1.ListDashboardSummariesResponse
  2639  	23, // 49: testgrid.api.v1.TestGridData.GetDashboardSummary:output_type -> testgrid.api.v1.GetDashboardSummaryResponse
  2640  	39, // [39:50] is the sub-list for method output_type
  2641  	28, // [28:39] is the sub-list for method input_type
  2642  	28, // [28:28] is the sub-list for extension type_name
  2643  	28, // [28:28] is the sub-list for extension extendee
  2644  	0,  // [0:28] is the sub-list for field type_name
  2645  }
  2646  
  2647  func init() { file_data_proto_init() }
  2648  func file_data_proto_init() {
  2649  	if File_data_proto != nil {
  2650  		return
  2651  	}
  2652  	if !protoimpl.UnsafeEnabled {
  2653  		file_data_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  2654  			switch v := v.(*ListDashboardsRequest); i {
  2655  			case 0:
  2656  				return &v.state
  2657  			case 1:
  2658  				return &v.sizeCache
  2659  			case 2:
  2660  				return &v.unknownFields
  2661  			default:
  2662  				return nil
  2663  			}
  2664  		}
  2665  		file_data_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  2666  			switch v := v.(*ListDashboardsResponse); i {
  2667  			case 0:
  2668  				return &v.state
  2669  			case 1:
  2670  				return &v.sizeCache
  2671  			case 2:
  2672  				return &v.unknownFields
  2673  			default:
  2674  				return nil
  2675  			}
  2676  		}
  2677  		file_data_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  2678  			switch v := v.(*ListDashboardGroupsRequest); i {
  2679  			case 0:
  2680  				return &v.state
  2681  			case 1:
  2682  				return &v.sizeCache
  2683  			case 2:
  2684  				return &v.unknownFields
  2685  			default:
  2686  				return nil
  2687  			}
  2688  		}
  2689  		file_data_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  2690  			switch v := v.(*ListDashboardGroupsResponse); i {
  2691  			case 0:
  2692  				return &v.state
  2693  			case 1:
  2694  				return &v.sizeCache
  2695  			case 2:
  2696  				return &v.unknownFields
  2697  			default:
  2698  				return nil
  2699  			}
  2700  		}
  2701  		file_data_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  2702  			switch v := v.(*ListDashboardTabsRequest); i {
  2703  			case 0:
  2704  				return &v.state
  2705  			case 1:
  2706  				return &v.sizeCache
  2707  			case 2:
  2708  				return &v.unknownFields
  2709  			default:
  2710  				return nil
  2711  			}
  2712  		}
  2713  		file_data_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  2714  			switch v := v.(*ListDashboardTabsResponse); i {
  2715  			case 0:
  2716  				return &v.state
  2717  			case 1:
  2718  				return &v.sizeCache
  2719  			case 2:
  2720  				return &v.unknownFields
  2721  			default:
  2722  				return nil
  2723  			}
  2724  		}
  2725  		file_data_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  2726  			switch v := v.(*GetDashboardRequest); i {
  2727  			case 0:
  2728  				return &v.state
  2729  			case 1:
  2730  				return &v.sizeCache
  2731  			case 2:
  2732  				return &v.unknownFields
  2733  			default:
  2734  				return nil
  2735  			}
  2736  		}
  2737  		file_data_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  2738  			switch v := v.(*GetDashboardResponse); i {
  2739  			case 0:
  2740  				return &v.state
  2741  			case 1:
  2742  				return &v.sizeCache
  2743  			case 2:
  2744  				return &v.unknownFields
  2745  			default:
  2746  				return nil
  2747  			}
  2748  		}
  2749  		file_data_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  2750  			switch v := v.(*GetDashboardGroupRequest); i {
  2751  			case 0:
  2752  				return &v.state
  2753  			case 1:
  2754  				return &v.sizeCache
  2755  			case 2:
  2756  				return &v.unknownFields
  2757  			default:
  2758  				return nil
  2759  			}
  2760  		}
  2761  		file_data_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  2762  			switch v := v.(*GetDashboardGroupResponse); i {
  2763  			case 0:
  2764  				return &v.state
  2765  			case 1:
  2766  				return &v.sizeCache
  2767  			case 2:
  2768  				return &v.unknownFields
  2769  			default:
  2770  				return nil
  2771  			}
  2772  		}
  2773  		file_data_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  2774  			switch v := v.(*ListHeadersRequest); i {
  2775  			case 0:
  2776  				return &v.state
  2777  			case 1:
  2778  				return &v.sizeCache
  2779  			case 2:
  2780  				return &v.unknownFields
  2781  			default:
  2782  				return nil
  2783  			}
  2784  		}
  2785  		file_data_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  2786  			switch v := v.(*ListHeadersResponse); i {
  2787  			case 0:
  2788  				return &v.state
  2789  			case 1:
  2790  				return &v.sizeCache
  2791  			case 2:
  2792  				return &v.unknownFields
  2793  			default:
  2794  				return nil
  2795  			}
  2796  		}
  2797  		file_data_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  2798  			switch v := v.(*ListRowsRequest); i {
  2799  			case 0:
  2800  				return &v.state
  2801  			case 1:
  2802  				return &v.sizeCache
  2803  			case 2:
  2804  				return &v.unknownFields
  2805  			default:
  2806  				return nil
  2807  			}
  2808  		}
  2809  		file_data_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  2810  			switch v := v.(*ListRowsResponse); i {
  2811  			case 0:
  2812  				return &v.state
  2813  			case 1:
  2814  				return &v.sizeCache
  2815  			case 2:
  2816  				return &v.unknownFields
  2817  			default:
  2818  				return nil
  2819  			}
  2820  		}
  2821  		file_data_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  2822  			switch v := v.(*Resource); i {
  2823  			case 0:
  2824  				return &v.state
  2825  			case 1:
  2826  				return &v.sizeCache
  2827  			case 2:
  2828  				return &v.unknownFields
  2829  			default:
  2830  				return nil
  2831  			}
  2832  		}
  2833  		file_data_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  2834  			switch v := v.(*DashboardResource); i {
  2835  			case 0:
  2836  				return &v.state
  2837  			case 1:
  2838  				return &v.sizeCache
  2839  			case 2:
  2840  				return &v.unknownFields
  2841  			default:
  2842  				return nil
  2843  			}
  2844  		}
  2845  		file_data_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  2846  			switch v := v.(*ListTabSummariesRequest); i {
  2847  			case 0:
  2848  				return &v.state
  2849  			case 1:
  2850  				return &v.sizeCache
  2851  			case 2:
  2852  				return &v.unknownFields
  2853  			default:
  2854  				return nil
  2855  			}
  2856  		}
  2857  		file_data_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  2858  			switch v := v.(*ListTabSummariesResponse); i {
  2859  			case 0:
  2860  				return &v.state
  2861  			case 1:
  2862  				return &v.sizeCache
  2863  			case 2:
  2864  				return &v.unknownFields
  2865  			default:
  2866  				return nil
  2867  			}
  2868  		}
  2869  		file_data_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  2870  			switch v := v.(*GetTabSummaryRequest); i {
  2871  			case 0:
  2872  				return &v.state
  2873  			case 1:
  2874  				return &v.sizeCache
  2875  			case 2:
  2876  				return &v.unknownFields
  2877  			default:
  2878  				return nil
  2879  			}
  2880  		}
  2881  		file_data_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  2882  			switch v := v.(*GetTabSummaryResponse); i {
  2883  			case 0:
  2884  				return &v.state
  2885  			case 1:
  2886  				return &v.sizeCache
  2887  			case 2:
  2888  				return &v.unknownFields
  2889  			default:
  2890  				return nil
  2891  			}
  2892  		}
  2893  		file_data_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  2894  			switch v := v.(*ListDashboardSummariesRequest); i {
  2895  			case 0:
  2896  				return &v.state
  2897  			case 1:
  2898  				return &v.sizeCache
  2899  			case 2:
  2900  				return &v.unknownFields
  2901  			default:
  2902  				return nil
  2903  			}
  2904  		}
  2905  		file_data_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  2906  			switch v := v.(*ListDashboardSummariesResponse); i {
  2907  			case 0:
  2908  				return &v.state
  2909  			case 1:
  2910  				return &v.sizeCache
  2911  			case 2:
  2912  				return &v.unknownFields
  2913  			default:
  2914  				return nil
  2915  			}
  2916  		}
  2917  		file_data_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
  2918  			switch v := v.(*GetDashboardSummaryRequest); i {
  2919  			case 0:
  2920  				return &v.state
  2921  			case 1:
  2922  				return &v.sizeCache
  2923  			case 2:
  2924  				return &v.unknownFields
  2925  			default:
  2926  				return nil
  2927  			}
  2928  		}
  2929  		file_data_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
  2930  			switch v := v.(*GetDashboardSummaryResponse); i {
  2931  			case 0:
  2932  				return &v.state
  2933  			case 1:
  2934  				return &v.sizeCache
  2935  			case 2:
  2936  				return &v.unknownFields
  2937  			default:
  2938  				return nil
  2939  			}
  2940  		}
  2941  		file_data_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
  2942  			switch v := v.(*TabSummary); i {
  2943  			case 0:
  2944  				return &v.state
  2945  			case 1:
  2946  				return &v.sizeCache
  2947  			case 2:
  2948  				return &v.unknownFields
  2949  			default:
  2950  				return nil
  2951  			}
  2952  		}
  2953  		file_data_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
  2954  			switch v := v.(*FailuresSummary); i {
  2955  			case 0:
  2956  				return &v.state
  2957  			case 1:
  2958  				return &v.sizeCache
  2959  			case 2:
  2960  				return &v.unknownFields
  2961  			default:
  2962  				return nil
  2963  			}
  2964  		}
  2965  		file_data_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
  2966  			switch v := v.(*FailingTestInfo); i {
  2967  			case 0:
  2968  				return &v.state
  2969  			case 1:
  2970  				return &v.sizeCache
  2971  			case 2:
  2972  				return &v.unknownFields
  2973  			default:
  2974  				return nil
  2975  			}
  2976  		}
  2977  		file_data_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
  2978  			switch v := v.(*FailureStats); i {
  2979  			case 0:
  2980  				return &v.state
  2981  			case 1:
  2982  				return &v.sizeCache
  2983  			case 2:
  2984  				return &v.unknownFields
  2985  			default:
  2986  				return nil
  2987  			}
  2988  		}
  2989  		file_data_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
  2990  			switch v := v.(*HealthinessSummary); i {
  2991  			case 0:
  2992  				return &v.state
  2993  			case 1:
  2994  				return &v.sizeCache
  2995  			case 2:
  2996  				return &v.unknownFields
  2997  			default:
  2998  				return nil
  2999  			}
  3000  		}
  3001  		file_data_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
  3002  			switch v := v.(*FlakyTestInfo); i {
  3003  			case 0:
  3004  				return &v.state
  3005  			case 1:
  3006  				return &v.sizeCache
  3007  			case 2:
  3008  				return &v.unknownFields
  3009  			default:
  3010  				return nil
  3011  			}
  3012  		}
  3013  		file_data_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
  3014  			switch v := v.(*HealthinessStats); i {
  3015  			case 0:
  3016  				return &v.state
  3017  			case 1:
  3018  				return &v.sizeCache
  3019  			case 2:
  3020  				return &v.unknownFields
  3021  			default:
  3022  				return nil
  3023  			}
  3024  		}
  3025  		file_data_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
  3026  			switch v := v.(*DashboardSummary); i {
  3027  			case 0:
  3028  				return &v.state
  3029  			case 1:
  3030  				return &v.sizeCache
  3031  			case 2:
  3032  				return &v.unknownFields
  3033  			default:
  3034  				return nil
  3035  			}
  3036  		}
  3037  		file_data_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
  3038  			switch v := v.(*ListHeadersResponse_Header); i {
  3039  			case 0:
  3040  				return &v.state
  3041  			case 1:
  3042  				return &v.sizeCache
  3043  			case 2:
  3044  				return &v.unknownFields
  3045  			default:
  3046  				return nil
  3047  			}
  3048  		}
  3049  		file_data_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
  3050  			switch v := v.(*ListRowsResponse_Row); i {
  3051  			case 0:
  3052  				return &v.state
  3053  			case 1:
  3054  				return &v.sizeCache
  3055  			case 2:
  3056  				return &v.unknownFields
  3057  			default:
  3058  				return nil
  3059  			}
  3060  		}
  3061  		file_data_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
  3062  			switch v := v.(*ListRowsResponse_Cell); i {
  3063  			case 0:
  3064  				return &v.state
  3065  			case 1:
  3066  				return &v.sizeCache
  3067  			case 2:
  3068  				return &v.unknownFields
  3069  			default:
  3070  				return nil
  3071  			}
  3072  		}
  3073  	}
  3074  	type x struct{}
  3075  	out := protoimpl.TypeBuilder{
  3076  		File: protoimpl.DescBuilder{
  3077  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  3078  			RawDescriptor: file_data_proto_rawDesc,
  3079  			NumEnums:      0,
  3080  			NumMessages:   36,
  3081  			NumExtensions: 0,
  3082  			NumServices:   1,
  3083  		},
  3084  		GoTypes:           file_data_proto_goTypes,
  3085  		DependencyIndexes: file_data_proto_depIdxs,
  3086  		MessageInfos:      file_data_proto_msgTypes,
  3087  	}.Build()
  3088  	File_data_proto = out.File
  3089  	file_data_proto_rawDesc = nil
  3090  	file_data_proto_goTypes = nil
  3091  	file_data_proto_depIdxs = nil
  3092  }
  3093  
  3094  // Reference imports to suppress errors if they are not otherwise used.
  3095  var _ context.Context
  3096  var _ grpc.ClientConnInterface
  3097  
  3098  // This is a compile-time assertion to ensure that this generated file
  3099  // is compatible with the grpc package it is being compiled against.
  3100  const _ = grpc.SupportPackageIsVersion6
  3101  
  3102  // TestGridDataClient is the client API for TestGridData service.
  3103  //
  3104  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  3105  type TestGridDataClient interface {
  3106  	// GET /dashboards
  3107  	// Lists dashboard names
  3108  	ListDashboards(ctx context.Context, in *ListDashboardsRequest, opts ...grpc.CallOption) (*ListDashboardsResponse, error)
  3109  	// GET /dashboard-groups
  3110  	// Lists the dashboard group names
  3111  	ListDashboardGroups(ctx context.Context, in *ListDashboardGroupsRequest, opts ...grpc.CallOption) (*ListDashboardGroupsResponse, error)
  3112  	// GET /dashboards/{dashboard}/tabs
  3113  	// Lists the dashboard tab names
  3114  	ListDashboardTabs(ctx context.Context, in *ListDashboardTabsRequest, opts ...grpc.CallOption) (*ListDashboardTabsResponse, error)
  3115  	// GET /dashboards/{dashboard}
  3116  	// Returns a Dashboard config's metadata
  3117  	// Excludes subtabs, accessed through the /tabs list method instead
  3118  	GetDashboard(ctx context.Context, in *GetDashboardRequest, opts ...grpc.CallOption) (*GetDashboardResponse, error)
  3119  	// GET /dashboard-groups/{dashboard-group}
  3120  	// Lists the dashboard names in that group
  3121  	GetDashboardGroup(ctx context.Context, in *GetDashboardGroupRequest, opts ...grpc.CallOption) (*GetDashboardGroupResponse, error)
  3122  	// GET /dashboards/{dashboard}/tabs/{tab}/headers
  3123  	// Returns the headers for grid results
  3124  	ListHeaders(ctx context.Context, in *ListHeadersRequest, opts ...grpc.CallOption) (*ListHeadersResponse, error)
  3125  	// GET /dashboards/{dashboard}/tabs/{tab}/rows
  3126  	// Returns information on grid rows, and data within those rows
  3127  	ListRows(ctx context.Context, in *ListRowsRequest, opts ...grpc.CallOption) (*ListRowsResponse, error)
  3128  	// GET /dashboards/{dashboard}/tab-summaries
  3129  	// Returns the list of tab summaries for dashboard.
  3130  	ListTabSummaries(ctx context.Context, in *ListTabSummariesRequest, opts ...grpc.CallOption) (*ListTabSummariesResponse, error)
  3131  	// GET /dashboards/{dashboard}/tab-summaries/{tab}
  3132  	GetTabSummary(ctx context.Context, in *GetTabSummaryRequest, opts ...grpc.CallOption) (*GetTabSummaryResponse, error)
  3133  	// GET /dashboard-groups/{dashboard-group}/dashboard-summaries
  3134  	ListDashboardSummaries(ctx context.Context, in *ListDashboardSummariesRequest, opts ...grpc.CallOption) (*ListDashboardSummariesResponse, error)
  3135  	// GET /dashboards/{dashboard}/summary
  3136  	GetDashboardSummary(ctx context.Context, in *GetDashboardSummaryRequest, opts ...grpc.CallOption) (*GetDashboardSummaryResponse, error)
  3137  }
  3138  
  3139  type testGridDataClient struct {
  3140  	cc grpc.ClientConnInterface
  3141  }
  3142  
  3143  func NewTestGridDataClient(cc grpc.ClientConnInterface) TestGridDataClient {
  3144  	return &testGridDataClient{cc}
  3145  }
  3146  
  3147  func (c *testGridDataClient) ListDashboards(ctx context.Context, in *ListDashboardsRequest, opts ...grpc.CallOption) (*ListDashboardsResponse, error) {
  3148  	out := new(ListDashboardsResponse)
  3149  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListDashboards", in, out, opts...)
  3150  	if err != nil {
  3151  		return nil, err
  3152  	}
  3153  	return out, nil
  3154  }
  3155  
  3156  func (c *testGridDataClient) ListDashboardGroups(ctx context.Context, in *ListDashboardGroupsRequest, opts ...grpc.CallOption) (*ListDashboardGroupsResponse, error) {
  3157  	out := new(ListDashboardGroupsResponse)
  3158  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListDashboardGroups", in, out, opts...)
  3159  	if err != nil {
  3160  		return nil, err
  3161  	}
  3162  	return out, nil
  3163  }
  3164  
  3165  func (c *testGridDataClient) ListDashboardTabs(ctx context.Context, in *ListDashboardTabsRequest, opts ...grpc.CallOption) (*ListDashboardTabsResponse, error) {
  3166  	out := new(ListDashboardTabsResponse)
  3167  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListDashboardTabs", in, out, opts...)
  3168  	if err != nil {
  3169  		return nil, err
  3170  	}
  3171  	return out, nil
  3172  }
  3173  
  3174  func (c *testGridDataClient) GetDashboard(ctx context.Context, in *GetDashboardRequest, opts ...grpc.CallOption) (*GetDashboardResponse, error) {
  3175  	out := new(GetDashboardResponse)
  3176  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/GetDashboard", in, out, opts...)
  3177  	if err != nil {
  3178  		return nil, err
  3179  	}
  3180  	return out, nil
  3181  }
  3182  
  3183  func (c *testGridDataClient) GetDashboardGroup(ctx context.Context, in *GetDashboardGroupRequest, opts ...grpc.CallOption) (*GetDashboardGroupResponse, error) {
  3184  	out := new(GetDashboardGroupResponse)
  3185  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/GetDashboardGroup", in, out, opts...)
  3186  	if err != nil {
  3187  		return nil, err
  3188  	}
  3189  	return out, nil
  3190  }
  3191  
  3192  func (c *testGridDataClient) ListHeaders(ctx context.Context, in *ListHeadersRequest, opts ...grpc.CallOption) (*ListHeadersResponse, error) {
  3193  	out := new(ListHeadersResponse)
  3194  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListHeaders", in, out, opts...)
  3195  	if err != nil {
  3196  		return nil, err
  3197  	}
  3198  	return out, nil
  3199  }
  3200  
  3201  func (c *testGridDataClient) ListRows(ctx context.Context, in *ListRowsRequest, opts ...grpc.CallOption) (*ListRowsResponse, error) {
  3202  	out := new(ListRowsResponse)
  3203  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListRows", in, out, opts...)
  3204  	if err != nil {
  3205  		return nil, err
  3206  	}
  3207  	return out, nil
  3208  }
  3209  
  3210  func (c *testGridDataClient) ListTabSummaries(ctx context.Context, in *ListTabSummariesRequest, opts ...grpc.CallOption) (*ListTabSummariesResponse, error) {
  3211  	out := new(ListTabSummariesResponse)
  3212  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListTabSummaries", in, out, opts...)
  3213  	if err != nil {
  3214  		return nil, err
  3215  	}
  3216  	return out, nil
  3217  }
  3218  
  3219  func (c *testGridDataClient) GetTabSummary(ctx context.Context, in *GetTabSummaryRequest, opts ...grpc.CallOption) (*GetTabSummaryResponse, error) {
  3220  	out := new(GetTabSummaryResponse)
  3221  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/GetTabSummary", in, out, opts...)
  3222  	if err != nil {
  3223  		return nil, err
  3224  	}
  3225  	return out, nil
  3226  }
  3227  
  3228  func (c *testGridDataClient) ListDashboardSummaries(ctx context.Context, in *ListDashboardSummariesRequest, opts ...grpc.CallOption) (*ListDashboardSummariesResponse, error) {
  3229  	out := new(ListDashboardSummariesResponse)
  3230  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/ListDashboardSummaries", in, out, opts...)
  3231  	if err != nil {
  3232  		return nil, err
  3233  	}
  3234  	return out, nil
  3235  }
  3236  
  3237  func (c *testGridDataClient) GetDashboardSummary(ctx context.Context, in *GetDashboardSummaryRequest, opts ...grpc.CallOption) (*GetDashboardSummaryResponse, error) {
  3238  	out := new(GetDashboardSummaryResponse)
  3239  	err := c.cc.Invoke(ctx, "/testgrid.api.v1.TestGridData/GetDashboardSummary", in, out, opts...)
  3240  	if err != nil {
  3241  		return nil, err
  3242  	}
  3243  	return out, nil
  3244  }
  3245  
  3246  // TestGridDataServer is the server API for TestGridData service.
  3247  type TestGridDataServer interface {
  3248  	// GET /dashboards
  3249  	// Lists dashboard names
  3250  	ListDashboards(context.Context, *ListDashboardsRequest) (*ListDashboardsResponse, error)
  3251  	// GET /dashboard-groups
  3252  	// Lists the dashboard group names
  3253  	ListDashboardGroups(context.Context, *ListDashboardGroupsRequest) (*ListDashboardGroupsResponse, error)
  3254  	// GET /dashboards/{dashboard}/tabs
  3255  	// Lists the dashboard tab names
  3256  	ListDashboardTabs(context.Context, *ListDashboardTabsRequest) (*ListDashboardTabsResponse, error)
  3257  	// GET /dashboards/{dashboard}
  3258  	// Returns a Dashboard config's metadata
  3259  	// Excludes subtabs, accessed through the /tabs list method instead
  3260  	GetDashboard(context.Context, *GetDashboardRequest) (*GetDashboardResponse, error)
  3261  	// GET /dashboard-groups/{dashboard-group}
  3262  	// Lists the dashboard names in that group
  3263  	GetDashboardGroup(context.Context, *GetDashboardGroupRequest) (*GetDashboardGroupResponse, error)
  3264  	// GET /dashboards/{dashboard}/tabs/{tab}/headers
  3265  	// Returns the headers for grid results
  3266  	ListHeaders(context.Context, *ListHeadersRequest) (*ListHeadersResponse, error)
  3267  	// GET /dashboards/{dashboard}/tabs/{tab}/rows
  3268  	// Returns information on grid rows, and data within those rows
  3269  	ListRows(context.Context, *ListRowsRequest) (*ListRowsResponse, error)
  3270  	// GET /dashboards/{dashboard}/tab-summaries
  3271  	// Returns the list of tab summaries for dashboard.
  3272  	ListTabSummaries(context.Context, *ListTabSummariesRequest) (*ListTabSummariesResponse, error)
  3273  	// GET /dashboards/{dashboard}/tab-summaries/{tab}
  3274  	GetTabSummary(context.Context, *GetTabSummaryRequest) (*GetTabSummaryResponse, error)
  3275  	// GET /dashboard-groups/{dashboard-group}/dashboard-summaries
  3276  	ListDashboardSummaries(context.Context, *ListDashboardSummariesRequest) (*ListDashboardSummariesResponse, error)
  3277  	// GET /dashboards/{dashboard}/summary
  3278  	GetDashboardSummary(context.Context, *GetDashboardSummaryRequest) (*GetDashboardSummaryResponse, error)
  3279  }
  3280  
  3281  // UnimplementedTestGridDataServer can be embedded to have forward compatible implementations.
  3282  type UnimplementedTestGridDataServer struct {
  3283  }
  3284  
  3285  func (*UnimplementedTestGridDataServer) ListDashboards(context.Context, *ListDashboardsRequest) (*ListDashboardsResponse, error) {
  3286  	return nil, status.Errorf(codes.Unimplemented, "method ListDashboards not implemented")
  3287  }
  3288  func (*UnimplementedTestGridDataServer) ListDashboardGroups(context.Context, *ListDashboardGroupsRequest) (*ListDashboardGroupsResponse, error) {
  3289  	return nil, status.Errorf(codes.Unimplemented, "method ListDashboardGroups not implemented")
  3290  }
  3291  func (*UnimplementedTestGridDataServer) ListDashboardTabs(context.Context, *ListDashboardTabsRequest) (*ListDashboardTabsResponse, error) {
  3292  	return nil, status.Errorf(codes.Unimplemented, "method ListDashboardTabs not implemented")
  3293  }
  3294  func (*UnimplementedTestGridDataServer) GetDashboard(context.Context, *GetDashboardRequest) (*GetDashboardResponse, error) {
  3295  	return nil, status.Errorf(codes.Unimplemented, "method GetDashboard not implemented")
  3296  }
  3297  func (*UnimplementedTestGridDataServer) GetDashboardGroup(context.Context, *GetDashboardGroupRequest) (*GetDashboardGroupResponse, error) {
  3298  	return nil, status.Errorf(codes.Unimplemented, "method GetDashboardGroup not implemented")
  3299  }
  3300  func (*UnimplementedTestGridDataServer) ListHeaders(context.Context, *ListHeadersRequest) (*ListHeadersResponse, error) {
  3301  	return nil, status.Errorf(codes.Unimplemented, "method ListHeaders not implemented")
  3302  }
  3303  func (*UnimplementedTestGridDataServer) ListRows(context.Context, *ListRowsRequest) (*ListRowsResponse, error) {
  3304  	return nil, status.Errorf(codes.Unimplemented, "method ListRows not implemented")
  3305  }
  3306  func (*UnimplementedTestGridDataServer) ListTabSummaries(context.Context, *ListTabSummariesRequest) (*ListTabSummariesResponse, error) {
  3307  	return nil, status.Errorf(codes.Unimplemented, "method ListTabSummaries not implemented")
  3308  }
  3309  func (*UnimplementedTestGridDataServer) GetTabSummary(context.Context, *GetTabSummaryRequest) (*GetTabSummaryResponse, error) {
  3310  	return nil, status.Errorf(codes.Unimplemented, "method GetTabSummary not implemented")
  3311  }
  3312  func (*UnimplementedTestGridDataServer) ListDashboardSummaries(context.Context, *ListDashboardSummariesRequest) (*ListDashboardSummariesResponse, error) {
  3313  	return nil, status.Errorf(codes.Unimplemented, "method ListDashboardSummaries not implemented")
  3314  }
  3315  func (*UnimplementedTestGridDataServer) GetDashboardSummary(context.Context, *GetDashboardSummaryRequest) (*GetDashboardSummaryResponse, error) {
  3316  	return nil, status.Errorf(codes.Unimplemented, "method GetDashboardSummary not implemented")
  3317  }
  3318  
  3319  func RegisterTestGridDataServer(s *grpc.Server, srv TestGridDataServer) {
  3320  	s.RegisterService(&_TestGridData_serviceDesc, srv)
  3321  }
  3322  
  3323  func _TestGridData_ListDashboards_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3324  	in := new(ListDashboardsRequest)
  3325  	if err := dec(in); err != nil {
  3326  		return nil, err
  3327  	}
  3328  	if interceptor == nil {
  3329  		return srv.(TestGridDataServer).ListDashboards(ctx, in)
  3330  	}
  3331  	info := &grpc.UnaryServerInfo{
  3332  		Server:     srv,
  3333  		FullMethod: "/testgrid.api.v1.TestGridData/ListDashboards",
  3334  	}
  3335  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3336  		return srv.(TestGridDataServer).ListDashboards(ctx, req.(*ListDashboardsRequest))
  3337  	}
  3338  	return interceptor(ctx, in, info, handler)
  3339  }
  3340  
  3341  func _TestGridData_ListDashboardGroups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3342  	in := new(ListDashboardGroupsRequest)
  3343  	if err := dec(in); err != nil {
  3344  		return nil, err
  3345  	}
  3346  	if interceptor == nil {
  3347  		return srv.(TestGridDataServer).ListDashboardGroups(ctx, in)
  3348  	}
  3349  	info := &grpc.UnaryServerInfo{
  3350  		Server:     srv,
  3351  		FullMethod: "/testgrid.api.v1.TestGridData/ListDashboardGroups",
  3352  	}
  3353  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3354  		return srv.(TestGridDataServer).ListDashboardGroups(ctx, req.(*ListDashboardGroupsRequest))
  3355  	}
  3356  	return interceptor(ctx, in, info, handler)
  3357  }
  3358  
  3359  func _TestGridData_ListDashboardTabs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3360  	in := new(ListDashboardTabsRequest)
  3361  	if err := dec(in); err != nil {
  3362  		return nil, err
  3363  	}
  3364  	if interceptor == nil {
  3365  		return srv.(TestGridDataServer).ListDashboardTabs(ctx, in)
  3366  	}
  3367  	info := &grpc.UnaryServerInfo{
  3368  		Server:     srv,
  3369  		FullMethod: "/testgrid.api.v1.TestGridData/ListDashboardTabs",
  3370  	}
  3371  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3372  		return srv.(TestGridDataServer).ListDashboardTabs(ctx, req.(*ListDashboardTabsRequest))
  3373  	}
  3374  	return interceptor(ctx, in, info, handler)
  3375  }
  3376  
  3377  func _TestGridData_GetDashboard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3378  	in := new(GetDashboardRequest)
  3379  	if err := dec(in); err != nil {
  3380  		return nil, err
  3381  	}
  3382  	if interceptor == nil {
  3383  		return srv.(TestGridDataServer).GetDashboard(ctx, in)
  3384  	}
  3385  	info := &grpc.UnaryServerInfo{
  3386  		Server:     srv,
  3387  		FullMethod: "/testgrid.api.v1.TestGridData/GetDashboard",
  3388  	}
  3389  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3390  		return srv.(TestGridDataServer).GetDashboard(ctx, req.(*GetDashboardRequest))
  3391  	}
  3392  	return interceptor(ctx, in, info, handler)
  3393  }
  3394  
  3395  func _TestGridData_GetDashboardGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3396  	in := new(GetDashboardGroupRequest)
  3397  	if err := dec(in); err != nil {
  3398  		return nil, err
  3399  	}
  3400  	if interceptor == nil {
  3401  		return srv.(TestGridDataServer).GetDashboardGroup(ctx, in)
  3402  	}
  3403  	info := &grpc.UnaryServerInfo{
  3404  		Server:     srv,
  3405  		FullMethod: "/testgrid.api.v1.TestGridData/GetDashboardGroup",
  3406  	}
  3407  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3408  		return srv.(TestGridDataServer).GetDashboardGroup(ctx, req.(*GetDashboardGroupRequest))
  3409  	}
  3410  	return interceptor(ctx, in, info, handler)
  3411  }
  3412  
  3413  func _TestGridData_ListHeaders_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3414  	in := new(ListHeadersRequest)
  3415  	if err := dec(in); err != nil {
  3416  		return nil, err
  3417  	}
  3418  	if interceptor == nil {
  3419  		return srv.(TestGridDataServer).ListHeaders(ctx, in)
  3420  	}
  3421  	info := &grpc.UnaryServerInfo{
  3422  		Server:     srv,
  3423  		FullMethod: "/testgrid.api.v1.TestGridData/ListHeaders",
  3424  	}
  3425  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3426  		return srv.(TestGridDataServer).ListHeaders(ctx, req.(*ListHeadersRequest))
  3427  	}
  3428  	return interceptor(ctx, in, info, handler)
  3429  }
  3430  
  3431  func _TestGridData_ListRows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3432  	in := new(ListRowsRequest)
  3433  	if err := dec(in); err != nil {
  3434  		return nil, err
  3435  	}
  3436  	if interceptor == nil {
  3437  		return srv.(TestGridDataServer).ListRows(ctx, in)
  3438  	}
  3439  	info := &grpc.UnaryServerInfo{
  3440  		Server:     srv,
  3441  		FullMethod: "/testgrid.api.v1.TestGridData/ListRows",
  3442  	}
  3443  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3444  		return srv.(TestGridDataServer).ListRows(ctx, req.(*ListRowsRequest))
  3445  	}
  3446  	return interceptor(ctx, in, info, handler)
  3447  }
  3448  
  3449  func _TestGridData_ListTabSummaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3450  	in := new(ListTabSummariesRequest)
  3451  	if err := dec(in); err != nil {
  3452  		return nil, err
  3453  	}
  3454  	if interceptor == nil {
  3455  		return srv.(TestGridDataServer).ListTabSummaries(ctx, in)
  3456  	}
  3457  	info := &grpc.UnaryServerInfo{
  3458  		Server:     srv,
  3459  		FullMethod: "/testgrid.api.v1.TestGridData/ListTabSummaries",
  3460  	}
  3461  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3462  		return srv.(TestGridDataServer).ListTabSummaries(ctx, req.(*ListTabSummariesRequest))
  3463  	}
  3464  	return interceptor(ctx, in, info, handler)
  3465  }
  3466  
  3467  func _TestGridData_GetTabSummary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3468  	in := new(GetTabSummaryRequest)
  3469  	if err := dec(in); err != nil {
  3470  		return nil, err
  3471  	}
  3472  	if interceptor == nil {
  3473  		return srv.(TestGridDataServer).GetTabSummary(ctx, in)
  3474  	}
  3475  	info := &grpc.UnaryServerInfo{
  3476  		Server:     srv,
  3477  		FullMethod: "/testgrid.api.v1.TestGridData/GetTabSummary",
  3478  	}
  3479  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3480  		return srv.(TestGridDataServer).GetTabSummary(ctx, req.(*GetTabSummaryRequest))
  3481  	}
  3482  	return interceptor(ctx, in, info, handler)
  3483  }
  3484  
  3485  func _TestGridData_ListDashboardSummaries_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3486  	in := new(ListDashboardSummariesRequest)
  3487  	if err := dec(in); err != nil {
  3488  		return nil, err
  3489  	}
  3490  	if interceptor == nil {
  3491  		return srv.(TestGridDataServer).ListDashboardSummaries(ctx, in)
  3492  	}
  3493  	info := &grpc.UnaryServerInfo{
  3494  		Server:     srv,
  3495  		FullMethod: "/testgrid.api.v1.TestGridData/ListDashboardSummaries",
  3496  	}
  3497  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3498  		return srv.(TestGridDataServer).ListDashboardSummaries(ctx, req.(*ListDashboardSummariesRequest))
  3499  	}
  3500  	return interceptor(ctx, in, info, handler)
  3501  }
  3502  
  3503  func _TestGridData_GetDashboardSummary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  3504  	in := new(GetDashboardSummaryRequest)
  3505  	if err := dec(in); err != nil {
  3506  		return nil, err
  3507  	}
  3508  	if interceptor == nil {
  3509  		return srv.(TestGridDataServer).GetDashboardSummary(ctx, in)
  3510  	}
  3511  	info := &grpc.UnaryServerInfo{
  3512  		Server:     srv,
  3513  		FullMethod: "/testgrid.api.v1.TestGridData/GetDashboardSummary",
  3514  	}
  3515  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  3516  		return srv.(TestGridDataServer).GetDashboardSummary(ctx, req.(*GetDashboardSummaryRequest))
  3517  	}
  3518  	return interceptor(ctx, in, info, handler)
  3519  }
  3520  
  3521  var _TestGridData_serviceDesc = grpc.ServiceDesc{
  3522  	ServiceName: "testgrid.api.v1.TestGridData",
  3523  	HandlerType: (*TestGridDataServer)(nil),
  3524  	Methods: []grpc.MethodDesc{
  3525  		{
  3526  			MethodName: "ListDashboards",
  3527  			Handler:    _TestGridData_ListDashboards_Handler,
  3528  		},
  3529  		{
  3530  			MethodName: "ListDashboardGroups",
  3531  			Handler:    _TestGridData_ListDashboardGroups_Handler,
  3532  		},
  3533  		{
  3534  			MethodName: "ListDashboardTabs",
  3535  			Handler:    _TestGridData_ListDashboardTabs_Handler,
  3536  		},
  3537  		{
  3538  			MethodName: "GetDashboard",
  3539  			Handler:    _TestGridData_GetDashboard_Handler,
  3540  		},
  3541  		{
  3542  			MethodName: "GetDashboardGroup",
  3543  			Handler:    _TestGridData_GetDashboardGroup_Handler,
  3544  		},
  3545  		{
  3546  			MethodName: "ListHeaders",
  3547  			Handler:    _TestGridData_ListHeaders_Handler,
  3548  		},
  3549  		{
  3550  			MethodName: "ListRows",
  3551  			Handler:    _TestGridData_ListRows_Handler,
  3552  		},
  3553  		{
  3554  			MethodName: "ListTabSummaries",
  3555  			Handler:    _TestGridData_ListTabSummaries_Handler,
  3556  		},
  3557  		{
  3558  			MethodName: "GetTabSummary",
  3559  			Handler:    _TestGridData_GetTabSummary_Handler,
  3560  		},
  3561  		{
  3562  			MethodName: "ListDashboardSummaries",
  3563  			Handler:    _TestGridData_ListDashboardSummaries_Handler,
  3564  		},
  3565  		{
  3566  			MethodName: "GetDashboardSummary",
  3567  			Handler:    _TestGridData_GetDashboardSummary_Handler,
  3568  		},
  3569  	},
  3570  	Streams:  []grpc.StreamDesc{},
  3571  	Metadata: "data.proto",
  3572  }