[task scheduler] Add job-search-sk
Also fix parts of job search.
Change-Id: Ie7faed76b2af68ddc0895b56340ba96ba5177a85
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/326946
Commit-Queue: Eric Boren <borenet@google.com>
Reviewed-by: Weston Tracey <westont@google.com>
diff --git a/task_scheduler/go/db/db.go b/task_scheduler/go/db/db.go
index 8926f64..0bb0c3a 100644
--- a/task_scheduler/go/db/db.go
+++ b/task_scheduler/go/db/db.go
@@ -204,13 +204,16 @@
// any value for that field. If either of TimeStart or TimeEnd is not provided,
// the search defaults to the last 24 hours.
type JobSearchParams struct {
- types.RepoState
- BuildbucketBuildId *int64 `json:"buildbucket_build_id,string,omitempty"`
- IsForce *bool `json:"is_force,omitempty"`
- Name string `json:"name"`
- Status types.JobStatus `json:"status"`
- TimeStart time.Time `json:"time_start"`
- TimeEnd time.Time `json:"time_end"`
+ BuildbucketBuildID *int64 `json:"buildbucket_build_id,string,omitempty"`
+ IsForce *bool `json:"is_force,omitempty"`
+ Issue *string `json:"issue,omitempty"`
+ Name *string `json:"name"`
+ Patchset *string `json:"patchset,omitempty"`
+ Repo *string `json:"repo,omitempty"`
+ Revision *string `json:"revision,omitempty"`
+ Status *types.JobStatus `json:"status"`
+ TimeStart *time.Time `json:"time_start"`
+ TimeEnd *time.Time `json:"time_end"`
}
// searchBoolEqual compares the two bools and returns true if the first is
@@ -232,55 +235,64 @@
}
// searchStringEqual compares the two strings and returns true if the first is
-// either not provided or equal to the second.
-func searchStringEqual(search, test string) bool {
- if search == "" {
+// either not provided, equal to the second, or a regular expression which
+// matches the second.
+func searchStringEqual(search *string, test string) bool {
+ if search == nil {
return true
}
- return search == test
+ if *search == test {
+ return true
+ }
+ re, err := regexp.Compile(*search)
+ if err == nil && re.MatchString(test) {
+ return true
+ }
+ return false
}
// matchJobs returns Jobs which match the given search parameters.
-func matchJobs(jobs []*types.Job, p *JobSearchParams) ([]*types.Job, error) {
- // We accept a regex for the job name.
- nameRe, err := regexp.Compile(p.Name)
- if err != nil {
- return nil, err
- }
-
+func matchJobs(jobs []*types.Job, p *JobSearchParams) []*types.Job {
rv := []*types.Job{}
for _, j := range jobs {
// Compare all attributes which are provided.
if true &&
- !p.TimeStart.After(j.Created) &&
- j.Created.Before(p.TimeEnd) &&
+ (p.TimeStart == nil || !(*p.TimeStart).After(j.Created)) &&
+ (p.TimeEnd == nil || j.Created.Before(*p.TimeEnd)) &&
searchStringEqual(p.Issue, j.Issue) &&
+ searchStringEqual(p.Name, j.Name) &&
searchStringEqual(p.Patchset, j.Patchset) &&
- searchStringEqual(p.Server, j.Server) &&
searchStringEqual(p.Repo, j.Repo) &&
searchStringEqual(p.Revision, j.Revision) &&
- nameRe.MatchString(j.Name) &&
- searchStringEqual(string(p.Status), string(j.Status)) &&
+ searchStringEqual((*string)(p.Status), string(j.Status)) &&
searchBoolEqual(p.IsForce, j.IsForce) &&
- searchInt64Equal(p.BuildbucketBuildId, j.BuildbucketBuildId) {
+ searchInt64Equal(p.BuildbucketBuildID, j.BuildbucketBuildId) {
rv = append(rv, j)
}
}
- return rv, nil
+ return rv
}
// SearchJobs returns Jobs in the given time range which match the given search
// parameters.
func SearchJobs(db JobReader, p *JobSearchParams) ([]*types.Job, error) {
- if util.TimeIsZero(p.TimeStart) || util.TimeIsZero(p.TimeEnd) {
- p.TimeEnd = time.Now()
- p.TimeStart = p.TimeEnd.Add(-24 * time.Hour)
+ if p.TimeEnd == nil || util.TimeIsZero(*p.TimeEnd) {
+ end := time.Now()
+ p.TimeEnd = &end
}
- jobs, err := db.GetJobsFromDateRange(p.TimeStart, p.TimeEnd, p.Repo)
+ if p.TimeStart == nil || util.TimeIsZero(*p.TimeStart) {
+ start := (*p.TimeEnd).Add(-24 * time.Hour)
+ p.TimeStart = &start
+ }
+ repo := ""
+ if p.Repo != nil {
+ repo = *p.Repo
+ }
+ jobs, err := db.GetJobsFromDateRange(*p.TimeStart, *p.TimeEnd, repo)
if err != nil {
return nil, err
}
- return matchJobs(jobs, p)
+ return matchJobs(jobs, p), nil
}
// matchTasks returns Tasks which match the given search parameters.
@@ -290,15 +302,14 @@
// Compare all attributes which are provided.
if true &&
!p.TimeStart.After(t.Created) &&
- t.Created.Before(p.TimeEnd) &&
+ t.Created.Before(*p.TimeEnd) &&
searchInt64Equal(p.Attempt, int64(t.Attempt)) &&
searchStringEqual(p.Issue, t.Issue) &&
searchStringEqual(p.Patchset, t.Patchset) &&
- searchStringEqual(p.Server, t.Server) &&
searchStringEqual(p.Repo, t.Repo) &&
searchStringEqual(p.Revision, t.Revision) &&
searchStringEqual(p.Name, t.Name) &&
- searchStringEqual(string(p.Status), string(t.Status)) &&
+ searchStringEqual((*string)(p.Status), string(t.Status)) &&
searchStringEqual(p.ForcedJobId, t.ForcedJobId) {
rv = append(rv, t)
}
@@ -311,21 +322,34 @@
// any value for that field. If either of TimeStart or TimeEnd is not provided,
// the search defaults to the last 24 hours.
type TaskSearchParams struct {
- Attempt *int64 `json:"attempt,string,omitempty"`
- Status types.TaskStatus `json:"status"`
- types.TaskKey
- TimeStart time.Time `json:"time_start"`
- TimeEnd time.Time `json:"time_end"`
+ Attempt *int64 `json:"attempt,string,omitempty"`
+ Status *types.TaskStatus `json:"status"`
+ ForcedJobId *string `json:"forcedJobId,omitempty"`
+ Issue *string `json:"issue,omitempty"`
+ Name *string `json:"name"`
+ Patchset *string `json:"patchset,omitempty"`
+ Repo *string `json:"repo,omitempty"`
+ Revision *string `json:"revision,omitempty"`
+ TimeStart *time.Time `json:"time_start"`
+ TimeEnd *time.Time `json:"time_end"`
}
// SearchTasks returns Tasks in the given time range which match the given search
// parameters.
func SearchTasks(db TaskReader, p *TaskSearchParams) ([]*types.Task, error) {
- if util.TimeIsZero(p.TimeStart) || util.TimeIsZero(p.TimeEnd) {
- p.TimeEnd = time.Now()
- p.TimeStart = p.TimeEnd.Add(-24 * time.Hour)
+ if p.TimeEnd == nil || util.TimeIsZero(*p.TimeEnd) {
+ end := time.Now()
+ p.TimeEnd = &end
}
- tasks, err := db.GetTasksFromDateRange(p.TimeStart, p.TimeEnd, p.Repo)
+ if p.TimeStart == nil || util.TimeIsZero(*p.TimeStart) {
+ start := (*p.TimeEnd).Add(-24 * time.Hour)
+ p.TimeStart = &start
+ }
+ repo := ""
+ if p.Repo != nil {
+ repo = *p.Repo
+ }
+ tasks, err := db.GetTasksFromDateRange(*p.TimeStart, *p.TimeEnd, repo)
if err != nil {
return nil, err
}
diff --git a/task_scheduler/go/db/search_test.go b/task_scheduler/go/db/search_test.go
index 03c914d..852d4c5 100644
--- a/task_scheduler/go/db/search_test.go
+++ b/task_scheduler/go/db/search_test.go
@@ -20,99 +20,103 @@
j.Name = "Build-Win-Clang-x86_64-Debug-Vulkan"
emptyParams := func() *JobSearchParams {
+ start := now.Add(-1 * time.Hour)
+ end := now.Add(1 * time.Hour)
return &JobSearchParams{
- TimeStart: now.Add(-1 * time.Hour),
- TimeEnd: now.Add(1 * time.Hour),
+ TimeStart: &start,
+ TimeEnd: &end,
}
}
- isForce := new(bool)
- *isForce = j.IsForce
+ stringPtr := func(s string) *string {
+ rv := new(string)
+ *rv = s
+ return rv
+ }
+ intPtr := func(i int64) *int64 {
+ rv := new(int64)
+ *rv = i
+ return rv
+ }
+ boolPtr := func(b bool) *bool {
+ rv := new(bool)
+ *rv = b
+ return rv
+ }
+ timePtr := func(ts time.Time) *time.Time {
+ rv := new(time.Time)
+ *rv = ts
+ return rv
+ }
matchParams := func() *JobSearchParams {
return &JobSearchParams{
- RepoState: types.RepoState{
- Patch: types.Patch{
- Issue: j.Issue,
- Patchset: j.Patchset,
- Server: j.Server,
- },
- Repo: j.Repo,
- Revision: j.Revision,
- },
- BuildbucketBuildId: &j.BuildbucketBuildId,
- IsForce: isForce,
- Name: j.Name,
- Status: j.Status,
- TimeStart: now.Add(-1 * time.Hour),
- TimeEnd: now.Add(1 * time.Hour),
+ Issue: stringPtr(j.Issue),
+ Patchset: stringPtr(j.Patchset),
+ Repo: stringPtr(j.Repo),
+ Revision: stringPtr(j.Revision),
+ BuildbucketBuildID: intPtr(j.BuildbucketBuildId),
+ IsForce: boolPtr(j.IsForce),
+ Name: stringPtr(j.Name),
+ Status: (*types.JobStatus)(stringPtr(string(j.Status))),
+ TimeStart: timePtr(now.Add(-1 * time.Hour)),
+ TimeEnd: timePtr(now.Add(1 * time.Hour)),
}
}
checkMatches := func(p *JobSearchParams) {
- jobs, err := matchJobs([]*types.Job{j}, p)
- assert.NoError(t, err)
+ jobs := matchJobs([]*types.Job{j}, p)
assert.Equal(t, 1, len(jobs))
assertdeep.Equal(t, j, jobs[0])
}
checkNoMatch := func(p *JobSearchParams) {
- jobs, err := matchJobs([]*types.Job{j}, p)
- assert.NoError(t, err)
+ jobs := matchJobs([]*types.Job{j}, p)
assert.Equal(t, 0, len(jobs))
}
- // Sanity check: both emptyParams and matchParams should match.
+ // Both emptyParams and matchParams should match.
checkMatches(matchParams())
checkMatches(emptyParams())
- checkNoMatch(&JobSearchParams{})
+ checkMatches(&JobSearchParams{})
// Check each individual parameter.
// Issue
p := emptyParams()
- p.Issue = j.Issue
+ p.Issue = stringPtr(j.Issue)
checkMatches(p)
p = matchParams()
- p.Issue = "bogus"
+ p.Issue = stringPtr("bogus")
checkNoMatch(p)
// Patchset
p = emptyParams()
- p.Patchset = j.Patchset
+ p.Patchset = stringPtr(j.Patchset)
checkMatches(p)
p = matchParams()
- p.Patchset = "bogus"
- checkNoMatch(p)
-
- // Server
- p = emptyParams()
- p.Server = j.Server
- checkMatches(p)
- p = matchParams()
- p.Server = "bogus"
+ p.Patchset = stringPtr("bogus")
checkNoMatch(p)
// Repo
p = emptyParams()
- p.Repo = j.Repo
+ p.Repo = stringPtr(j.Repo)
checkMatches(p)
p = matchParams()
- p.Repo = "bogus"
+ p.Repo = stringPtr("bogus")
checkNoMatch(p)
// Revision
p = emptyParams()
- p.Revision = j.Revision
+ p.Revision = stringPtr(j.Revision)
checkMatches(p)
p = matchParams()
- p.Revision = "bogus"
+ p.Revision = stringPtr("bogus")
checkNoMatch(p)
// BuildbucketBuildId
p = emptyParams()
- p.BuildbucketBuildId = &j.BuildbucketBuildId
+ p.BuildbucketBuildID = intPtr(j.BuildbucketBuildId)
checkMatches(p)
p = matchParams()
- v := int64(999991)
- p.BuildbucketBuildId = &v
+ p.BuildbucketBuildID = intPtr(999991)
checkNoMatch(p)
// IsForce
@@ -128,46 +132,45 @@
// Name
p = emptyParams()
- p.Name = j.Name
+ p.Name = stringPtr(j.Name)
checkMatches(p)
- p.Name = j.Name[:3] + ".*"
+ p.Name = stringPtr(j.Name[:3] + ".*")
checkMatches(p)
p = matchParams()
- p.Name = "bogus"
+ p.Name = stringPtr("bogus")
checkNoMatch(p)
p = matchParams()
- p.Name = "^T.*"
+ p.Name = stringPtr("^T.*")
checkNoMatch(p)
- p.Name = "((("
- _, err := matchJobs([]*types.Job{}, p)
- assert.EqualError(t, err, "error parsing regexp: missing closing ): `(((`")
+ p.Name = stringPtr("(((")
+ checkNoMatch(p)
// Status
p = emptyParams()
- p.Status = j.Status
+ p.Status = (*types.JobStatus)(stringPtr(string(j.Status)))
checkMatches(p)
p = matchParams()
- p.Status = "bogus"
+ p.Status = (*types.JobStatus)(stringPtr("bogus"))
checkNoMatch(p)
// Check time periods.
// Inclusive TimeStart.
p = matchParams()
- p.TimeStart = j.Created
+ p.TimeStart = timePtr(j.Created)
checkMatches(p)
// j.Created just before p.TimeStart.
- p.TimeStart = j.Created.Add(time.Millisecond)
+ p.TimeStart = timePtr(j.Created.Add(time.Millisecond))
checkNoMatch(p)
// Non-inclusive TimeEnd.
p = matchParams()
- p.TimeEnd = j.Created
+ p.TimeEnd = timePtr(j.Created)
checkNoMatch(p)
// j.Created Just before TimeEnd.
- p.TimeEnd = j.Created.Add(time.Millisecond)
+ p.TimeEnd = timePtr(j.Created.Add(time.Millisecond))
checkMatches(p)
}
diff --git a/task_scheduler/go/rpc/rpc.go b/task_scheduler/go/rpc/rpc.go
index 123afc6..e3d0d61 100644
--- a/task_scheduler/go/rpc/rpc.go
+++ b/task_scheduler/go/rpc/rpc.go
@@ -181,41 +181,49 @@
if _, err := s.GetViewer(ctx); err != nil {
return nil, err
}
- bbid := int64(req.BuildbucketBuildId)
- status := types.JobStatus("")
- switch req.Status {
- case JobStatus_JOB_STATUS_IN_PROGRESS:
- status = types.JOB_STATUS_IN_PROGRESS
- case JobStatus_JOB_STATUS_SUCCESS:
- status = types.JOB_STATUS_IN_PROGRESS
- case JobStatus_JOB_STATUS_FAILURE:
- status = types.JOB_STATUS_FAILURE
- case JobStatus_JOB_STATUS_MISHAP:
- status = types.JOB_STATUS_MISHAP
- case JobStatus_JOB_STATUS_CANCELED:
- status = types.JOB_STATUS_CANCELED
+ params := &db.JobSearchParams{}
+ if req.HasBuildbucketBuildId {
+ params.BuildbucketBuildID = intPtr(req.BuildbucketBuildId)
}
- params := &db.JobSearchParams{
- BuildbucketBuildId: &bbid,
- IsForce: &req.IsForce,
- Name: req.Name,
- Status: status,
- TimeStart: req.TimeStart.AsTime(),
- TimeEnd: req.TimeEnd.AsTime(),
+ if req.HasIsForce {
+ params.IsForce = boolPtr(req.IsForce)
}
- if req.RepoState != nil {
- params.RepoState = types.RepoState{
- Repo: req.RepoState.Repo,
- Revision: req.RepoState.Revision,
+ if req.HasIssue {
+ params.Issue = stringPtr(req.Issue)
+ }
+ if req.HasName {
+ params.Name = stringPtr(req.Name)
+ }
+ if req.HasPatchset {
+ params.Patchset = stringPtr(req.Patchset)
+ }
+ if req.HasRepo {
+ params.Repo = stringPtr(req.Repo)
+ }
+ if req.HasRevision {
+ params.Revision = stringPtr(req.Revision)
+ }
+ if req.HasStatus {
+ status := types.JobStatus("")
+ switch req.Status {
+ case JobStatus_JOB_STATUS_IN_PROGRESS:
+ status = types.JOB_STATUS_IN_PROGRESS
+ case JobStatus_JOB_STATUS_SUCCESS:
+ status = types.JOB_STATUS_IN_PROGRESS
+ case JobStatus_JOB_STATUS_FAILURE:
+ status = types.JOB_STATUS_FAILURE
+ case JobStatus_JOB_STATUS_MISHAP:
+ status = types.JOB_STATUS_MISHAP
+ case JobStatus_JOB_STATUS_CANCELED:
+ status = types.JOB_STATUS_CANCELED
}
- if req.RepoState.Patch != nil {
- params.RepoState.Patch = types.Patch{
- Issue: req.RepoState.Patch.Issue,
- PatchRepo: req.RepoState.Patch.PatchRepo,
- Patchset: req.RepoState.Patch.Patchset,
- Server: req.RepoState.Patch.Server,
- }
- }
+ params.Status = (*types.JobStatus)(stringPtr(string(status)))
+ }
+ if req.HasTimeEnd {
+ params.TimeEnd = timePtr(req.TimeEnd.AsTime())
+ }
+ if req.HasTimeStart {
+ params.TimeStart = timePtr(req.TimeStart.AsTime())
}
results, err := db.SearchJobs(s.db, params)
if err != nil {
@@ -281,46 +289,48 @@
if _, err := s.GetViewer(ctx); err != nil {
return nil, err
}
- attempt := int64(req.Attempt)
- status := types.TaskStatus("")
- switch req.Status {
- case TaskStatus_TASK_STATUS_PENDING:
- status = types.TASK_STATUS_PENDING
- case TaskStatus_TASK_STATUS_RUNNING:
- status = types.TASK_STATUS_RUNNING
- case TaskStatus_TASK_STATUS_SUCCESS:
- status = types.TASK_STATUS_SUCCESS
- case TaskStatus_TASK_STATUS_FAILURE:
- status = types.TASK_STATUS_FAILURE
- case TaskStatus_TASK_STATUS_MISHAP:
- status = types.TASK_STATUS_MISHAP
+ params := &db.TaskSearchParams{}
+ if req.HasAttempt {
+ params.Attempt = intPtr(int64(req.Attempt))
}
- params := &db.TaskSearchParams{
- Attempt: &attempt, // TODO(borenet): nil vs empty?
- Status: status,
- TimeStart: req.TimeStart.AsTime(),
- TimeEnd: req.TimeEnd.AsTime(),
+ if req.HasIssue {
+ params.Issue = stringPtr(req.Issue)
}
- if req.TaskKey != nil {
- params.TaskKey = types.TaskKey{
- Name: req.TaskKey.Name,
- ForcedJobId: req.TaskKey.ForcedJobId,
+ if req.HasName {
+ params.Name = stringPtr(req.Name)
+ }
+ if req.HasPatchset {
+ params.Patchset = stringPtr(req.Patchset)
+ }
+ if req.HasRepo {
+ params.Repo = stringPtr(req.Repo)
+ }
+ if req.HasRevision {
+ params.Revision = stringPtr(req.Revision)
+ }
+ if req.HasStatus {
+ status := types.TaskStatus("")
+ switch req.Status {
+ case TaskStatus_TASK_STATUS_PENDING:
+ status = types.TASK_STATUS_PENDING
+ case TaskStatus_TASK_STATUS_RUNNING:
+ status = types.TASK_STATUS_RUNNING
+ case TaskStatus_TASK_STATUS_SUCCESS:
+ status = types.TASK_STATUS_SUCCESS
+ case TaskStatus_TASK_STATUS_FAILURE:
+ status = types.TASK_STATUS_FAILURE
+ case TaskStatus_TASK_STATUS_MISHAP:
+ status = types.TASK_STATUS_MISHAP
}
- if req.TaskKey.RepoState != nil {
- params.RepoState = types.RepoState{
- Repo: req.TaskKey.RepoState.Repo,
- Revision: req.TaskKey.RepoState.Revision,
- }
- if req.TaskKey.RepoState.Patch != nil {
- params.RepoState.Patch = types.Patch{
- Issue: req.TaskKey.RepoState.Patch.Issue,
- PatchRepo: req.TaskKey.RepoState.Patch.PatchRepo,
- Patchset: req.TaskKey.RepoState.Patch.Patchset,
- Server: req.TaskKey.RepoState.Patch.Server,
- }
- }
- }
+ params.Status = (*types.TaskStatus)(stringPtr(string(status)))
}
+ if req.HasTimeEnd {
+ params.TimeEnd = timePtr(req.TimeEnd.AsTime())
+ }
+ if req.HasTimeStart {
+ params.TimeStart = timePtr(req.TimeStart.AsTime())
+ }
+
results, err := db.SearchTasks(s.db, params)
if err != nil {
sklog.Error(err)
@@ -579,4 +589,25 @@
return rv, nil
}
+func stringPtr(s string) *string {
+ rv := new(string)
+ *rv = s
+ return rv
+}
+func intPtr(i int64) *int64 {
+ rv := new(int64)
+ *rv = i
+ return rv
+}
+func boolPtr(b bool) *bool {
+ rv := new(bool)
+ *rv = b
+ return rv
+}
+func timePtr(ts time.Time) *time.Time {
+ rv := new(time.Time)
+ *rv = ts
+ return rv
+}
+
var _ TaskSchedulerService = &taskSchedulerServiceImpl{}
diff --git a/task_scheduler/go/rpc/rpc.pb.go b/task_scheduler/go/rpc/rpc.pb.go
index 0341e0d..e7efcfc 100644
--- a/task_scheduler/go/rpc/rpc.pb.go
+++ b/task_scheduler/go/rpc/rpc.pb.go
@@ -506,13 +506,26 @@
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- RepoState *RepoState `protobuf:"bytes,1,opt,name=repo_state,json=repoState,proto3" json:"repo_state,omitempty"`
- BuildbucketBuildId int64 `protobuf:"varint,2,opt,name=buildbucket_build_id,json=buildbucketBuildId,proto3" json:"buildbucket_build_id,omitempty"` // TODO: Make optional.
- IsForce bool `protobuf:"varint,3,opt,name=is_force,json=isForce,proto3" json:"is_force,omitempty"` // TODO: Make optional.
- Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
- Status JobStatus `protobuf:"varint,5,opt,name=status,proto3,enum=task_scheduler.rpc.JobStatus" json:"status,omitempty"` // TODO: Make optional.
- TimeStart *timestamp.Timestamp `protobuf:"bytes,6,opt,name=time_start,json=timeStart,proto3" json:"time_start,omitempty"`
- TimeEnd *timestamp.Timestamp `protobuf:"bytes,7,opt,name=time_end,json=timeEnd,proto3" json:"time_end,omitempty"`
+ BuildbucketBuildId int64 `protobuf:"varint,1,opt,name=buildbucket_build_id,json=buildbucketBuildId,proto3" json:"buildbucket_build_id,omitempty"`
+ HasBuildbucketBuildId bool `protobuf:"varint,2,opt,name=has_buildbucket_build_id,json=hasBuildbucketBuildId,proto3" json:"has_buildbucket_build_id,omitempty"`
+ IsForce bool `protobuf:"varint,3,opt,name=is_force,json=isForce,proto3" json:"is_force,omitempty"`
+ HasIsForce bool `protobuf:"varint,4,opt,name=has_is_force,json=hasIsForce,proto3" json:"has_is_force,omitempty"`
+ Issue string `protobuf:"bytes,5,opt,name=issue,proto3" json:"issue,omitempty"`
+ HasIssue bool `protobuf:"varint,6,opt,name=has_issue,json=hasIssue,proto3" json:"has_issue,omitempty"`
+ Name string `protobuf:"bytes,7,opt,name=name,proto3" json:"name,omitempty"`
+ HasName bool `protobuf:"varint,8,opt,name=has_name,json=hasName,proto3" json:"has_name,omitempty"`
+ Patchset string `protobuf:"bytes,9,opt,name=patchset,proto3" json:"patchset,omitempty"`
+ HasPatchset bool `protobuf:"varint,10,opt,name=has_patchset,json=hasPatchset,proto3" json:"has_patchset,omitempty"`
+ Repo string `protobuf:"bytes,11,opt,name=repo,proto3" json:"repo,omitempty"`
+ HasRepo bool `protobuf:"varint,12,opt,name=has_repo,json=hasRepo,proto3" json:"has_repo,omitempty"`
+ Revision string `protobuf:"bytes,13,opt,name=revision,proto3" json:"revision,omitempty"`
+ HasRevision bool `protobuf:"varint,14,opt,name=has_revision,json=hasRevision,proto3" json:"has_revision,omitempty"`
+ Status JobStatus `protobuf:"varint,15,opt,name=status,proto3,enum=task_scheduler.rpc.JobStatus" json:"status,omitempty"`
+ HasStatus bool `protobuf:"varint,16,opt,name=has_status,json=hasStatus,proto3" json:"has_status,omitempty"`
+ TimeStart *timestamp.Timestamp `protobuf:"bytes,17,opt,name=time_start,json=timeStart,proto3" json:"time_start,omitempty"`
+ HasTimeStart bool `protobuf:"varint,18,opt,name=has_time_start,json=hasTimeStart,proto3" json:"has_time_start,omitempty"`
+ TimeEnd *timestamp.Timestamp `protobuf:"bytes,19,opt,name=time_end,json=timeEnd,proto3" json:"time_end,omitempty"`
+ HasTimeEnd bool `protobuf:"varint,20,opt,name=has_time_end,json=hasTimeEnd,proto3" json:"has_time_end,omitempty"`
}
func (x *SearchJobsRequest) Reset() {
@@ -547,13 +560,6 @@
return file_rpc_proto_rawDescGZIP(), []int{7}
}
-func (x *SearchJobsRequest) GetRepoState() *RepoState {
- if x != nil {
- return x.RepoState
- }
- return nil
-}
-
func (x *SearchJobsRequest) GetBuildbucketBuildId() int64 {
if x != nil {
return x.BuildbucketBuildId
@@ -561,6 +567,13 @@
return 0
}
+func (x *SearchJobsRequest) GetHasBuildbucketBuildId() bool {
+ if x != nil {
+ return x.HasBuildbucketBuildId
+ }
+ return false
+}
+
func (x *SearchJobsRequest) GetIsForce() bool {
if x != nil {
return x.IsForce
@@ -568,6 +581,27 @@
return false
}
+func (x *SearchJobsRequest) GetHasIsForce() bool {
+ if x != nil {
+ return x.HasIsForce
+ }
+ return false
+}
+
+func (x *SearchJobsRequest) GetIssue() string {
+ if x != nil {
+ return x.Issue
+ }
+ return ""
+}
+
+func (x *SearchJobsRequest) GetHasIssue() bool {
+ if x != nil {
+ return x.HasIssue
+ }
+ return false
+}
+
func (x *SearchJobsRequest) GetName() string {
if x != nil {
return x.Name
@@ -575,6 +609,55 @@
return ""
}
+func (x *SearchJobsRequest) GetHasName() bool {
+ if x != nil {
+ return x.HasName
+ }
+ return false
+}
+
+func (x *SearchJobsRequest) GetPatchset() string {
+ if x != nil {
+ return x.Patchset
+ }
+ return ""
+}
+
+func (x *SearchJobsRequest) GetHasPatchset() bool {
+ if x != nil {
+ return x.HasPatchset
+ }
+ return false
+}
+
+func (x *SearchJobsRequest) GetRepo() string {
+ if x != nil {
+ return x.Repo
+ }
+ return ""
+}
+
+func (x *SearchJobsRequest) GetHasRepo() bool {
+ if x != nil {
+ return x.HasRepo
+ }
+ return false
+}
+
+func (x *SearchJobsRequest) GetRevision() string {
+ if x != nil {
+ return x.Revision
+ }
+ return ""
+}
+
+func (x *SearchJobsRequest) GetHasRevision() bool {
+ if x != nil {
+ return x.HasRevision
+ }
+ return false
+}
+
func (x *SearchJobsRequest) GetStatus() JobStatus {
if x != nil {
return x.Status
@@ -582,6 +665,13 @@
return JobStatus_JOB_STATUS_IN_PROGRESS
}
+func (x *SearchJobsRequest) GetHasStatus() bool {
+ if x != nil {
+ return x.HasStatus
+ }
+ return false
+}
+
func (x *SearchJobsRequest) GetTimeStart() *timestamp.Timestamp {
if x != nil {
return x.TimeStart
@@ -589,6 +679,13 @@
return nil
}
+func (x *SearchJobsRequest) GetHasTimeStart() bool {
+ if x != nil {
+ return x.HasTimeStart
+ }
+ return false
+}
+
func (x *SearchJobsRequest) GetTimeEnd() *timestamp.Timestamp {
if x != nil {
return x.TimeEnd
@@ -596,6 +693,13 @@
return nil
}
+func (x *SearchJobsRequest) GetHasTimeEnd() bool {
+ if x != nil {
+ return x.HasTimeEnd
+ }
+ return false
+}
+
// SearchJobsRequest is a response returned by SearchJobs.
type SearchJobsResponse struct {
state protoimpl.MessageState
@@ -758,11 +862,24 @@
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- TaskKey *TaskKey `protobuf:"bytes,1,opt,name=task_key,json=taskKey,proto3" json:"task_key,omitempty"`
- Attempt int32 `protobuf:"varint,2,opt,name=attempt,proto3" json:"attempt,omitempty"` // TODO: Make optional.
- Status TaskStatus `protobuf:"varint,3,opt,name=status,proto3,enum=task_scheduler.rpc.TaskStatus" json:"status,omitempty"`
- TimeStart *timestamp.Timestamp `protobuf:"bytes,6,opt,name=time_start,json=timeStart,proto3" json:"time_start,omitempty"`
- TimeEnd *timestamp.Timestamp `protobuf:"bytes,7,opt,name=time_end,json=timeEnd,proto3" json:"time_end,omitempty"`
+ Attempt int32 `protobuf:"varint,1,opt,name=attempt,proto3" json:"attempt,omitempty"`
+ HasAttempt bool `protobuf:"varint,2,opt,name=has_attempt,json=hasAttempt,proto3" json:"has_attempt,omitempty"`
+ Issue string `protobuf:"bytes,3,opt,name=issue,proto3" json:"issue,omitempty"`
+ HasIssue bool `protobuf:"varint,4,opt,name=has_issue,json=hasIssue,proto3" json:"has_issue,omitempty"`
+ Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
+ HasName bool `protobuf:"varint,6,opt,name=has_name,json=hasName,proto3" json:"has_name,omitempty"`
+ Patchset string `protobuf:"bytes,7,opt,name=patchset,proto3" json:"patchset,omitempty"`
+ HasPatchset bool `protobuf:"varint,8,opt,name=has_patchset,json=hasPatchset,proto3" json:"has_patchset,omitempty"`
+ Repo string `protobuf:"bytes,9,opt,name=repo,proto3" json:"repo,omitempty"`
+ HasRepo bool `protobuf:"varint,10,opt,name=has_repo,json=hasRepo,proto3" json:"has_repo,omitempty"`
+ Revision string `protobuf:"bytes,11,opt,name=revision,proto3" json:"revision,omitempty"`
+ HasRevision bool `protobuf:"varint,12,opt,name=has_revision,json=hasRevision,proto3" json:"has_revision,omitempty"`
+ Status TaskStatus `protobuf:"varint,13,opt,name=status,proto3,enum=task_scheduler.rpc.TaskStatus" json:"status,omitempty"`
+ HasStatus bool `protobuf:"varint,14,opt,name=has_status,json=hasStatus,proto3" json:"has_status,omitempty"`
+ TimeStart *timestamp.Timestamp `protobuf:"bytes,15,opt,name=time_start,json=timeStart,proto3" json:"time_start,omitempty"`
+ HasTimeStart bool `protobuf:"varint,16,opt,name=has_time_start,json=hasTimeStart,proto3" json:"has_time_start,omitempty"`
+ TimeEnd *timestamp.Timestamp `protobuf:"bytes,17,opt,name=time_end,json=timeEnd,proto3" json:"time_end,omitempty"`
+ HasTimeEnd bool `protobuf:"varint,18,opt,name=has_time_end,json=hasTimeEnd,proto3" json:"has_time_end,omitempty"`
}
func (x *SearchTasksRequest) Reset() {
@@ -797,13 +914,6 @@
return file_rpc_proto_rawDescGZIP(), []int{11}
}
-func (x *SearchTasksRequest) GetTaskKey() *TaskKey {
- if x != nil {
- return x.TaskKey
- }
- return nil
-}
-
func (x *SearchTasksRequest) GetAttempt() int32 {
if x != nil {
return x.Attempt
@@ -811,6 +921,83 @@
return 0
}
+func (x *SearchTasksRequest) GetHasAttempt() bool {
+ if x != nil {
+ return x.HasAttempt
+ }
+ return false
+}
+
+func (x *SearchTasksRequest) GetIssue() string {
+ if x != nil {
+ return x.Issue
+ }
+ return ""
+}
+
+func (x *SearchTasksRequest) GetHasIssue() bool {
+ if x != nil {
+ return x.HasIssue
+ }
+ return false
+}
+
+func (x *SearchTasksRequest) GetName() string {
+ if x != nil {
+ return x.Name
+ }
+ return ""
+}
+
+func (x *SearchTasksRequest) GetHasName() bool {
+ if x != nil {
+ return x.HasName
+ }
+ return false
+}
+
+func (x *SearchTasksRequest) GetPatchset() string {
+ if x != nil {
+ return x.Patchset
+ }
+ return ""
+}
+
+func (x *SearchTasksRequest) GetHasPatchset() bool {
+ if x != nil {
+ return x.HasPatchset
+ }
+ return false
+}
+
+func (x *SearchTasksRequest) GetRepo() string {
+ if x != nil {
+ return x.Repo
+ }
+ return ""
+}
+
+func (x *SearchTasksRequest) GetHasRepo() bool {
+ if x != nil {
+ return x.HasRepo
+ }
+ return false
+}
+
+func (x *SearchTasksRequest) GetRevision() string {
+ if x != nil {
+ return x.Revision
+ }
+ return ""
+}
+
+func (x *SearchTasksRequest) GetHasRevision() bool {
+ if x != nil {
+ return x.HasRevision
+ }
+ return false
+}
+
func (x *SearchTasksRequest) GetStatus() TaskStatus {
if x != nil {
return x.Status
@@ -818,6 +1005,13 @@
return TaskStatus_TASK_STATUS_PENDING
}
+func (x *SearchTasksRequest) GetHasStatus() bool {
+ if x != nil {
+ return x.HasStatus
+ }
+ return false
+}
+
func (x *SearchTasksRequest) GetTimeStart() *timestamp.Timestamp {
if x != nil {
return x.TimeStart
@@ -825,6 +1019,13 @@
return nil
}
+func (x *SearchTasksRequest) GetHasTimeStart() bool {
+ if x != nil {
+ return x.HasTimeStart
+ }
+ return false
+}
+
func (x *SearchTasksRequest) GetTimeEnd() *timestamp.Timestamp {
if x != nil {
return x.TimeEnd
@@ -832,6 +1033,13 @@
return nil
}
+func (x *SearchTasksRequest) GetHasTimeEnd() bool {
+ if x != nil {
+ return x.HasTimeEnd
+ }
+ return false
+}
+
// SearchTasksResponse is a response returned from SearchTasks.
type SearchTasksResponse struct {
state protoimpl.MessageState
@@ -1278,7 +1486,7 @@
return nil
}
-// RepoState encapsulates all of the parameters which define the state of a
+// encapsulates all of the parameters which define the state of a
// repo.
type RepoState struct {
state protoimpl.MessageState
@@ -1769,6 +1977,8 @@
return ""
}
+// TODO: Make optional.
+// TODO: Make optional.
// TaskSummaries groups TaskSummaries which have the same TaskSpec name.
type TaskSummaries struct {
state protoimpl.MessageState
@@ -1992,7 +2202,7 @@
Name string `protobuf:"bytes,9,opt,name=name,proto3" json:"name,omitempty"`
// priority is an indicator of the relative priority of this Job.
Priority float32 `protobuf:"fixed32,10,opt,name=priority,proto3" json:"priority,omitempty"`
- // repoState is the current state of the repository for this Job.
+ // is the current state of the repository for this Job.
RepoState *RepoState `protobuf:"bytes,11,opt,name=repo_state,json=repoState,proto3" json:"repo_state,omitempty"`
// requested is the time at which this Job was requested. This is a
// commit timestamp, tryjob request creation timestamp, time at which
@@ -2252,342 +2462,388 @@
0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6a,
0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f,
- 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xdb, 0x02, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63,
- 0x68, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x0a,
- 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x1d, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52,
- 0x09, 0x72, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x14, 0x62, 0x75,
- 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f,
- 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62,
- 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08,
- 0x69, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
- 0x69, 0x73, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x73,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x61,
+ 0x62, 0x52, 0x03, 0x6a, 0x6f, 0x62, 0x22, 0xda, 0x05, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63,
+ 0x68, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x14,
+ 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c,
+ 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x62, 0x75, 0x69, 0x6c,
+ 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x37,
+ 0x0a, 0x18, 0x68, 0x61, 0x73, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65,
+ 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
+ 0x52, 0x15, 0x68, 0x61, 0x73, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
+ 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x66, 0x6f,
+ 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x46, 0x6f, 0x72,
+ 0x63, 0x65, 0x12, 0x20, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x73, 0x5f, 0x66, 0x6f, 0x72,
+ 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x49, 0x73, 0x46,
+ 0x6f, 0x72, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61,
+ 0x73, 0x5f, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68,
+ 0x61, 0x73, 0x49, 0x73, 0x73, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x68,
+ 0x61, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68,
+ 0x61, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73,
+ 0x65, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73,
+ 0x65, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73,
+ 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x50, 0x61, 0x74,
+ 0x63, 0x68, 0x73, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x0b, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73,
+ 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73,
+ 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
+ 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
+ 0x12, 0x21, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e,
+ 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x52, 0x65, 0x76, 0x69, 0x73,
+ 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0f, 0x20,
+ 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x61,
+ 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
+ 0x68, 0x61, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d,
+ 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
+ 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
+ 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53,
+ 0x74, 0x61, 0x72, 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65,
+ 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x68, 0x61,
+ 0x73, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x69,
+ 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e,
+ 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e,
+ 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x54, 0x69, 0x6d, 0x65,
+ 0x45, 0x6e, 0x64, 0x22, 0x41, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4a, 0x6f, 0x62,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x6f, 0x62,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62,
+ 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, 0x45, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73,
+ 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63, 0x6c,
+ 0x75, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52,
+ 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x3f, 0x0a,
+ 0x0f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18,
+ 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
+ 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x22, 0xef,
+ 0x04, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12,
+ 0x1f, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74,
+ 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x73,
+ 0x73, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x49, 0x73,
+ 0x73, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x6e,
+ 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x4e, 0x61,
+ 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x18, 0x07,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x12, 0x21,
+ 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65, 0x74, 0x18, 0x08,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x50, 0x61, 0x74, 0x63, 0x68, 0x73, 0x65,
+ 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x68, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x70,
+ 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x68, 0x61, 0x73, 0x52, 0x65, 0x70, 0x6f,
+ 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c,
+ 0x68, 0x61, 0x73, 0x5f, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01,
+ 0x28, 0x08, 0x52, 0x0b, 0x68, 0x61, 0x73, 0x52, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12,
+ 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32,
+ 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
+ 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52,
+ 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x61, 0x73, 0x5f, 0x73,
+ 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x68, 0x61, 0x73,
+ 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73,
+ 0x74, 0x61, 0x72, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72,
+ 0x74, 0x12, 0x24, 0x0a, 0x0e, 0x68, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74,
+ 0x61, 0x72, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x68, 0x61, 0x73, 0x54, 0x69,
+ 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5f,
+ 0x65, 0x6e, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
+ 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
+ 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x20,
+ 0x0a, 0x0c, 0x68, 0x61, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x12,
+ 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64,
+ 0x22, 0x45, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b,
+ 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53, 0x6b,
+ 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52,
+ 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x65, 0x64, 0x42, 0x79, 0x12, 0x2c,
+ 0x0a, 0x12, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x74,
+ 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x73, 0x6b,
+ 0x53, 0x70, 0x65, 0x63, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07,
+ 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73,
+ 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, 0x18,
+ 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x73,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6b, 0x69,
+ 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73,
+ 0x22, 0x96, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b,
+ 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x74,
+ 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
+ 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x70, 0x65,
+ 0x63, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d,
+ 0x6d, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x69, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69,
+ 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+ 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20,
+ 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x51, 0x0a, 0x17, 0x41, 0x64, 0x64,
+ 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20,
+ 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73,
+ 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x2b, 0x0a, 0x19,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75,
+ 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73,
+ 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6b, 0x69, 0x70,
+ 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22,
+ 0xe8, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x39, 0x0a,
+ 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x74,
+ 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70,
+ 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x61, 0x74, 0x63,
+ 0x68, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1a, 0x0a, 0x08,
+ 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
+ 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x70, 0x0a, 0x05, 0x50, 0x61, 0x74, 0x63,
+ 0x68, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+ 0x52, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x74, 0x63, 0x68,
+ 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x74,
+ 0x63, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73,
+ 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x63, 0x68, 0x73,
+ 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x7f, 0x0a, 0x07, 0x54, 0x61,
+ 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x73, 0x74,
+ 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x61, 0x73, 0x6b,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x52,
+ 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6f, 0x53, 0x74,
+ 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x6f, 0x72, 0x63, 0x65,
+ 0x64, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
+ 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0xe2, 0x06, 0x0a, 0x04,
+ 0x54, 0x61, 0x73, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18,
+ 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x18,
+ 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52,
+ 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x62, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x64, 0x62, 0x4d, 0x6f, 0x64, 0x69, 0x66,
+ 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65,
+ 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
+ 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d,
+ 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64,
+ 0x41, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
+ 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f,
+ 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x73, 0x6f,
+ 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6a,
+ 0x6f, 0x62, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x12,
+ 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70,
+ 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73,
+ 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x61, 0x72,
+ 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x48, 0x0a, 0x0a, 0x70, 0x72,
+ 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
+ 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
+ 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
+ 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72,
+ 0x74, 0x69, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f, 0x6f, 0x66,
+ 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f, 0x66, 0x12,
+ 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0d, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
+ 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52,
+ 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74,
+ 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73,
+ 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e,
+ 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
+ 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x62,
+ 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x77, 0x61,
+ 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x77,
+ 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x10,
+ 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x54, 0x61,
+ 0x73, 0x6b, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6b, 0x65, 0x79,
+ 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b,
+ 0x4b, 0x65, 0x79, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x05,
+ 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x61,
0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63,
- 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a,
- 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
- 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x74, 0x69, 0x6d,
- 0x65, 0x45, 0x6e, 0x64, 0x22, 0x41, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4a, 0x6f,
- 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x6f,
- 0x62, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f,
- 0x62, 0x52, 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x22, 0x45, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x61,
- 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
- 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x6e, 0x63,
- 0x6c, 0x75, 0x64, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x0c, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x3f,
- 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
- 0x18, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
- 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x22,
- 0x90, 0x02, 0x0a, 0x12, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x36, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6b,
- 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61,
- 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x12, 0x18,
- 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61,
- 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x06,
+ 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74,
+ 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x45,
+ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
+ 0x22, 0x4a, 0x0a, 0x10, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e,
+ 0x63, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01, 0x20, 0x01,
+ 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x65,
+ 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c,
+ 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x22, 0xbc, 0x01, 0x0a,
+ 0x0b, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x07,
+ 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61,
+ 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74,
+ 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61,
+ 0x78, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54,
+ 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75,
+ 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61,
+ 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x77, 0x61,
+ 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x5a, 0x0a, 0x0d, 0x54,
+ 0x61, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04,
+ 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x12, 0x35, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x1f, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
+ 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79,
+ 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x4d, 0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x44,
+ 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x73,
+ 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x61,
+ 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73,
+ 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65,
+ 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x53,
+ 0x74, 0x61, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6f, 0x76,
+ 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e,
+ 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x53, 0x12, 0x2e,
+ 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68,
+ 0x65, 0x61, 0x64, 0x5f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x64, 0x6f, 0x77,
+ 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x53, 0x12, 0x2a,
+ 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61,
+ 0x64, 0x5f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x75, 0x70, 0x6c, 0x6f, 0x61,
+ 0x64, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x53, 0x22, 0x84, 0x06, 0x0a, 0x03, 0x4a,
+ 0x6f, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65,
+ 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
+ 0x52, 0x12, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42, 0x75, 0x69,
+ 0x6c, 0x64, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63,
+ 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x03, 0x52, 0x13, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74,
+ 0x4c, 0x65, 0x61, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
+ 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
+ 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
+ 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x62, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x64, 0x62, 0x4d, 0x6f, 0x64, 0x69, 0x66,
+ 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x48, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65,
+ 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x74, 0x61,
+ 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63,
+ 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65,
+ 0x73, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12,
+ 0x3b, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
- 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74,
- 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45,
- 0x6e, 0x64, 0x22, 0x45, 0x0a, 0x13, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x74, 0x61, 0x73,
- 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61,
- 0x73, 0x6b, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x65, 0x74,
- 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x22, 0xa7, 0x01, 0x0a, 0x0c, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73,
- 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x62,
- 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x65, 0x64, 0x42, 0x79,
- 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x70, 0x61,
- 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61,
- 0x73, 0x6b, 0x53, 0x70, 0x65, 0x63, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x18,
- 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52,
- 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63,
- 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64,
- 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x52,
- 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c,
- 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x72, 0x75,
- 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x61, 0x73, 0x6b,
- 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53,
- 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c,
- 0x65, 0x73, 0x22, 0x96, 0x01, 0x0a, 0x16, 0x41, 0x64, 0x64, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61,
- 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a,
- 0x12, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x5f, 0x70, 0x61, 0x74, 0x74, 0x65,
- 0x72, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x73, 0x6b, 0x53,
- 0x70, 0x65, 0x63, 0x50, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63,
- 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f,
- 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
- 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63,
- 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
- 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x51, 0x0a, 0x17, 0x41,
- 0x64, 0x64, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65,
- 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x18,
- 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6b, 0x69, 0x70, 0x54,
- 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x22, 0x2b,
- 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b,
- 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69,
- 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x1a, 0x44,
- 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c,
- 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x72, 0x75, 0x6c,
- 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x6b,
- 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x05, 0x72, 0x75, 0x6c, 0x65,
- 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
- 0x39, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
- 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
- 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2e, 0x50, 0x61,
- 0x74, 0x63, 0x68, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x65,
- 0x70, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x12, 0x1a,
- 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0x70, 0x0a, 0x05, 0x50, 0x61,
- 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x52, 0x05, 0x69, 0x73, 0x73, 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x74,
- 0x63, 0x68, 0x5f, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70,
- 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x74, 0x63,
- 0x68, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x74, 0x63,
- 0x68, 0x73, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x7f, 0x0a, 0x07,
- 0x54, 0x61, 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x5f,
- 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x61,
+ 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x0e, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19, 0x0a, 0x08,
+ 0x69, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
+ 0x69, 0x73, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+ 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70,
+ 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x70,
+ 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x5f,
+ 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x74, 0x61,
0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63,
0x2e, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x72, 0x65, 0x70, 0x6f,
- 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x6f, 0x72,
- 0x63, 0x65, 0x64, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x64, 0x4a, 0x6f, 0x62, 0x49, 0x64, 0x22, 0xe2, 0x06,
- 0x0a, 0x04, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70,
- 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74,
- 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x62, 0x5f, 0x6d, 0x6f, 0x64, 0x69,
- 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x64, 0x62, 0x4d, 0x6f, 0x64,
- 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73,
- 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
- 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54,
- 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68,
- 0x65, 0x64, 0x41, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x64,
- 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69,
- 0x73, 0x6f, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x12, 0x12, 0x0a,
- 0x04, 0x6a, 0x6f, 0x62, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6a, 0x6f, 0x62,
- 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74,
- 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x6d, 0x61, 0x78, 0x41, 0x74, 0x74, 0x65,
- 0x6d, 0x70, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74,
- 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x70,
- 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x12, 0x48, 0x0a, 0x0a,
- 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x28, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65,
- 0x72, 0x74, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70,
- 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x74, 0x72, 0x79, 0x5f,
- 0x6f, 0x66, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x74, 0x72, 0x79, 0x4f,
- 0x66, 0x12, 0x39, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18,
- 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
- 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
- 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x36, 0x0a, 0x06,
- 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74,
- 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70,
- 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74,
- 0x61, 0x74, 0x75, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
- 0x5f, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73,
- 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10,
- 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64,
- 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
- 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x6b,
- 0x65, 0x79, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61,
- 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x4b, 0x65, 0x79, 0x12, 0x33,
- 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
- 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72,
- 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74,
- 0x61, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65,
- 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0x4a, 0x0a, 0x10, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64,
- 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65,
- 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
- 0x52, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x22, 0xbc,
- 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x18,
- 0x0a, 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
- 0x07, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x5f,
- 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
- 0x6d, 0x61, 0x78, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x73,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x74, 0x61,
- 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63,
- 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
- 0x74, 0x75, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x5f,
- 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73,
- 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x5a, 0x0a,
- 0x0d, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x12, 0x12,
- 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
- 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
- 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61,
- 0x72, 0x79, 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x22, 0x4d, 0x0a, 0x0e, 0x54, 0x61, 0x73,
- 0x6b, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74,
- 0x61, 0x73, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
- 0x74, 0x61, 0x73, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65,
- 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x69,
- 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x91, 0x01, 0x0a, 0x09, 0x54, 0x61, 0x73,
- 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
- 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02,
- 0x52, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x53,
- 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6f, 0x76, 0x65,
- 0x72, 0x68, 0x65, 0x61, 0x64, 0x5f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x64,
- 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x53,
- 0x12, 0x2a, 0x0a, 0x11, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68,
- 0x65, 0x61, 0x64, 0x5f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x75, 0x70, 0x6c,
- 0x6f, 0x61, 0x64, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x53, 0x22, 0x84, 0x06, 0x0a,
- 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x30, 0x0a, 0x14, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63,
- 0x6b, 0x65, 0x74, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x03, 0x52, 0x12, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x42,
- 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62,
- 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18,
- 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x62, 0x75, 0x63, 0x6b,
- 0x65, 0x74, 0x4c, 0x65, 0x61, 0x73, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72,
- 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
- 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
- 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61,
- 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x40, 0x0a, 0x0e, 0x64, 0x62, 0x5f, 0x6d, 0x6f, 0x64, 0x69,
- 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x64, 0x62, 0x4d, 0x6f, 0x64,
- 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x48, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e,
- 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
- 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72,
- 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63,
- 0x69, 0x65, 0x73, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65,
- 0x73, 0x12, 0x3b, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x61, 0x74,
- 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
- 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
- 0x6d, 0x70, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x41, 0x74, 0x12, 0x0e,
- 0x0a, 0x02, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x19,
- 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08,
- 0x52, 0x07, 0x69, 0x73, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
- 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52,
- 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x0a, 0x72, 0x65, 0x70,
- 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e,
- 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72,
- 0x70, 0x63, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x09, 0x72, 0x65,
- 0x70, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
- 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
- 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
- 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63,
- 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x53,
- 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x37, 0x0a,
- 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74,
- 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70,
- 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52,
- 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64,
- 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x22, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
- 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x52, 0x0e, 0x74, 0x61, 0x73, 0x6b, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69,
- 0x6f, 0x6e, 0x73, 0x2a, 0x88, 0x01, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74,
- 0x75, 0x73, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
- 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x54,
- 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49,
- 0x4e, 0x47, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41,
- 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x17, 0x0a,
- 0x13, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49,
- 0x4c, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53,
- 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x49, 0x53, 0x48, 0x41, 0x50, 0x10, 0x04, 0x2a, 0x87,
- 0x01, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x16,
- 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52,
- 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4a, 0x4f, 0x42, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01,
- 0x12, 0x16, 0x0a, 0x12, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46,
- 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4a, 0x4f, 0x42, 0x5f,
- 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x49, 0x53, 0x48, 0x41, 0x50, 0x10, 0x03, 0x12,
- 0x17, 0x0a, 0x13, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41,
- 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0x82, 0x07, 0x0a, 0x14, 0x54, 0x61, 0x73,
- 0x6b, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
- 0x65, 0x12, 0x5e, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x73,
- 0x12, 0x26, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4a, 0x6f, 0x62,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72,
- 0x69, 0x67, 0x67, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x4f, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x21, 0x2e, 0x74, 0x61,
- 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63,
- 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22,
- 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
- 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x58, 0x0a, 0x09, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x12,
- 0x24, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
- 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68,
- 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65,
- 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0a,
- 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x25, 0x2e, 0x74, 0x61, 0x73,
+ 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
+ 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
+ 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x65, 0x64, 0x41, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x0d,
+ 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65,
+ 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61,
+ 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x37, 0x0a, 0x05, 0x74,
+ 0x61, 0x73, 0x6b, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x74, 0x61, 0x73,
0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e,
- 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x26, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4a, 0x6f, 0x62,
- 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x07, 0x47, 0x65, 0x74,
- 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73,
- 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
- 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65,
- 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a,
- 0x0b, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x26, 0x2e, 0x74,
- 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70,
- 0x63, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65,
- 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68,
- 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a,
- 0x10, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65,
- 0x73, 0x12, 0x2b, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c,
- 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61,
- 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c,
- 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
- 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52,
- 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0f,
- 0x41, 0x64, 0x64, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x12,
- 0x2a, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
- 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b,
- 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x61,
- 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63,
- 0x2e, 0x41, 0x64, 0x64, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65,
- 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2d,
- 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
- 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61,
- 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e,
+ 0x54, 0x61, 0x73, 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x69, 0x65, 0x73, 0x52, 0x05, 0x74,
+ 0x61, 0x73, 0x6b, 0x73, 0x12, 0x4b, 0x0a, 0x0f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x64, 0x69, 0x6d,
+ 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e,
0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72,
- 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73,
- 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x29, 0x5a,
- 0x27, 0x67, 0x6f, 0x2e, 0x73, 0x6b, 0x69, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x69, 0x6e, 0x66,
- 0x72, 0x61, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65,
- 0x72, 0x2f, 0x67, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+ 0x70, 0x63, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+ 0x73, 0x52, 0x0e, 0x74, 0x61, 0x73, 0x6b, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+ 0x73, 0x2a, 0x88, 0x01, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
+ 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f,
+ 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x53,
+ 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47,
+ 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55,
+ 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x54,
+ 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55,
+ 0x52, 0x45, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41,
+ 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x49, 0x53, 0x48, 0x41, 0x50, 0x10, 0x04, 0x2a, 0x87, 0x01, 0x0a,
+ 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x16, 0x4a, 0x4f,
+ 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47,
+ 0x52, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54,
+ 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x16,
+ 0x0a, 0x12, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49,
+ 0x4c, 0x55, 0x52, 0x45, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54,
+ 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4d, 0x49, 0x53, 0x48, 0x41, 0x50, 0x10, 0x03, 0x12, 0x17, 0x0a,
+ 0x13, 0x4a, 0x4f, 0x42, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x43, 0x41, 0x4e, 0x43,
+ 0x45, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x32, 0x82, 0x07, 0x0a, 0x14, 0x54, 0x61, 0x73, 0x6b, 0x53,
+ 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
+ 0x5e, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x26,
+ 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e,
+ 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x73, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
+ 0x4f, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x21, 0x2e, 0x74, 0x61, 0x73, 0x6b,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47,
+ 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x74,
+ 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70,
+ 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x58, 0x0a, 0x09, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x12, 0x24, 0x2e,
+ 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72,
+ 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64,
+ 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4a,
+ 0x6f, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x53, 0x65,
+ 0x61, 0x72, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x25, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f,
+ 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65,
+ 0x61, 0x72, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
+ 0x26, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
+ 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4a, 0x6f, 0x62, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x61,
+ 0x73, 0x6b, 0x12, 0x22, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63,
+ 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54,
+ 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0b, 0x53,
+ 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x26, 0x2e, 0x74, 0x61, 0x73,
+ 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e,
+ 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75,
+ 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x54, 0x61,
+ 0x73, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6d, 0x0a, 0x10, 0x47,
+ 0x65, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12,
+ 0x2b, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72,
+ 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b,
+ 0x52, 0x75, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x74,
+ 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70,
+ 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c,
+ 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0f, 0x41, 0x64,
+ 0x64, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2a, 0x2e,
+ 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72,
+ 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75,
+ 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x74, 0x61, 0x73, 0x6b,
+ 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x41,
+ 0x64, 0x64, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x73, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x74,
+ 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70,
+ 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b,
+ 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x74, 0x61,
+ 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2e, 0x72, 0x70, 0x63,
+ 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x6b, 0x69, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52,
+ 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x29, 0x5a, 0x27, 0x67,
+ 0x6f, 0x2e, 0x73, 0x6b, 0x69, 0x61, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x69, 0x6e, 0x66, 0x72, 0x61,
+ 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x72, 0x2f,
+ 0x67, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -2644,64 +2900,62 @@
2, // 0: task_scheduler.rpc.TriggerJobsRequest.jobs:type_name -> task_scheduler.rpc.TriggerJob
30, // 1: task_scheduler.rpc.GetJobResponse.job:type_name -> task_scheduler.rpc.Job
30, // 2: task_scheduler.rpc.CancelJobResponse.job:type_name -> task_scheduler.rpc.Job
- 22, // 3: task_scheduler.rpc.SearchJobsRequest.repo_state:type_name -> task_scheduler.rpc.RepoState
- 1, // 4: task_scheduler.rpc.SearchJobsRequest.status:type_name -> task_scheduler.rpc.JobStatus
- 33, // 5: task_scheduler.rpc.SearchJobsRequest.time_start:type_name -> google.protobuf.Timestamp
- 33, // 6: task_scheduler.rpc.SearchJobsRequest.time_end:type_name -> google.protobuf.Timestamp
- 30, // 7: task_scheduler.rpc.SearchJobsResponse.jobs:type_name -> task_scheduler.rpc.Job
- 24, // 8: task_scheduler.rpc.GetTaskResponse.task:type_name -> task_scheduler.rpc.Task
- 23, // 9: task_scheduler.rpc.SearchTasksRequest.task_key:type_name -> task_scheduler.rpc.TaskKey
- 0, // 10: task_scheduler.rpc.SearchTasksRequest.status:type_name -> task_scheduler.rpc.TaskStatus
- 33, // 11: task_scheduler.rpc.SearchTasksRequest.time_start:type_name -> google.protobuf.Timestamp
- 33, // 12: task_scheduler.rpc.SearchTasksRequest.time_end:type_name -> google.protobuf.Timestamp
- 24, // 13: task_scheduler.rpc.SearchTasksResponse.tasks:type_name -> task_scheduler.rpc.Task
- 16, // 14: task_scheduler.rpc.GetSkipTaskRulesResponse.rules:type_name -> task_scheduler.rpc.SkipTaskRule
- 16, // 15: task_scheduler.rpc.AddSkipTaskRuleResponse.rules:type_name -> task_scheduler.rpc.SkipTaskRule
- 16, // 16: task_scheduler.rpc.DeleteSkipTaskRuleResponse.rules:type_name -> task_scheduler.rpc.SkipTaskRule
- 31, // 17: task_scheduler.rpc.RepoState.patch:type_name -> task_scheduler.rpc.RepoState.Patch
- 22, // 18: task_scheduler.rpc.TaskKey.repo_state:type_name -> task_scheduler.rpc.RepoState
- 33, // 19: task_scheduler.rpc.Task.created_at:type_name -> google.protobuf.Timestamp
- 33, // 20: task_scheduler.rpc.Task.db_modified_at:type_name -> google.protobuf.Timestamp
- 33, // 21: task_scheduler.rpc.Task.finished_at:type_name -> google.protobuf.Timestamp
- 32, // 22: task_scheduler.rpc.Task.properties:type_name -> task_scheduler.rpc.Task.PropertiesEntry
- 33, // 23: task_scheduler.rpc.Task.started_at:type_name -> google.protobuf.Timestamp
- 0, // 24: task_scheduler.rpc.Task.status:type_name -> task_scheduler.rpc.TaskStatus
- 23, // 25: task_scheduler.rpc.Task.task_key:type_name -> task_scheduler.rpc.TaskKey
- 29, // 26: task_scheduler.rpc.Task.stats:type_name -> task_scheduler.rpc.TaskStats
- 0, // 27: task_scheduler.rpc.TaskSummary.status:type_name -> task_scheduler.rpc.TaskStatus
- 26, // 28: task_scheduler.rpc.TaskSummaries.tasks:type_name -> task_scheduler.rpc.TaskSummary
- 33, // 29: task_scheduler.rpc.Job.created_at:type_name -> google.protobuf.Timestamp
- 33, // 30: task_scheduler.rpc.Job.db_modified_at:type_name -> google.protobuf.Timestamp
- 25, // 31: task_scheduler.rpc.Job.dependencies:type_name -> task_scheduler.rpc.TaskDependencies
- 33, // 32: task_scheduler.rpc.Job.finished_at:type_name -> google.protobuf.Timestamp
- 22, // 33: task_scheduler.rpc.Job.repo_state:type_name -> task_scheduler.rpc.RepoState
- 33, // 34: task_scheduler.rpc.Job.requested_at:type_name -> google.protobuf.Timestamp
- 1, // 35: task_scheduler.rpc.Job.status:type_name -> task_scheduler.rpc.JobStatus
- 27, // 36: task_scheduler.rpc.Job.tasks:type_name -> task_scheduler.rpc.TaskSummaries
- 28, // 37: task_scheduler.rpc.Job.task_dimensions:type_name -> task_scheduler.rpc.TaskDimensions
- 3, // 38: task_scheduler.rpc.TaskSchedulerService.TriggerJobs:input_type -> task_scheduler.rpc.TriggerJobsRequest
- 5, // 39: task_scheduler.rpc.TaskSchedulerService.GetJob:input_type -> task_scheduler.rpc.GetJobRequest
- 7, // 40: task_scheduler.rpc.TaskSchedulerService.CancelJob:input_type -> task_scheduler.rpc.CancelJobRequest
- 9, // 41: task_scheduler.rpc.TaskSchedulerService.SearchJobs:input_type -> task_scheduler.rpc.SearchJobsRequest
- 11, // 42: task_scheduler.rpc.TaskSchedulerService.GetTask:input_type -> task_scheduler.rpc.GetTaskRequest
- 13, // 43: task_scheduler.rpc.TaskSchedulerService.SearchTasks:input_type -> task_scheduler.rpc.SearchTasksRequest
- 15, // 44: task_scheduler.rpc.TaskSchedulerService.GetSkipTaskRules:input_type -> task_scheduler.rpc.GetSkipTaskRulesRequest
- 18, // 45: task_scheduler.rpc.TaskSchedulerService.AddSkipTaskRule:input_type -> task_scheduler.rpc.AddSkipTaskRuleRequest
- 20, // 46: task_scheduler.rpc.TaskSchedulerService.DeleteSkipTaskRule:input_type -> task_scheduler.rpc.DeleteSkipTaskRuleRequest
- 4, // 47: task_scheduler.rpc.TaskSchedulerService.TriggerJobs:output_type -> task_scheduler.rpc.TriggerJobsResponse
- 6, // 48: task_scheduler.rpc.TaskSchedulerService.GetJob:output_type -> task_scheduler.rpc.GetJobResponse
- 8, // 49: task_scheduler.rpc.TaskSchedulerService.CancelJob:output_type -> task_scheduler.rpc.CancelJobResponse
- 10, // 50: task_scheduler.rpc.TaskSchedulerService.SearchJobs:output_type -> task_scheduler.rpc.SearchJobsResponse
- 12, // 51: task_scheduler.rpc.TaskSchedulerService.GetTask:output_type -> task_scheduler.rpc.GetTaskResponse
- 14, // 52: task_scheduler.rpc.TaskSchedulerService.SearchTasks:output_type -> task_scheduler.rpc.SearchTasksResponse
- 17, // 53: task_scheduler.rpc.TaskSchedulerService.GetSkipTaskRules:output_type -> task_scheduler.rpc.GetSkipTaskRulesResponse
- 19, // 54: task_scheduler.rpc.TaskSchedulerService.AddSkipTaskRule:output_type -> task_scheduler.rpc.AddSkipTaskRuleResponse
- 21, // 55: task_scheduler.rpc.TaskSchedulerService.DeleteSkipTaskRule:output_type -> task_scheduler.rpc.DeleteSkipTaskRuleResponse
- 47, // [47:56] is the sub-list for method output_type
- 38, // [38:47] is the sub-list for method input_type
- 38, // [38:38] is the sub-list for extension type_name
- 38, // [38:38] is the sub-list for extension extendee
- 0, // [0:38] is the sub-list for field type_name
+ 1, // 3: task_scheduler.rpc.SearchJobsRequest.status:type_name -> task_scheduler.rpc.JobStatus
+ 33, // 4: task_scheduler.rpc.SearchJobsRequest.time_start:type_name -> google.protobuf.Timestamp
+ 33, // 5: task_scheduler.rpc.SearchJobsRequest.time_end:type_name -> google.protobuf.Timestamp
+ 30, // 6: task_scheduler.rpc.SearchJobsResponse.jobs:type_name -> task_scheduler.rpc.Job
+ 24, // 7: task_scheduler.rpc.GetTaskResponse.task:type_name -> task_scheduler.rpc.Task
+ 0, // 8: task_scheduler.rpc.SearchTasksRequest.status:type_name -> task_scheduler.rpc.TaskStatus
+ 33, // 9: task_scheduler.rpc.SearchTasksRequest.time_start:type_name -> google.protobuf.Timestamp
+ 33, // 10: task_scheduler.rpc.SearchTasksRequest.time_end:type_name -> google.protobuf.Timestamp
+ 24, // 11: task_scheduler.rpc.SearchTasksResponse.tasks:type_name -> task_scheduler.rpc.Task
+ 16, // 12: task_scheduler.rpc.GetSkipTaskRulesResponse.rules:type_name -> task_scheduler.rpc.SkipTaskRule
+ 16, // 13: task_scheduler.rpc.AddSkipTaskRuleResponse.rules:type_name -> task_scheduler.rpc.SkipTaskRule
+ 16, // 14: task_scheduler.rpc.DeleteSkipTaskRuleResponse.rules:type_name -> task_scheduler.rpc.SkipTaskRule
+ 31, // 15: task_scheduler.rpc.RepoState.patch:type_name -> task_scheduler.rpc.RepoState.Patch
+ 22, // 16: task_scheduler.rpc.TaskKey.repo_state:type_name -> task_scheduler.rpc.RepoState
+ 33, // 17: task_scheduler.rpc.Task.created_at:type_name -> google.protobuf.Timestamp
+ 33, // 18: task_scheduler.rpc.Task.db_modified_at:type_name -> google.protobuf.Timestamp
+ 33, // 19: task_scheduler.rpc.Task.finished_at:type_name -> google.protobuf.Timestamp
+ 32, // 20: task_scheduler.rpc.Task.properties:type_name -> task_scheduler.rpc.Task.PropertiesEntry
+ 33, // 21: task_scheduler.rpc.Task.started_at:type_name -> google.protobuf.Timestamp
+ 0, // 22: task_scheduler.rpc.Task.status:type_name -> task_scheduler.rpc.TaskStatus
+ 23, // 23: task_scheduler.rpc.Task.task_key:type_name -> task_scheduler.rpc.TaskKey
+ 29, // 24: task_scheduler.rpc.Task.stats:type_name -> task_scheduler.rpc.TaskStats
+ 0, // 25: task_scheduler.rpc.TaskSummary.status:type_name -> task_scheduler.rpc.TaskStatus
+ 26, // 26: task_scheduler.rpc.TaskSummaries.tasks:type_name -> task_scheduler.rpc.TaskSummary
+ 33, // 27: task_scheduler.rpc.Job.created_at:type_name -> google.protobuf.Timestamp
+ 33, // 28: task_scheduler.rpc.Job.db_modified_at:type_name -> google.protobuf.Timestamp
+ 25, // 29: task_scheduler.rpc.Job.dependencies:type_name -> task_scheduler.rpc.TaskDependencies
+ 33, // 30: task_scheduler.rpc.Job.finished_at:type_name -> google.protobuf.Timestamp
+ 22, // 31: task_scheduler.rpc.Job.repo_state:type_name -> task_scheduler.rpc.RepoState
+ 33, // 32: task_scheduler.rpc.Job.requested_at:type_name -> google.protobuf.Timestamp
+ 1, // 33: task_scheduler.rpc.Job.status:type_name -> task_scheduler.rpc.JobStatus
+ 27, // 34: task_scheduler.rpc.Job.tasks:type_name -> task_scheduler.rpc.TaskSummaries
+ 28, // 35: task_scheduler.rpc.Job.task_dimensions:type_name -> task_scheduler.rpc.TaskDimensions
+ 3, // 36: task_scheduler.rpc.TaskSchedulerService.TriggerJobs:input_type -> task_scheduler.rpc.TriggerJobsRequest
+ 5, // 37: task_scheduler.rpc.TaskSchedulerService.GetJob:input_type -> task_scheduler.rpc.GetJobRequest
+ 7, // 38: task_scheduler.rpc.TaskSchedulerService.CancelJob:input_type -> task_scheduler.rpc.CancelJobRequest
+ 9, // 39: task_scheduler.rpc.TaskSchedulerService.SearchJobs:input_type -> task_scheduler.rpc.SearchJobsRequest
+ 11, // 40: task_scheduler.rpc.TaskSchedulerService.GetTask:input_type -> task_scheduler.rpc.GetTaskRequest
+ 13, // 41: task_scheduler.rpc.TaskSchedulerService.SearchTasks:input_type -> task_scheduler.rpc.SearchTasksRequest
+ 15, // 42: task_scheduler.rpc.TaskSchedulerService.GetSkipTaskRules:input_type -> task_scheduler.rpc.GetSkipTaskRulesRequest
+ 18, // 43: task_scheduler.rpc.TaskSchedulerService.AddSkipTaskRule:input_type -> task_scheduler.rpc.AddSkipTaskRuleRequest
+ 20, // 44: task_scheduler.rpc.TaskSchedulerService.DeleteSkipTaskRule:input_type -> task_scheduler.rpc.DeleteSkipTaskRuleRequest
+ 4, // 45: task_scheduler.rpc.TaskSchedulerService.TriggerJobs:output_type -> task_scheduler.rpc.TriggerJobsResponse
+ 6, // 46: task_scheduler.rpc.TaskSchedulerService.GetJob:output_type -> task_scheduler.rpc.GetJobResponse
+ 8, // 47: task_scheduler.rpc.TaskSchedulerService.CancelJob:output_type -> task_scheduler.rpc.CancelJobResponse
+ 10, // 48: task_scheduler.rpc.TaskSchedulerService.SearchJobs:output_type -> task_scheduler.rpc.SearchJobsResponse
+ 12, // 49: task_scheduler.rpc.TaskSchedulerService.GetTask:output_type -> task_scheduler.rpc.GetTaskResponse
+ 14, // 50: task_scheduler.rpc.TaskSchedulerService.SearchTasks:output_type -> task_scheduler.rpc.SearchTasksResponse
+ 17, // 51: task_scheduler.rpc.TaskSchedulerService.GetSkipTaskRules:output_type -> task_scheduler.rpc.GetSkipTaskRulesResponse
+ 19, // 52: task_scheduler.rpc.TaskSchedulerService.AddSkipTaskRule:output_type -> task_scheduler.rpc.AddSkipTaskRuleResponse
+ 21, // 53: task_scheduler.rpc.TaskSchedulerService.DeleteSkipTaskRule:output_type -> task_scheduler.rpc.DeleteSkipTaskRuleResponse
+ 45, // [45:54] is the sub-list for method output_type
+ 36, // [36:45] is the sub-list for method input_type
+ 36, // [36:36] is the sub-list for extension type_name
+ 36, // [36:36] is the sub-list for extension extendee
+ 0, // [0:36] is the sub-list for field type_name
}
func init() { file_rpc_proto_init() }
diff --git a/task_scheduler/go/rpc/rpc.proto b/task_scheduler/go/rpc/rpc.proto
index 175f83a..d38e2e3 100644
--- a/task_scheduler/go/rpc/rpc.proto
+++ b/task_scheduler/go/rpc/rpc.proto
@@ -76,13 +76,26 @@
// SearchJobsRequest is a request to SearchJobs.
message SearchJobsRequest {
- RepoState repo_state = 1;
- int64 buildbucket_build_id = 2; // TODO: Make optional.
- bool is_force = 3; // TODO: Make optional.
- string name = 4;
- JobStatus status = 5; // TODO: Make optional.
- google.protobuf.Timestamp time_start = 6;
- google.protobuf.Timestamp time_end = 7;
+ int64 buildbucket_build_id = 1;
+ bool has_buildbucket_build_id = 2;
+ bool is_force = 3;
+ bool has_is_force = 4;
+ string issue = 5;
+ bool has_issue = 6;
+ string name = 7;
+ bool has_name = 8;
+ string patchset = 9;
+ bool has_patchset = 10;
+ string repo = 11;
+ bool has_repo = 12;
+ string revision = 13;
+ bool has_revision = 14;
+ JobStatus status = 15;
+ bool has_status = 16;
+ google.protobuf.Timestamp time_start = 17;
+ bool has_time_start = 18;
+ google.protobuf.Timestamp time_end = 19;
+ bool has_time_end = 20;
}
// SearchJobsRequest is a response returned by SearchJobs.
@@ -107,11 +120,24 @@
// SearchTasksRequest is a request to SearchTasks.
message SearchTasksRequest {
- TaskKey task_key = 1;
- int32 attempt = 2; // TODO: Make optional.
- TaskStatus status = 3;
- google.protobuf.Timestamp time_start = 6;
- google.protobuf.Timestamp time_end = 7;
+ int32 attempt = 1;
+ bool has_attempt = 2;
+ string issue = 3;
+ bool has_issue = 4;
+ string name = 5;
+ bool has_name = 6;
+ string patchset = 7;
+ bool has_patchset = 8;
+ string repo = 9;
+ bool has_repo = 10;
+ string revision = 11;
+ bool has_revision = 12;
+ TaskStatus status = 13;
+ bool has_status = 14;
+ google.protobuf.Timestamp time_start = 15;
+ bool has_time_start = 16;
+ google.protobuf.Timestamp time_end = 17;
+ bool has_time_end = 18;
}
// SearchTasksResponse is a response returned from SearchTasks.
@@ -174,7 +200,7 @@
repeated SkipTaskRule rules = 1;
}
-// RepoState encapsulates all of the parameters which define the state of a
+// encapsulates all of the parameters which define the state of a
// repo.
message RepoState {
// Patch describes a patch which may be applied to a code checkout.
@@ -322,7 +348,8 @@
TaskStatus status = 4;
string swarming_task_id = 5;
}
-
+ // TODO: Make optional.
+ // TODO: Make optional.
// TaskSummaries groups TaskSummaries which have the same TaskSpec name.
message TaskSummaries {
string name = 1;
@@ -395,7 +422,7 @@
// priority is an indicator of the relative priority of this Job.
float priority = 10;
- // repoState is the current state of the repository for this Job.
+ // is the current state of the repository for this Job.
RepoState repo_state = 11;
// requested is the time at which this Job was requested. This is a
diff --git a/task_scheduler/go/rpc/rpc.twirp.go b/task_scheduler/go/rpc/rpc.twirp.go
index d2e3d78..13bc974 100644
--- a/task_scheduler/go/rpc/rpc.twirp.go
+++ b/task_scheduler/go/rpc/rpc.twirp.go
@@ -2292,121 +2292,133 @@
}
var twirpFileDescriptor0 = []byte{
- // 1842 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xdd, 0x72, 0x1b, 0xb7,
- 0x15, 0xce, 0xf2, 0x57, 0x3c, 0x94, 0x48, 0x0a, 0x72, 0x2c, 0x9a, 0x99, 0xd8, 0xca, 0xba, 0xb5,
- 0x15, 0xdb, 0xa5, 0x3a, 0xca, 0xc4, 0xad, 0x9b, 0xa6, 0x2d, 0x25, 0x33, 0x96, 0x64, 0x5b, 0x52,
- 0x97, 0xd2, 0x4c, 0x27, 0x9d, 0xc9, 0xce, 0x72, 0x17, 0x92, 0x56, 0x22, 0x17, 0x5b, 0x00, 0x54,
- 0xa2, 0xab, 0xce, 0x74, 0x3a, 0xd3, 0x5e, 0xb6, 0x37, 0x7d, 0x85, 0xbe, 0x44, 0xdf, 0xa4, 0x77,
- 0xbd, 0xea, 0x63, 0x74, 0xf0, 0xb3, 0x4b, 0x90, 0x5a, 0x8a, 0x56, 0x7d, 0xe1, 0x3b, 0xe0, 0xe0,
- 0x3b, 0x07, 0x07, 0xe7, 0x0f, 0x38, 0x80, 0x0a, 0x8d, 0xfd, 0x76, 0x4c, 0x09, 0x27, 0x08, 0x71,
- 0x8f, 0x5d, 0xb8, 0xcc, 0x3f, 0xc3, 0xc1, 0x68, 0x80, 0x69, 0x9b, 0xc6, 0x7e, 0xeb, 0xc1, 0x29,
- 0x21, 0xa7, 0x03, 0xbc, 0x21, 0x11, 0xfd, 0xd1, 0xc9, 0x06, 0x0f, 0x87, 0x98, 0x71, 0x6f, 0x18,
- 0x2b, 0x26, 0x7b, 0x07, 0xe0, 0x88, 0x86, 0xa7, 0xa7, 0x98, 0xee, 0x91, 0x3e, 0xba, 0x07, 0x0b,
- 0xe7, 0xa4, 0xef, 0x46, 0xde, 0x10, 0x37, 0xad, 0x35, 0x6b, 0xbd, 0xe2, 0x94, 0xcf, 0x49, 0x7f,
- 0xdf, 0x1b, 0x62, 0xf4, 0x00, 0xaa, 0x3e, 0x19, 0x0e, 0x43, 0xee, 0x9e, 0x79, 0xec, 0xac, 0x99,
- 0x93, 0xab, 0xa0, 0x48, 0x3b, 0x1e, 0x3b, 0xb3, 0x77, 0x00, 0x8d, 0x25, 0x31, 0x07, 0xff, 0x61,
- 0x84, 0x19, 0x47, 0x9b, 0x50, 0x38, 0x27, 0x7d, 0xd6, 0xb4, 0xd6, 0xf2, 0xeb, 0xd5, 0xcd, 0xfb,
- 0xed, 0xeb, 0x3a, 0xb6, 0xc7, 0x5c, 0x8e, 0xc4, 0xda, 0x6d, 0x58, 0x99, 0x90, 0xc4, 0x62, 0x12,
- 0x31, 0x8c, 0x56, 0x41, 0x28, 0xe3, 0x86, 0x81, 0x92, 0x56, 0x71, 0x4a, 0xe7, 0xa4, 0xbf, 0x1b,
- 0x30, 0xfb, 0x01, 0x2c, 0xbd, 0xc2, 0x5c, 0xf0, 0xeb, 0x4d, 0x6b, 0x90, 0x0b, 0x03, 0x7d, 0x80,
- 0x5c, 0x18, 0xd8, 0x5f, 0x41, 0x2d, 0x01, 0x68, 0x59, 0x9f, 0x43, 0xfe, 0x9c, 0xf4, 0x25, 0xa4,
- 0xba, 0xb9, 0x9a, 0xa5, 0x95, 0x40, 0x0b, 0x8c, 0x6d, 0x43, 0x63, 0xdb, 0x8b, 0x7c, 0x3c, 0xb8,
- 0x61, 0x83, 0x5f, 0xc1, 0xb2, 0x81, 0xb9, 0xfd, 0x1e, 0xff, 0xce, 0xc1, 0x72, 0x0f, 0x7b, 0xd4,
- 0x3f, 0x33, 0x6d, 0xf7, 0x4b, 0x00, 0x8a, 0x63, 0xe2, 0x32, 0xee, 0x71, 0xac, 0xe5, 0x7c, 0x9a,
- 0x25, 0xc7, 0xc1, 0x31, 0xe9, 0x09, 0x90, 0x53, 0xa1, 0xc9, 0x10, 0xfd, 0x14, 0xee, 0xf4, 0x47,
- 0xe1, 0x20, 0xe8, 0x8f, 0xfc, 0x0b, 0xcc, 0x5d, 0x39, 0x76, 0xc3, 0x40, 0x7a, 0x2e, 0xef, 0x20,
- 0x63, 0x6d, 0x4b, 0x0c, 0x77, 0x03, 0xe1, 0xfd, 0x90, 0xb9, 0x27, 0x84, 0xfa, 0xb8, 0x99, 0x5f,
- 0xb3, 0xd6, 0x17, 0x9c, 0x72, 0xc8, 0xbe, 0x11, 0x53, 0x84, 0xa0, 0x20, 0x83, 0xa2, 0x20, 0x8f,
- 0x2c, 0xc7, 0xe8, 0x4b, 0x28, 0x09, 0xcd, 0x46, 0xac, 0x59, 0x5c, 0xb3, 0xd6, 0x6b, 0xd9, 0xaa,
- 0xed, 0x91, 0x7e, 0x4f, 0x82, 0x1c, 0x0d, 0x46, 0x2f, 0x00, 0x44, 0x10, 0x8a, 0x53, 0x51, 0xde,
- 0x2c, 0xc9, 0x53, 0xb5, 0xda, 0x2a, 0x4e, 0xdb, 0x49, 0x9c, 0xb6, 0x8f, 0x92, 0x38, 0x75, 0x2a,
- 0x02, 0xdd, 0x13, 0x60, 0xf4, 0x25, 0x2c, 0x48, 0x56, 0x1c, 0x05, 0xcd, 0xf2, 0x5c, 0xc6, 0xb2,
- 0xc0, 0x76, 0xa3, 0xc0, 0xee, 0x00, 0x32, 0x8d, 0xab, 0xdd, 0xf3, 0x74, 0x22, 0x32, 0x67, 0xfa,
- 0x47, 0x85, 0x64, 0x57, 0x46, 0xd0, 0x91, 0xc7, 0x2e, 0x66, 0x84, 0x00, 0x7a, 0x08, 0x4b, 0x61,
- 0xe4, 0x0f, 0x46, 0x81, 0x3c, 0x19, 0x67, 0xd2, 0xce, 0x0b, 0xce, 0xa2, 0x26, 0x0a, 0x23, 0x30,
- 0xfb, 0xd7, 0x50, 0x4f, 0xc5, 0x68, 0x35, 0x9e, 0x41, 0x41, 0xec, 0xac, 0xdd, 0xdb, 0xcc, 0x4c,
- 0x10, 0x81, 0x97, 0x28, 0xfb, 0x6f, 0xb9, 0xe4, 0x2c, 0x82, 0x98, 0x46, 0xca, 0x73, 0x58, 0x90,
- 0x7c, 0x17, 0xf8, 0x4a, 0x0b, 0xfa, 0x64, 0x96, 0xa0, 0xd7, 0xf8, 0xca, 0x29, 0x73, 0x35, 0x40,
- 0x4d, 0x28, 0x7b, 0x9c, 0xe3, 0x61, 0xcc, 0xa5, 0xba, 0x45, 0x27, 0x99, 0xa2, 0xe7, 0xa9, 0x73,
- 0xf3, 0xd2, 0xb9, 0xf7, 0x67, 0xc9, 0xfb, 0xe0, 0xde, 0xed, 0xc2, 0xca, 0x84, 0x45, 0xb4, 0x5d,
- 0xdb, 0x50, 0x14, 0x1a, 0x27, 0xfe, 0x9d, 0x6d, 0x58, 0x05, 0xb3, 0xef, 0xc1, 0xea, 0x2b, 0xcc,
- 0x7b, 0x17, 0x61, 0x2c, 0xa9, 0xa3, 0x01, 0x4e, 0xac, 0x6b, 0xff, 0xd3, 0x82, 0x45, 0x73, 0x41,
- 0x24, 0x8a, 0x17, 0x04, 0x38, 0x70, 0xfb, 0x57, 0x49, 0x99, 0x94, 0xf3, 0xad, 0x2b, 0xf4, 0x0c,
- 0x74, 0x19, 0x8e, 0xb1, 0xef, 0xc6, 0xc2, 0x9a, 0x34, 0x12, 0xb1, 0x20, 0xea, 0x55, 0x43, 0xac,
- 0xf4, 0x62, 0xec, 0x1f, 0x6a, 0xba, 0xb0, 0xbf, 0xaa, 0xa0, 0xc2, 0xcc, 0x02, 0x92, 0x4c, 0xd1,
- 0x1a, 0x54, 0x03, 0xcc, 0x7c, 0x1a, 0xc6, 0x3c, 0x24, 0x91, 0xce, 0x3b, 0x93, 0x94, 0xa6, 0x64,
- 0x71, 0x9c, 0x92, 0xb6, 0x03, 0xcd, 0xeb, 0x87, 0xd0, 0x06, 0x79, 0x0e, 0x45, 0x2a, 0x08, 0xda,
- 0x20, 0x6b, 0x59, 0x06, 0x31, 0x39, 0x1d, 0x05, 0xb7, 0xff, 0x61, 0xc1, 0xdd, 0x4e, 0x10, 0x4c,
- 0x2c, 0xe9, 0xb0, 0xfb, 0xb0, 0x87, 0xfd, 0x2d, 0xac, 0x5e, 0xd3, 0xeb, 0x3d, 0xcf, 0xfa, 0x14,
- 0xee, 0xbd, 0xc4, 0x03, 0xcc, 0x71, 0xd6, 0x69, 0xa7, 0x8b, 0xfe, 0x11, 0xb4, 0xb2, 0xc0, 0xef,
- 0xa9, 0xc2, 0x7f, 0x2d, 0xa8, 0xa4, 0xf5, 0x1c, 0xbd, 0x80, 0x62, 0xec, 0x71, 0xff, 0x4c, 0x67,
- 0xf5, 0xc3, 0x1b, 0xab, 0x7f, 0xfb, 0x50, 0x40, 0x1d, 0xc5, 0x21, 0x4c, 0x26, 0x2e, 0x03, 0x7d,
- 0x53, 0xcb, 0x31, 0x6a, 0xc1, 0x02, 0xc5, 0x97, 0x21, 0x13, 0x56, 0xce, 0x4b, 0x7a, 0x3a, 0x6f,
- 0xc5, 0x50, 0x94, 0xfc, 0xe8, 0x0e, 0x14, 0x43, 0xc6, 0x46, 0xc9, 0x0b, 0x40, 0x4d, 0xd0, 0xa7,
- 0x00, 0x52, 0xae, 0x6b, 0x08, 0xad, 0x48, 0x8a, 0xa3, 0x25, 0xcb, 0x09, 0xc3, 0x3c, 0x91, 0x9c,
- 0xcc, 0xd1, 0x5d, 0x28, 0x31, 0x4c, 0x2f, 0x31, 0xd5, 0x9e, 0xd5, 0x33, 0xfb, 0x8f, 0x50, 0xd6,
- 0x15, 0xe9, 0x3d, 0xaf, 0xba, 0x24, 0x3a, 0x72, 0xc6, 0xed, 0x64, 0xc3, 0x92, 0xbc, 0xc9, 0x02,
- 0x57, 0x3d, 0x1a, 0xb4, 0x56, 0x55, 0x45, 0xdc, 0x13, 0x2f, 0x07, 0xfb, 0x3f, 0x25, 0x28, 0x08,
- 0x0d, 0xcc, 0x3a, 0x68, 0x4d, 0xd6, 0x41, 0x23, 0x68, 0x73, 0x93, 0x41, 0xfb, 0x02, 0xc0, 0xa7,
- 0xd8, 0xe3, 0x38, 0x70, 0x3d, 0x75, 0xe6, 0x39, 0x95, 0x4e, 0xa3, 0x3b, 0x1c, 0xfd, 0x06, 0x6a,
- 0x41, 0xdf, 0x1d, 0x92, 0x20, 0x3c, 0x09, 0x15, 0x7b, 0x61, 0x2e, 0xfb, 0x62, 0xd0, 0x7f, 0xab,
- 0x19, 0x3a, 0x1c, 0x7d, 0x05, 0xd5, 0x93, 0x30, 0x0a, 0xd9, 0x99, 0x62, 0x2f, 0xce, 0x65, 0x87,
- 0x04, 0xde, 0x49, 0x02, 0xb9, 0x94, 0x5e, 0x5d, 0x8f, 0xa1, 0x1e, 0x32, 0x32, 0x90, 0x47, 0x21,
- 0x23, 0x1e, 0x8f, 0xb8, 0xac, 0xbf, 0x15, 0xa7, 0x96, 0x90, 0x0f, 0x24, 0x55, 0xd8, 0x59, 0x5e,
- 0x99, 0x0b, 0xd2, 0x12, 0x72, 0x8c, 0x3e, 0x83, 0xc5, 0xa1, 0xf7, 0x83, 0xab, 0xed, 0xc5, 0x9a,
- 0x15, 0x69, 0xbf, 0xea, 0xd0, 0xfb, 0xa1, 0xa3, 0x49, 0xe8, 0x11, 0xd4, 0x63, 0x8f, 0xe2, 0x88,
- 0xbb, 0xd2, 0xa1, 0xe2, 0x01, 0x07, 0x52, 0xc2, 0x92, 0x22, 0x0b, 0x17, 0xec, 0x06, 0x0c, 0xed,
- 0x00, 0xc4, 0x94, 0xc4, 0x98, 0xf2, 0x10, 0xb3, 0x66, 0x55, 0xe6, 0xcd, 0xfa, 0xac, 0xba, 0xdd,
- 0x3e, 0x4c, 0xa1, 0xdd, 0x88, 0xd3, 0x2b, 0xc7, 0xe0, 0x15, 0x05, 0x9a, 0x62, 0x4e, 0xaf, 0x5c,
- 0x72, 0xd2, 0x5c, 0x54, 0x05, 0x5a, 0xce, 0x0f, 0x4e, 0x84, 0xdb, 0xe4, 0xdd, 0xa4, 0x0c, 0xb7,
- 0x34, 0xdf, 0x6d, 0x1a, 0xdd, 0x31, 0xef, 0xc4, 0xda, 0xad, 0xee, 0xc4, 0x47, 0x50, 0x67, 0xdf,
- 0x7b, 0x74, 0x18, 0x46, 0xa7, 0x6e, 0x9f, 0x70, 0x11, 0x8c, 0x75, 0xa9, 0xd4, 0x52, 0x42, 0xde,
- 0x22, 0x7c, 0x37, 0x40, 0xeb, 0xd0, 0x48, 0x71, 0xda, 0x52, 0xcd, 0x86, 0x72, 0x44, 0x42, 0x57,
- 0xa6, 0x9a, 0xb8, 0xef, 0x97, 0x6f, 0x71, 0xdf, 0x7f, 0x01, 0x45, 0xf5, 0x38, 0x41, 0xb3, 0x33,
- 0x2c, 0x39, 0x00, 0x73, 0x14, 0xb6, 0xf5, 0x35, 0xd4, 0xa7, 0x6c, 0x8d, 0x1a, 0x90, 0x4f, 0x9e,
- 0x1a, 0x15, 0x47, 0x0c, 0x45, 0xd1, 0xb8, 0xf4, 0x06, 0xa3, 0x24, 0x07, 0xd5, 0xe4, 0x17, 0xb9,
- 0x9f, 0x5b, 0xf6, 0x1e, 0x34, 0x84, 0xc8, 0x97, 0x38, 0xc6, 0x51, 0x80, 0x23, 0x5f, 0xf8, 0x07,
- 0x19, 0x8f, 0x9e, 0x8a, 0x7a, 0xda, 0x20, 0x1b, 0x16, 0x03, 0x03, 0xa3, 0xd3, 0x6d, 0x82, 0x66,
- 0xff, 0xcb, 0x82, 0xaa, 0xd4, 0x6f, 0x34, 0x1c, 0x7a, 0xf4, 0xea, 0xda, 0x23, 0x6c, 0xf6, 0x7b,
- 0x66, 0x3a, 0x4c, 0xf3, 0xd7, 0xc3, 0x74, 0xec, 0xde, 0xc2, 0xad, 0xdc, 0x9b, 0xe5, 0xb6, 0x62,
- 0x96, 0xdb, 0xec, 0x6f, 0x61, 0x69, 0xac, 0xbd, 0xb6, 0x83, 0xd1, 0x6b, 0x25, 0xcf, 0x6a, 0xfd,
- 0x70, 0xc9, 0xc9, 0x04, 0x78, 0x30, 0x53, 0x0b, 0x65, 0x83, 0xe4, 0xfd, 0xf2, 0x16, 0x6a, 0xd2,
- 0xcc, 0xe1, 0x10, 0x47, 0xa2, 0x9e, 0x33, 0xf4, 0x09, 0x54, 0x24, 0xab, 0xb1, 0x83, 0x8c, 0x1a,
- 0xd9, 0xce, 0xdd, 0x07, 0x08, 0x52, 0xa8, 0xb6, 0xb5, 0x41, 0xb1, 0xff, 0x6e, 0x41, 0x25, 0x8d,
- 0x04, 0x71, 0x44, 0x4e, 0xb8, 0x37, 0x70, 0xc9, 0x25, 0xa6, 0x67, 0xd8, 0x0b, 0x5c, 0x26, 0x25,
- 0xe6, 0x9c, 0x9a, 0xa4, 0x1f, 0x68, 0x72, 0x0f, 0xb5, 0x61, 0x25, 0x20, 0xdf, 0x47, 0x03, 0xe2,
- 0x05, 0x26, 0x38, 0x27, 0xc1, 0xcb, 0xc9, 0xd2, 0x18, 0xff, 0x04, 0x96, 0x47, 0xf1, 0x34, 0x3a,
- 0x2f, 0xd1, 0x75, 0xb5, 0x90, 0x62, 0xed, 0x3f, 0x97, 0x20, 0x2f, 0xba, 0xd4, 0x59, 0x9d, 0x8d,
- 0x35, 0xb3, 0xb3, 0xd9, 0x84, 0x8f, 0x4d, 0x8e, 0x01, 0xf6, 0x18, 0x96, 0xc9, 0xa3, 0x9a, 0xa1,
- 0x15, 0x63, 0xf1, 0x8d, 0x58, 0x13, 0xb9, 0xf2, 0x41, 0xeb, 0xfb, 0xce, 0x54, 0x32, 0x14, 0x65,
- 0x2c, 0xfc, 0x68, 0x56, 0x2c, 0x98, 0xc9, 0x35, 0x99, 0x32, 0xd3, 0x37, 0x45, 0xe9, 0xff, 0xb8,
- 0x29, 0xca, 0x69, 0x7e, 0x99, 0x1d, 0xe2, 0x42, 0x76, 0x87, 0x58, 0x31, 0x42, 0x59, 0x3c, 0x0a,
- 0x68, 0x48, 0x68, 0xc8, 0xaf, 0x9a, 0x20, 0x7d, 0x9a, 0xce, 0xa7, 0x6e, 0xfc, 0xea, 0x2d, 0x6f,
- 0xfc, 0xaf, 0x61, 0x91, 0xaa, 0x67, 0x99, 0x3a, 0xd6, 0xe2, 0xdc, 0x63, 0x55, 0x53, 0x7c, 0x87,
- 0x1b, 0xad, 0xeb, 0xd2, 0x6d, 0x5a, 0xd7, 0x9f, 0x25, 0xa9, 0x59, 0x93, 0xee, 0xf8, 0xec, 0xe6,
- 0xd4, 0x14, 0xbe, 0x50, 0x78, 0xf4, 0x1a, 0xea, 0x12, 0x6a, 0xa4, 0x5c, 0x5d, 0x8a, 0xb0, 0x67,
- 0x7a, 0x34, 0x45, 0x3a, 0x35, 0x3e, 0x31, 0x7f, 0xf2, 0x57, 0x0b, 0x60, 0x5c, 0x86, 0xd0, 0x2a,
- 0xac, 0x1c, 0x75, 0x7a, 0xaf, 0xdd, 0xde, 0x51, 0xe7, 0xe8, 0xb8, 0xe7, 0x1e, 0x76, 0xf7, 0x5f,
- 0xee, 0xee, 0xbf, 0x6a, 0x7c, 0x34, 0xbd, 0xe0, 0x1c, 0xef, 0xef, 0x8b, 0x05, 0x6b, 0x7a, 0xa1,
- 0x77, 0xbc, 0xbd, 0xdd, 0xed, 0xf5, 0x1a, 0xb9, 0xe9, 0x85, 0x6f, 0x3a, 0xbb, 0x6f, 0x8e, 0x9d,
- 0x6e, 0x23, 0x8f, 0xee, 0x02, 0x32, 0x17, 0xde, 0xee, 0xf6, 0x76, 0x3a, 0x87, 0x8d, 0xc2, 0x93,
- 0xbf, 0x58, 0x50, 0x49, 0xcd, 0x84, 0x5a, 0x70, 0x77, 0xef, 0x60, 0x2b, 0x01, 0xed, 0xee, 0xbb,
- 0x87, 0xce, 0xc1, 0x2b, 0x47, 0x88, 0xfe, 0x48, 0x48, 0x30, 0xd6, 0x92, 0x2d, 0xad, 0x29, 0x7a,
- 0xb2, 0x63, 0x0e, 0x7d, 0x0c, 0xcb, 0x06, 0x5d, 0x6f, 0x98, 0x17, 0x1a, 0x1a, 0xe4, 0xed, 0xce,
- 0xfe, 0x76, 0xf7, 0x4d, 0xf7, 0x65, 0xa3, 0xb0, 0xf9, 0xa7, 0x32, 0xdc, 0x91, 0x46, 0x49, 0x2c,
- 0xd9, 0xc3, 0xf4, 0x32, 0xf4, 0x31, 0xfa, 0x0e, 0xaa, 0xc6, 0x67, 0x12, 0x7a, 0x74, 0xf3, 0x0f,
- 0x54, 0xd2, 0xf3, 0xb5, 0x1e, 0xcf, 0xc5, 0xe9, 0x77, 0xfe, 0x01, 0x94, 0xd4, 0xdf, 0x12, 0xca,
- 0x0c, 0x87, 0x89, 0x8f, 0xa9, 0x96, 0x7d, 0x13, 0x44, 0x0b, 0xfc, 0x1d, 0x54, 0xd2, 0xbf, 0x24,
- 0x94, 0x99, 0xf1, 0xd3, 0xdf, 0x51, 0xad, 0x1f, 0xcf, 0x41, 0x69, 0xc9, 0xbf, 0x07, 0x18, 0xff,
- 0x83, 0xa0, 0x4c, 0xa6, 0x6b, 0x9f, 0x50, 0xad, 0x47, 0xf3, 0x60, 0x5a, 0xb8, 0x03, 0x65, 0xfd,
- 0xb5, 0x81, 0x66, 0x9d, 0xd2, 0xf8, 0x3e, 0x69, 0x3d, 0xbc, 0x11, 0xa3, 0x65, 0x7e, 0x07, 0x55,
- 0xa3, 0xb5, 0x47, 0x37, 0xa8, 0x62, 0xfe, 0x86, 0x64, 0xfb, 0x2e, 0xeb, 0x8f, 0x60, 0x08, 0x8d,
- 0xe9, 0x76, 0x19, 0x3d, 0x9d, 0xa1, 0x58, 0xd6, 0xcf, 0x40, 0xeb, 0xd9, 0xbb, 0x81, 0xf5, 0x76,
- 0xe7, 0x50, 0x9f, 0x6a, 0x58, 0xd1, 0x93, 0x2c, 0x01, 0xd9, 0xdd, 0x76, 0xeb, 0xe9, 0x3b, 0x61,
- 0xf5, 0x5e, 0x0c, 0xd0, 0xf5, 0xe6, 0x14, 0xfd, 0x24, 0x4b, 0xc4, 0xcc, 0x8e, 0xb7, 0xd5, 0x7e,
- 0x57, 0xb8, 0xda, 0x74, 0xeb, 0xf3, 0x6f, 0x1f, 0x9f, 0x92, 0x36, 0xbb, 0x08, 0xbd, 0x36, 0xa1,
- 0xa7, 0x1b, 0x61, 0x74, 0x42, 0xbd, 0x8d, 0x49, 0x11, 0x1b, 0xa7, 0x64, 0x83, 0xc6, 0x7e, 0xbf,
- 0x24, 0x4b, 0xf4, 0x17, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xd3, 0xb9, 0xf5, 0x3e, 0xc0, 0x16,
- 0x00, 0x00,
+ // 2046 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xcd, 0x72, 0x1b, 0xc7,
+ 0x11, 0x36, 0xfe, 0x81, 0x06, 0xf1, 0xc3, 0xa1, 0x24, 0x42, 0x70, 0x49, 0xa2, 0x57, 0x8e, 0x44,
+ 0x4b, 0x0a, 0x98, 0xa2, 0x4b, 0x72, 0x14, 0xc7, 0x49, 0x40, 0x8a, 0x16, 0x49, 0x49, 0x24, 0xb3,
+ 0xa0, 0xaa, 0x52, 0x4e, 0x95, 0xb7, 0x16, 0xd8, 0x21, 0xb1, 0x24, 0x80, 0xdd, 0xec, 0x0c, 0x68,
+ 0xf3, 0x94, 0xaa, 0x54, 0xaa, 0x92, 0x6b, 0x2e, 0x79, 0x85, 0xbc, 0x44, 0x9e, 0x24, 0xc7, 0x9c,
+ 0x72, 0xcb, 0x2b, 0xb8, 0xa6, 0x67, 0x76, 0x39, 0x00, 0x76, 0x01, 0x51, 0x3a, 0xe8, 0xb6, 0xd3,
+ 0xfd, 0x75, 0xcf, 0x4c, 0x4f, 0x7f, 0x3d, 0xbd, 0x03, 0xa5, 0xc0, 0xef, 0xb5, 0xfc, 0xc0, 0xe3,
+ 0x1e, 0x21, 0xdc, 0x66, 0xe7, 0x16, 0xeb, 0xf5, 0xa9, 0x33, 0x1e, 0xd0, 0xa0, 0x15, 0xf8, 0xbd,
+ 0xe6, 0xbd, 0x53, 0xcf, 0x3b, 0x1d, 0xd0, 0x0d, 0x44, 0x74, 0xc7, 0x27, 0x1b, 0xdc, 0x1d, 0x52,
+ 0xc6, 0xed, 0xa1, 0x2f, 0x8d, 0x8c, 0x5d, 0x80, 0xe3, 0xc0, 0x3d, 0x3d, 0xa5, 0xc1, 0xbe, 0xd7,
+ 0x25, 0xb7, 0xa1, 0x78, 0xe6, 0x75, 0xad, 0x91, 0x3d, 0xa4, 0x8d, 0xd4, 0x5a, 0x6a, 0xbd, 0x64,
+ 0x16, 0xce, 0xbc, 0xee, 0x81, 0x3d, 0xa4, 0xe4, 0x1e, 0x94, 0x7b, 0xde, 0x70, 0xe8, 0x72, 0xab,
+ 0x6f, 0xb3, 0x7e, 0x23, 0x8d, 0x5a, 0x90, 0xa2, 0x5d, 0x9b, 0xf5, 0x8d, 0x5d, 0x20, 0x57, 0x9e,
+ 0x98, 0x49, 0xff, 0x34, 0xa6, 0x8c, 0x93, 0x4d, 0xc8, 0x9e, 0x79, 0x5d, 0xd6, 0x48, 0xad, 0x65,
+ 0xd6, 0xcb, 0x9b, 0x77, 0x5b, 0xb3, 0x6b, 0x6c, 0x5d, 0x59, 0x99, 0x88, 0x35, 0x5a, 0xb0, 0x32,
+ 0xe1, 0x89, 0xf9, 0xde, 0x88, 0x51, 0xb2, 0x0a, 0x62, 0x31, 0x96, 0xeb, 0x48, 0x6f, 0x25, 0x33,
+ 0x7f, 0xe6, 0x75, 0xf7, 0x1c, 0x66, 0xdc, 0x83, 0xca, 0x4b, 0xca, 0x85, 0xbd, 0x9a, 0xb4, 0x0a,
+ 0x69, 0xd7, 0x51, 0x1b, 0x48, 0xbb, 0x8e, 0xf1, 0x35, 0x54, 0x43, 0x80, 0xf2, 0xf5, 0x05, 0x64,
+ 0xce, 0xbc, 0x2e, 0x42, 0xca, 0x9b, 0xab, 0x71, 0xab, 0x12, 0x68, 0x81, 0x31, 0x0c, 0xa8, 0x6f,
+ 0xdb, 0xa3, 0x1e, 0x1d, 0xcc, 0x99, 0xe0, 0x37, 0xb0, 0xac, 0x61, 0xae, 0x3f, 0xc7, 0x7f, 0x72,
+ 0xb0, 0xdc, 0xa1, 0x76, 0xd0, 0xeb, 0xeb, 0xb1, 0xfb, 0x05, 0xdc, 0xe8, 0x8e, 0xdd, 0x81, 0xd3,
+ 0x1d, 0xf7, 0xce, 0x29, 0xb7, 0xf0, 0xdb, 0x52, 0xf3, 0x66, 0x4c, 0xa2, 0xe9, 0xb6, 0xc4, 0xe7,
+ 0x9e, 0x43, 0xbe, 0x82, 0x46, 0xdf, 0x66, 0x56, 0xac, 0x95, 0x38, 0xb1, 0xa2, 0x79, 0xb3, 0x6f,
+ 0xb3, 0xad, 0x59, 0xc3, 0xdb, 0x50, 0x74, 0x99, 0x75, 0xe2, 0x05, 0x3d, 0xda, 0xc8, 0x20, 0xb0,
+ 0xe0, 0xb2, 0x6f, 0xc5, 0x90, 0xac, 0xc1, 0x92, 0xf0, 0x19, 0xa9, 0xb3, 0xa8, 0x86, 0xbe, 0xcd,
+ 0xf6, 0x14, 0xe2, 0x06, 0xe4, 0x5c, 0xc6, 0xc6, 0xb4, 0x91, 0xc3, 0x80, 0xc8, 0x01, 0xf9, 0x14,
+ 0x4a, 0xd2, 0x4e, 0x68, 0xf2, 0x68, 0x54, 0x44, 0x23, 0xa1, 0x24, 0x90, 0xc5, 0x24, 0x2b, 0xa0,
+ 0x05, 0x7e, 0x8b, 0x35, 0x08, 0x03, 0x94, 0x17, 0xe5, 0x1a, 0xfa, 0x36, 0xc3, 0xe4, 0x6b, 0x42,
+ 0xd1, 0xb7, 0x79, 0xaf, 0xcf, 0x28, 0x6f, 0x94, 0xd0, 0x24, 0x1a, 0x93, 0xcf, 0xe4, 0xfa, 0x22,
+ 0x3d, 0xa0, 0x69, 0xb9, 0x6f, 0xb3, 0xa3, 0x10, 0x42, 0x20, 0x1b, 0x50, 0xdf, 0x6b, 0x94, 0xe5,
+ 0x6c, 0xe2, 0x3b, 0x9c, 0x0d, 0xe5, 0x4b, 0xd1, 0x6c, 0xa6, 0x50, 0x35, 0xa1, 0x18, 0xd0, 0x0b,
+ 0x97, 0xb9, 0xde, 0xa8, 0x51, 0x91, 0xb3, 0x85, 0xe3, 0x70, 0xb6, 0x48, 0x5f, 0x8d, 0x66, 0x33,
+ 0x43, 0xc8, 0x53, 0xc8, 0x33, 0x6e, 0xf3, 0x31, 0x6b, 0xd4, 0xd6, 0x52, 0xeb, 0xd5, 0xcd, 0x3b,
+ 0x09, 0x47, 0xdf, 0x41, 0x90, 0xa9, 0xc0, 0xe4, 0x0e, 0x88, 0x98, 0x5a, 0xca, 0xb4, 0x8e, 0x7e,
+ 0x45, 0x04, 0x25, 0x8c, 0x3c, 0x07, 0x10, 0xdc, 0x15, 0xfa, 0x80, 0x37, 0x96, 0x31, 0xa9, 0x9a,
+ 0x2d, 0x49, 0xef, 0x56, 0x48, 0xef, 0xd6, 0x71, 0x48, 0x6f, 0xb3, 0x24, 0xd0, 0x1d, 0x01, 0x26,
+ 0x9f, 0x43, 0x55, 0x78, 0xd6, 0xcc, 0x09, 0x7a, 0x17, 0x3b, 0x39, 0x8e, 0x50, 0x4f, 0xa1, 0x88,
+ 0x08, 0x3a, 0x72, 0x1a, 0x2b, 0x0b, 0xdd, 0x17, 0x04, 0x76, 0x67, 0xe4, 0x84, 0xe9, 0x11, 0x99,
+ 0xde, 0x88, 0xd2, 0xe3, 0x58, 0x22, 0x8c, 0x36, 0x10, 0x3d, 0xb7, 0x15, 0x3b, 0x1e, 0x4f, 0x14,
+ 0x86, 0x44, 0x7a, 0xc8, 0x8a, 0xb0, 0x83, 0x04, 0x3e, 0xb6, 0xd9, 0x79, 0x02, 0x03, 0xc9, 0x7d,
+ 0xa8, 0xb8, 0xa3, 0xde, 0x60, 0xec, 0xe0, 0x16, 0x39, 0x53, 0xe9, 0xbe, 0xa4, 0x84, 0x22, 0x88,
+ 0xcc, 0xf8, 0x2d, 0xd4, 0x22, 0x37, 0x6a, 0x19, 0x4f, 0x20, 0x2b, 0x66, 0x56, 0x2c, 0x6d, 0xc4,
+ 0xd6, 0x27, 0x81, 0x47, 0x94, 0xf1, 0xff, 0x6c, 0xb8, 0x17, 0x21, 0x8c, 0x88, 0xda, 0x80, 0x82,
+ 0xcd, 0x39, 0x1d, 0xfa, 0x1c, 0xfd, 0xe4, 0xcc, 0x70, 0x28, 0xaa, 0xa6, 0x88, 0x4e, 0xa8, 0x4d,
+ 0x47, 0xc1, 0x69, 0x2b, 0x40, 0xc4, 0x9d, 0x4c, 0x22, 0x77, 0xb2, 0x09, 0xdc, 0xc9, 0x25, 0x70,
+ 0x27, 0x9f, 0xcc, 0x9d, 0xc2, 0x02, 0xee, 0x14, 0x93, 0xb9, 0x53, 0x4a, 0xe0, 0x0e, 0x24, 0x73,
+ 0xa7, 0xbc, 0x80, 0x3b, 0x4b, 0xb3, 0xdc, 0x79, 0x16, 0x71, 0xa7, 0x82, 0xdc, 0xb9, 0x9b, 0x74,
+ 0x20, 0x73, 0xc9, 0x53, 0x9d, 0x4f, 0x9e, 0xda, 0x87, 0x91, 0xa7, 0xbe, 0x80, 0x3c, 0xcb, 0xef,
+ 0x4f, 0x1e, 0x32, 0x43, 0x9e, 0x1d, 0x58, 0x99, 0x48, 0x38, 0x95, 0xb6, 0x2d, 0xc8, 0x89, 0xc0,
+ 0x84, 0xf4, 0x49, 0xce, 0x5b, 0x09, 0x33, 0x6e, 0xc3, 0xea, 0x4b, 0xca, 0x3b, 0xe7, 0xae, 0x8f,
+ 0xd2, 0xf1, 0x80, 0x86, 0xc9, 0x6b, 0xfc, 0x2b, 0x05, 0x4b, 0xba, 0x42, 0x9c, 0xae, 0xed, 0x38,
+ 0xd4, 0xb1, 0xba, 0x97, 0x61, 0x13, 0x80, 0xe3, 0xad, 0x4b, 0xf2, 0x04, 0x54, 0x93, 0xe1, 0xd3,
+ 0x9e, 0xc8, 0x1a, 0x4e, 0x83, 0x91, 0xa0, 0x9a, 0xb8, 0x8d, 0xeb, 0x42, 0xd3, 0xf1, 0x69, 0xef,
+ 0x48, 0xc9, 0x05, 0x2d, 0x64, 0x7f, 0xc0, 0x1a, 0x19, 0x84, 0x84, 0x43, 0xb2, 0x06, 0x65, 0x87,
+ 0xb2, 0x5e, 0xe0, 0xfa, 0x5c, 0x24, 0x42, 0x16, 0x67, 0xd1, 0x45, 0x71, 0x49, 0x6e, 0x98, 0xd0,
+ 0x98, 0xdd, 0x84, 0x0a, 0xc8, 0x33, 0xc8, 0x05, 0x42, 0xa0, 0x02, 0xb2, 0x16, 0x17, 0x10, 0xdd,
+ 0xd2, 0x94, 0x70, 0xe3, 0x9f, 0x29, 0xb8, 0xd5, 0x76, 0x9c, 0x09, 0x95, 0x62, 0xf5, 0xc7, 0xdd,
+ 0xec, 0xef, 0x61, 0x75, 0x66, 0x5d, 0x1f, 0xb8, 0xd7, 0xc7, 0x70, 0xfb, 0x05, 0x1d, 0x50, 0x4e,
+ 0xe3, 0x76, 0x3b, 0xdd, 0xd2, 0x1c, 0x43, 0x33, 0x0e, 0xfc, 0x81, 0x4b, 0xf8, 0x5f, 0x0a, 0x4a,
+ 0xa2, 0x4e, 0x08, 0x5e, 0x52, 0xf2, 0x1c, 0x72, 0x58, 0x7a, 0x54, 0xf5, 0xbd, 0x1f, 0xe7, 0x25,
+ 0x42, 0xb7, 0xb0, 0x24, 0x99, 0xd2, 0x22, 0x2a, 0x4b, 0x69, 0xad, 0x2c, 0xe9, 0xb5, 0x27, 0x33,
+ 0x59, 0x7b, 0x9a, 0x3e, 0xe4, 0xd0, 0xfe, 0xaa, 0xe0, 0xa6, 0xf4, 0x82, 0x7b, 0x07, 0x00, 0xfd,
+ 0x5a, 0x9a, 0xd3, 0x12, 0x4a, 0xc2, 0xaa, 0x16, 0xd5, 0xc8, 0xcc, 0x54, 0x0d, 0xbd, 0x05, 0x79,
+ 0x46, 0x83, 0x0b, 0x1a, 0xa8, 0x93, 0x55, 0x23, 0xe3, 0xcf, 0x50, 0x10, 0xbb, 0x7f, 0x45, 0x2f,
+ 0xc9, 0xaf, 0x01, 0x84, 0x5f, 0x2c, 0x4f, 0x54, 0x6d, 0xf6, 0xce, 0xdc, 0xcd, 0x9a, 0xa5, 0x20,
+ 0x8a, 0x52, 0x98, 0x1d, 0x69, 0xad, 0xde, 0x1b, 0x50, 0xc1, 0x6e, 0xcc, 0xb1, 0x64, 0x4b, 0xac,
+ 0x56, 0x55, 0x96, 0xc2, 0x7d, 0xd1, 0x17, 0x1b, 0xff, 0xcd, 0x43, 0x56, 0xac, 0x60, 0xce, 0xf5,
+ 0xa4, 0x25, 0x6d, 0x7a, 0x32, 0x69, 0x9f, 0x03, 0xf4, 0x02, 0x6a, 0x73, 0xea, 0x58, 0xb6, 0xdc,
+ 0xf3, 0x82, 0x8a, 0xa9, 0xd0, 0x6d, 0x4e, 0x7e, 0x07, 0x55, 0xa7, 0x6b, 0x0d, 0x3d, 0xc7, 0x3d,
+ 0x71, 0xa5, 0x79, 0x76, 0xa1, 0xf9, 0x92, 0xd3, 0x7d, 0xa3, 0x0c, 0xda, 0x9c, 0x7c, 0x0d, 0xe5,
+ 0x13, 0x77, 0xe4, 0xb2, 0xbe, 0x34, 0xcf, 0x2d, 0x34, 0x87, 0x10, 0xde, 0x0e, 0x13, 0x39, 0x1f,
+ 0x75, 0x06, 0x0f, 0xa1, 0xe6, 0x32, 0x6f, 0x80, 0x5b, 0xf1, 0xc6, 0xdc, 0x1f, 0x87, 0xd7, 0x60,
+ 0x35, 0x14, 0x1f, 0xa2, 0x54, 0xc4, 0x19, 0x3b, 0x92, 0x22, 0x46, 0x02, 0xbf, 0xc5, 0x95, 0x35,
+ 0xb4, 0x7f, 0x0c, 0xef, 0x6f, 0x86, 0xb7, 0x60, 0xce, 0x2c, 0x0f, 0xed, 0x1f, 0xd5, 0x05, 0xce,
+ 0xc8, 0x03, 0xa8, 0xf9, 0x76, 0x40, 0x47, 0xdc, 0xc2, 0x03, 0x15, 0xbf, 0x27, 0x80, 0x1e, 0x2a,
+ 0x52, 0x2c, 0x8e, 0x60, 0xcf, 0x61, 0x64, 0x17, 0xc0, 0x0f, 0x3c, 0x9f, 0x06, 0xdc, 0xa5, 0xac,
+ 0x51, 0x46, 0xde, 0xac, 0x27, 0xd5, 0xed, 0xd6, 0x51, 0x04, 0xdd, 0x19, 0xf1, 0xe0, 0xd2, 0xd4,
+ 0x6c, 0x45, 0x81, 0x0e, 0x28, 0x0f, 0x2e, 0x2d, 0xef, 0x04, 0xef, 0xd0, 0x92, 0x59, 0xc0, 0xf1,
+ 0xe1, 0x89, 0x38, 0x36, 0xbc, 0xa4, 0x64, 0xe0, 0x2a, 0x8b, 0x8f, 0x4d, 0xa1, 0xdb, 0x5c, 0xbb,
+ 0x7a, 0xab, 0xd7, 0xba, 0x7a, 0x1f, 0x40, 0x8d, 0xfd, 0x60, 0x07, 0x43, 0x77, 0x74, 0x6a, 0x75,
+ 0x3d, 0x2e, 0x92, 0xb1, 0x86, 0x8b, 0xaa, 0x84, 0xe2, 0x2d, 0x8f, 0xef, 0x39, 0x64, 0x1d, 0xea,
+ 0x11, 0x4e, 0x45, 0x0a, 0xaf, 0xd2, 0x92, 0x59, 0x0d, 0xe5, 0x32, 0x54, 0xe4, 0x19, 0x14, 0x11,
+ 0x70, 0x4e, 0x2f, 0xd5, 0x65, 0xfa, 0x69, 0xd2, 0x5a, 0x5e, 0xd1, 0x4b, 0xb3, 0xc0, 0x15, 0xcd,
+ 0xbe, 0x84, 0x9c, 0xec, 0xfd, 0x48, 0x32, 0xc3, 0xc2, 0x0d, 0x30, 0x53, 0x62, 0x9b, 0xdf, 0x40,
+ 0x6d, 0x2a, 0xd6, 0xa4, 0x0e, 0x19, 0x31, 0xb5, 0x2c, 0x10, 0xe2, 0x53, 0x14, 0x8d, 0x0b, 0x7b,
+ 0x30, 0x0e, 0x39, 0x28, 0x07, 0xbf, 0x4a, 0xff, 0x32, 0x65, 0xec, 0x43, 0x5d, 0xb8, 0x7c, 0x41,
+ 0x7d, 0x3a, 0x72, 0xe8, 0xa8, 0x27, 0xce, 0x87, 0x68, 0x3d, 0x65, 0x49, 0x76, 0x8e, 0xc4, 0x80,
+ 0x25, 0x47, 0xc3, 0x28, 0xba, 0x4d, 0xc8, 0x8c, 0x7f, 0xa7, 0xa0, 0x8c, 0xeb, 0x1b, 0x0f, 0x87,
+ 0x76, 0x70, 0x39, 0xd3, 0xe3, 0x6a, 0x3c, 0x4e, 0x4f, 0xf2, 0x78, 0x3a, 0x4d, 0x33, 0xb3, 0x69,
+ 0x7a, 0x75, 0xbc, 0xd9, 0x6b, 0x1d, 0x6f, 0xdc, 0xb1, 0xe5, 0xe2, 0x8e, 0xcd, 0xf8, 0x0e, 0x2a,
+ 0x57, 0xab, 0x57, 0x71, 0xd0, 0x5e, 0x12, 0x64, 0xe1, 0x7a, 0x1a, 0x36, 0x2e, 0x69, 0x24, 0xc0,
+ 0xbd, 0xc4, 0x55, 0xc8, 0x18, 0x84, 0xfd, 0xcb, 0x1b, 0xa8, 0x62, 0x98, 0xdd, 0x21, 0x1d, 0x89,
+ 0x7a, 0xce, 0x44, 0x8b, 0x8c, 0xa6, 0xda, 0x0c, 0x98, 0x35, 0xd8, 0xf3, 0xde, 0x05, 0x70, 0x22,
+ 0xa8, 0x8a, 0xb5, 0x26, 0x31, 0xfe, 0x91, 0x82, 0x52, 0x94, 0x09, 0x62, 0x8b, 0xdc, 0xe3, 0xf6,
+ 0xc0, 0xf2, 0x2e, 0x68, 0xd0, 0xa7, 0xb6, 0x63, 0x31, 0xf4, 0x98, 0x36, 0xab, 0x28, 0x3f, 0x54,
+ 0xe2, 0x0e, 0x69, 0xc1, 0x8a, 0xe3, 0xfd, 0x30, 0x1a, 0x78, 0xb6, 0xa3, 0x83, 0xd3, 0x08, 0x5e,
+ 0x0e, 0x55, 0x57, 0xf8, 0x47, 0xb0, 0x3c, 0xf6, 0xa7, 0xd1, 0x19, 0x44, 0xd7, 0xa4, 0x22, 0xc2,
+ 0x1a, 0x7f, 0xcd, 0x43, 0x66, 0xdf, 0xeb, 0xbe, 0xc7, 0x5f, 0xff, 0x26, 0xdc, 0xd4, 0x2d, 0x06,
+ 0xd4, 0x66, 0x14, 0xc9, 0x93, 0x46, 0x93, 0x15, 0x4d, 0xf9, 0x5a, 0xe8, 0x04, 0x57, 0x3e, 0x6a,
+ 0x7d, 0xdf, 0x9d, 0x22, 0x43, 0x0e, 0x73, 0xe1, 0xf3, 0xa4, 0x5c, 0xd0, 0xc9, 0x35, 0x49, 0x99,
+ 0xe9, 0x9b, 0x22, 0xff, 0x1e, 0x37, 0x45, 0x21, 0xe2, 0x97, 0xfe, 0x08, 0x52, 0x9c, 0x7c, 0x04,
+ 0x09, 0x53, 0xb9, 0xa4, 0xa5, 0xb2, 0x68, 0x0a, 0x02, 0xd7, 0x0b, 0x5c, 0x7e, 0x89, 0x7f, 0x41,
+ 0x69, 0x33, 0x1a, 0x4f, 0xdd, 0xf8, 0xe5, 0x6b, 0xde, 0xf8, 0xdf, 0xc0, 0x52, 0x20, 0xdb, 0x32,
+ 0xb9, 0xad, 0xa5, 0x85, 0xdb, 0x2a, 0x47, 0xf8, 0x36, 0xd7, 0x1e, 0x20, 0x2a, 0xd7, 0x79, 0x80,
+ 0xf8, 0x2a, 0xa4, 0x66, 0x15, 0x8f, 0xe3, 0xb3, 0xf9, 0xd4, 0x14, 0x67, 0x21, 0xf1, 0xe4, 0x15,
+ 0xd4, 0x10, 0xaa, 0x51, 0xae, 0x86, 0x2e, 0x8c, 0xc4, 0x13, 0x8d, 0x90, 0x66, 0x95, 0x4f, 0x8c,
+ 0x1f, 0xfd, 0x3d, 0x05, 0x70, 0x55, 0x86, 0xc8, 0x2a, 0xac, 0x1c, 0xb7, 0x3b, 0xaf, 0xac, 0xce,
+ 0x71, 0xfb, 0xf8, 0x6d, 0xc7, 0x3a, 0xda, 0x39, 0x78, 0xb1, 0x77, 0xf0, 0xb2, 0xfe, 0xc9, 0xb4,
+ 0xc2, 0x7c, 0x7b, 0x70, 0x20, 0x14, 0xa9, 0x69, 0x45, 0xe7, 0xed, 0xf6, 0xf6, 0x4e, 0xa7, 0x53,
+ 0x4f, 0x4f, 0x2b, 0xbe, 0x6d, 0xef, 0xbd, 0x7e, 0x6b, 0xee, 0xd4, 0x33, 0xe4, 0x16, 0x10, 0x5d,
+ 0xf1, 0x66, 0xaf, 0xb3, 0xdb, 0x3e, 0xaa, 0x67, 0x1f, 0xfd, 0x2d, 0x05, 0xa5, 0x28, 0x4c, 0xa4,
+ 0x09, 0xb7, 0xf6, 0x0f, 0xb7, 0x42, 0xd0, 0xde, 0x81, 0x75, 0x64, 0x1e, 0xbe, 0x34, 0x85, 0xeb,
+ 0x4f, 0x84, 0x07, 0x4d, 0x17, 0x4e, 0x99, 0x9a, 0x92, 0x87, 0x33, 0xa6, 0xc9, 0x4d, 0x58, 0xd6,
+ 0xe4, 0x6a, 0xc2, 0x8c, 0x58, 0xa1, 0x26, 0xde, 0x6e, 0x1f, 0x6c, 0xef, 0xbc, 0xde, 0x79, 0x51,
+ 0xcf, 0x6e, 0xfe, 0xa5, 0x00, 0x37, 0x30, 0x28, 0x61, 0x24, 0x3b, 0x34, 0xb8, 0x70, 0x7b, 0x94,
+ 0x7c, 0x0f, 0x65, 0xed, 0xa9, 0x94, 0x3c, 0x98, 0xff, 0xbe, 0x1a, 0xfe, 0xf3, 0x35, 0x1f, 0x2e,
+ 0xc4, 0xa9, 0x3e, 0xff, 0x10, 0xf2, 0xf2, 0xe5, 0x94, 0xc4, 0xa6, 0xc3, 0xc4, 0xb3, 0x6b, 0xd3,
+ 0x98, 0x07, 0x51, 0x0e, 0xff, 0x00, 0xa5, 0xe8, 0xa5, 0x94, 0xc4, 0x32, 0x7e, 0xfa, 0xb1, 0xb5,
+ 0xf9, 0xb3, 0x05, 0x28, 0xe5, 0xf9, 0x8f, 0x00, 0x57, 0xcf, 0x4c, 0x24, 0xd6, 0x68, 0xe6, 0x89,
+ 0xb5, 0xf9, 0x60, 0x11, 0x4c, 0x39, 0x37, 0xa1, 0xa0, 0x5e, 0x8e, 0x48, 0xd2, 0x2e, 0xb5, 0xd7,
+ 0xa9, 0xe6, 0xfd, 0xb9, 0x18, 0xe5, 0xf3, 0x7b, 0x28, 0x6b, 0xbf, 0xf6, 0x64, 0xce, 0x52, 0xf4,
+ 0xc7, 0xa6, 0xf8, 0xb3, 0x8b, 0x7b, 0x23, 0x18, 0x42, 0x7d, 0xfa, 0x77, 0x99, 0x3c, 0x4e, 0x58,
+ 0x58, 0xdc, 0xcb, 0x40, 0xf3, 0xc9, 0xbb, 0x81, 0xd5, 0x74, 0x67, 0x50, 0x9b, 0xfa, 0x61, 0x25,
+ 0x8f, 0xe2, 0x1c, 0xc4, 0xff, 0x6d, 0x37, 0x1f, 0xbf, 0x13, 0x56, 0xcd, 0xc5, 0x80, 0xcc, 0xfe,
+ 0x9c, 0x92, 0x9f, 0xc7, 0xb9, 0x48, 0xfc, 0xe3, 0x6d, 0xb6, 0xde, 0x15, 0x2e, 0x27, 0xdd, 0xfa,
+ 0xe2, 0xbb, 0x87, 0xa7, 0x5e, 0x8b, 0x9d, 0xbb, 0x76, 0xcb, 0x0b, 0x4e, 0x37, 0xdc, 0xd1, 0x49,
+ 0x60, 0x6f, 0x4c, 0xba, 0xd8, 0x38, 0xf5, 0x36, 0x02, 0xbf, 0xd7, 0xcd, 0x63, 0x89, 0xfe, 0xf2,
+ 0xa7, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x7f, 0x83, 0x98, 0x9e, 0x19, 0x00, 0x00,
}
diff --git a/task_scheduler/modules/colors.css b/task_scheduler/modules/colors.css
index cb16eb7..0be8952 100644
--- a/task_scheduler/modules/colors.css
+++ b/task_scheduler/modules/colors.css
@@ -12,6 +12,12 @@
--primary-variant: rgb(204, 204, 255);
--on-primary-variant: var(--black);
--link-color: hsl(199, 70%, 40%);
+
+ --color-canceled: rgb(117, 112, 179);
+ --color-failure: rgb(217, 95, 2);
+ --color-in-progress: rgb(248, 230, 180);
+ --color-mishap: rgb(117, 112, 179);
+ --color-success: rgb(209, 228, 188);
}
.darkmode {
--grey-850: #303030;
@@ -27,7 +33,8 @@
--link-color: hsl(199, 70%, 40%);
}
-a,a.visited {
+a,
+a.visited {
color: var(--link-color);
}
@@ -38,4 +45,42 @@
:disabled {
opacity: var(--text-intensity-medium);
-}
\ No newline at end of file
+}
+
+/* Background and foreground colors. */
+.bg-canceled {
+ background-color: var(--color-canceled);
+}
+.bg-failure {
+ background-color: var(--color-failure);
+}
+.bg-in-progress {
+ background-color: var(--color-in-progress);
+}
+.bg-mishap {
+ background-color: var(--color-mishap);
+}
+.bg-success {
+ background-color: var(--color-success);
+}
+
+.fg-canceled {
+ color: var(--color-canceled);
+ fill: var(--color-canceled);
+}
+.fg-failure {
+ color: var(--color-failure);
+ fill: var(--color-failure);
+}
+.fg-in-progress {
+ color: var(--color-in-progress);
+ fill: var(--color-in-progress);
+}
+.fg-mishap {
+ color: var(--color-mishap);
+ fill: var(--color-mishap);
+}
+.fg-success {
+ color: var(--color-success);
+ fill: var(--color-success);
+}
diff --git a/task_scheduler/modules/job-search-sk/index.ts b/task_scheduler/modules/job-search-sk/index.ts
new file mode 100644
index 0000000..17b4a60
--- /dev/null
+++ b/task_scheduler/modules/job-search-sk/index.ts
@@ -0,0 +1,2 @@
+import './job-search-sk';
+import './job-search-sk.scss';
diff --git a/task_scheduler/modules/job-search-sk/job-search-sk-demo.html b/task_scheduler/modules/job-search-sk/job-search-sk-demo.html
new file mode 100644
index 0000000..3e64ddb
--- /dev/null
+++ b/task_scheduler/modules/job-search-sk/job-search-sk-demo.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>job-search-sk</title>
+ <meta charset="utf-8" />
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+ </head>
+ <body>
+ <h1>job-search-sk</h1>
+ <job-search-sk></job-search-sk>
+ </body>
+</html>
diff --git a/task_scheduler/modules/job-search-sk/job-search-sk-demo.ts b/task_scheduler/modules/job-search-sk/job-search-sk-demo.ts
new file mode 100644
index 0000000..0d6d5dc
--- /dev/null
+++ b/task_scheduler/modules/job-search-sk/job-search-sk-demo.ts
@@ -0,0 +1,7 @@
+import './index';
+
+import { FakeTaskSchedulerService } from '../rpc-mock';
+import { JobSearchSk } from './job-search-sk';
+
+const ele = <JobSearchSk>document.querySelector('job-search-sk')!;
+ele.rpc = new FakeTaskSchedulerService();
diff --git a/task_scheduler/modules/job-search-sk/job-search-sk.scss b/task_scheduler/modules/job-search-sk/job-search-sk.scss
new file mode 100644
index 0000000..0ee8ff7
--- /dev/null
+++ b/task_scheduler/modules/job-search-sk/job-search-sk.scss
@@ -0,0 +1,39 @@
+@import '../colors';
+
+job-search-sk {
+ th {
+ opacity: inherit;
+ }
+
+ tr.searchTerms {
+ background: inherit;
+ border: 0px;
+ }
+
+ button {
+ cursor: pointer;
+ width: -webkit-fill-available;
+ }
+
+ button.cancel {
+ background-color: var(--color-canceled);
+ }
+
+ button.delete {
+ margin: 0px;
+ padding: 0px;
+ border: 0px;
+ }
+
+ button.search {
+ background-color: var(--secondary);
+ margin: 0px;
+ }
+
+ div.container {
+ background-color: var(--surface);
+ border: 1px solid #eeeeee;
+ margin: 5px;
+ padding: 10px;
+ }
+}
diff --git a/task_scheduler/modules/job-search-sk/job-search-sk.ts b/task_scheduler/modules/job-search-sk/job-search-sk.ts
new file mode 100644
index 0000000..104ba3a
--- /dev/null
+++ b/task_scheduler/modules/job-search-sk/job-search-sk.ts
@@ -0,0 +1,343 @@
+/**
+ * @module modules/job-search-sk
+ * @description <h2><code>job-search-sk</code></h2>
+ *
+ * Provides UI for searching the jobs in the DB.
+ */
+import { define } from 'elements-sk/define';
+import { html } from 'lit-html';
+import { ElementSk } from '../../../infra-sk/modules/ElementSk';
+import { ParamSet, toParamSet, fromParamSet } from 'common-sk/modules/query';
+import {
+ TaskSchedulerService,
+ SearchJobsResponse,
+ SearchJobsRequest,
+ Job,
+ JobStatus,
+} from '../rpc';
+import 'elements-sk/icon/delete-icon-sk';
+import 'elements-sk/styles/buttons';
+import 'elements-sk/styles/table';
+import { $$ } from 'common-sk/modules/dom';
+
+// Names and types of search terms.
+interface DisplaySearchTerm {
+ label: string;
+ type: string;
+}
+
+// TODO(borenet): Find a way not to duplicate the contents of SearchJobRequest.
+const searchTerms: { [key: string]: DisplaySearchTerm } = {
+ name: { label: 'Name', type: 'text' },
+ repo: { label: 'Repo', type: 'text' },
+ revision: { label: 'Revision', type: 'text' },
+ issue: { label: 'Issue', type: 'text' },
+ patchset: { label: 'Patchset', type: 'text' },
+ buildbucketBuildId: { label: 'Buildbucket Build ID', type: 'text' },
+ isForce: { label: 'Manually Triggered', type: 'checkbox' },
+ status: { label: 'Status', type: 'text' },
+ timeStart: { label: 'Start Time', type: 'datetime-local' },
+ timeEnd: { label: 'End Time', type: 'datetime-local' },
+};
+
+// Display parameters for job results.
+interface DisplayJobResult {
+ label: string;
+ class: string;
+}
+
+const jobStatusToLabelAndClass: { [key: string]: DisplayJobResult } = {
+ [JobStatus.JOB_STATUS_IN_PROGRESS]: {
+ label: 'in progress',
+ class: 'bg-in-progress',
+ },
+ [JobStatus.JOB_STATUS_SUCCESS]: {
+ label: 'succeeded',
+ class: 'bg-success',
+ },
+ [JobStatus.JOB_STATUS_FAILURE]: {
+ label: 'failed',
+ class: 'bg-failure',
+ },
+ [JobStatus.JOB_STATUS_MISHAP]: {
+ label: 'mishap',
+ class: 'bg-mishap',
+ },
+ [JobStatus.JOB_STATUS_CANCELED]: {
+ label: 'canceled',
+ class: 'bg-canceled',
+ },
+};
+
+interface SearchTerm {
+ key: string;
+ value: string;
+}
+
+export class JobSearchSk extends ElementSk {
+ private static template = (ele: JobSearchSk) => html`
+ <div class="container">
+ <table class="searchTerms">
+ ${Array.from(ele.searchTerms.values()).map(
+ (term: SearchTerm) => html`
+ <tr class="searchTerms">
+ <th>
+ <label for="${term.key}">
+ ${searchTerms[term.key]!.label}
+ </label>
+ </th>
+ <td>
+ <input
+ .id="${term.key}"
+ .type="${searchTerms[term.key]!.type}"
+ .value="${term.value}"
+ ?checked="${
+ searchTerms[term.key]!.type == 'checkbox' &&
+ term.value == 'true'
+ }"
+ @change="${(ev: Event) => {
+ const input = (<HTMLInputElement>ev.target)!;
+ if (searchTerms[term.key]!.type == 'checkbox') {
+ term.value = input.checked ? 'true' : 'false';
+ } else {
+ term.value = input.value;
+ }
+ ele.updateQuery();
+ }}"
+ >
+ </input>
+ </td>
+ <td>
+ <button class="delete" @click="${() => {
+ ele.searchTerms.delete(term.key);
+ ele._render();
+ ele.updateQuery();
+ }}">
+ <delete-icon-sk></delete-icon-sk>
+ </button>
+ </tr>
+ `
+ )}
+ <tr class="searchTerms">
+ <td>
+ <select
+ @change="${(ev: Event) => {
+ const select = <HTMLSelectElement>ev.target!;
+ const selected = select.value;
+ ele.searchTerms.set(selected, {
+ key: select.value,
+ value: '',
+ });
+ select.selectedIndex = 0;
+ ele._render();
+ ele.updateQuery();
+ // Auto-focus the new input field.
+ const inp = $$<HTMLInputElement>('#' + selected, ele)!;
+ console.log(inp);
+ inp?.focus();
+ }}"
+ >
+ <option disabled selected>Add Search Term</option>
+ ${Object.entries(searchTerms)
+ .filter(([key, _]) => !ele.searchTerms.get(key))
+ .map(
+ ([key, term]) => html`
+ <option .value="${key}">${term.label}</option>
+ `
+ )}
+ </select>
+ </td>
+ <td></td>
+ <td>
+ <button class="search" @click="${ele.search}">Search</button>
+ </td>
+ </tr>
+ </table>
+ </div>
+ ${ele.results && ele.results.length > 0
+ ? html`
+ <div class="container">
+ <table>
+ <tr>
+ <th>ID</th>
+ <th>Name</th>
+ <th>Repo</th>
+ <th>Revision</th>
+ <th>Codereview Link</th>
+ <th>Status</th>
+ <th>Manually Triggered</th>
+ <th>Created At</th>
+ <th>
+ <button class="cancel" @click="${ele.cancelAll}">
+ <delete-icon-sk></delete-icon-sk>
+ Cancel All
+ </button>
+ </th>
+ </tr>
+
+ ${ele.results.map(
+ (job: Job) => html`
+ <tr>
+ <td>
+ <a href="/job/${job.id}" target="_blank">${job.id}</a>
+ </td>
+ <td>${job.name}</td>
+ <td>
+ <a href="${job.repoState?.repo}" target="_blank">
+ ${job.repoState?.repo}
+ </a>
+ </td>
+ <td>
+ <a
+ href="${job.repoState!.repo}/+show/${job.repoState!
+ .revision}"
+ target="_blank"
+ >
+ ${job.repoState!.revision.substring(0, 12)}
+ </a>
+ </td>
+ <td>
+ ${job.repoState?.patch?.issue &&
+ job.repoState?.patch?.patchset &&
+ job.repoState?.patch?.server
+ ? html`
+ <a
+ href="${job.repoState?.patch?.server}/c/${job
+ .repoState?.patch?.issue}/${job.repoState?.patch
+ ?.patchset}"
+ target="_blank"
+ >${job.repoState?.patch?.server}/c/${job.repoState
+ ?.patch?.issue}/${job.repoState?.patch
+ ?.patchset}
+ </a>
+ `
+ : html``}
+ </td>
+ <td class="${jobStatusToLabelAndClass[job.status]!.class}">
+ ${jobStatusToLabelAndClass[job.status]!.label}
+ </td>
+ <td>${job.isForce ? 'true' : 'false'}</td>
+ <td>${job.createdAt}</td>
+ <td>
+ ${job.status === JobStatus.JOB_STATUS_IN_PROGRESS
+ ? html`
+ <button
+ class="cancel"
+ @click="${() => ele.cancel(job)}"
+ >
+ <delete-icon-sk></delete-icon-sk>
+ Cancel
+ </button>
+ `
+ : html``}
+ </td>
+ </tr>
+ `
+ )}
+ </table>
+ </div>
+ `
+ : html``}
+ `;
+
+ private results: Job[] = [];
+ private _rpc: TaskSchedulerService | null = null;
+ private searchTerms: Map<string, SearchTerm> = new Map();
+
+ constructor() {
+ super(JobSearchSk.template);
+ }
+
+ get rpc(): TaskSchedulerService | null {
+ return this._rpc;
+ }
+
+ set rpc(rpc: TaskSchedulerService | null) {
+ this._rpc = rpc;
+ if (this.searchTerms.size > 0) {
+ this.search();
+ }
+ }
+
+ connectedCallback() {
+ super.connectedCallback();
+ if (window.location.search) {
+ const params = toParamSet(window.location.search.substring(1));
+ Object.entries(params).forEach((entry: [string, string[]]) => {
+ const key = entry[0];
+ const value = entry[1][0]; // Just take the first one.
+ this.searchTerms.set(key, {
+ key: key,
+ value: value,
+ });
+ });
+ if (this.rpc) {
+ this.search();
+ }
+ }
+ this._render();
+ }
+
+ private updateQuery() {
+ const params: ParamSet = {};
+ this.searchTerms.forEach((term: SearchTerm) => {
+ params[term.key] = [term.value];
+ });
+ const newUrl =
+ window.location.href.split('?')[0] + '?' + fromParamSet(params);
+ window.history.replaceState('', '', newUrl);
+ }
+
+ private search() {
+ const req: SearchJobsRequest = {
+ buildbucketBuildId: parseInt(
+ this.searchTerms.get('buildbucketBuildId')?.value || '0'
+ ),
+ hasBuildbucketBuildId: !!this.searchTerms.get('buildbucketBuildId'),
+ isForce: this.searchTerms.get('isForce')?.value === 'true',
+ hasIsForce: !!this.searchTerms.get('isForce'),
+ issue: this.searchTerms.get('issue')?.value || '',
+ hasIssue: !!this.searchTerms.get('issue'),
+ name: this.searchTerms.get('name')?.value || '',
+ hasName: !!this.searchTerms.get('name'),
+ patchset: this.searchTerms.get('patchset')?.value || '',
+ hasPatchset: !!this.searchTerms.get('patchset'),
+ repo: this.searchTerms.get('repo')?.value || '',
+ hasRepo: !!this.searchTerms.get('repo'),
+ revision: this.searchTerms.get('revision')?.value || '',
+ hasRevision: !!this.searchTerms.get('revision'),
+ status: (this.searchTerms.get('status')?.value || '') as JobStatus,
+ hasStatus: !!this.searchTerms.get('status'),
+ timeEnd: this.searchTerms.get('timeEnd')?.value || '',
+ hasTimeEnd: !!this.searchTerms.get('timeEnd'),
+ timeStart: this.searchTerms.get('timeStart')?.value || '',
+ hasTimeStart: !!this.searchTerms.get('timeStart'),
+ };
+ this.rpc!.searchJobs(req as SearchJobsRequest).then(
+ (resp: SearchJobsResponse) => {
+ this.results = resp.jobs!;
+ this._render();
+ }
+ );
+ }
+
+ private cancel(job: Job) {
+ this.rpc!.cancelJob({ id: job.id }).then(() => {
+ const result = this.results.find((result: Job) => result.id == job.id);
+ if (result) {
+ result.status = JobStatus.JOB_STATUS_CANCELED;
+ this._render();
+ }
+ });
+ }
+
+ private cancelAll() {
+ this.results.forEach((job: Job) => {
+ if (job.status == JobStatus.JOB_STATUS_IN_PROGRESS) {
+ this.cancel(job);
+ }
+ });
+ }
+}
+
+define('job-search-sk', JobSearchSk);
diff --git a/task_scheduler/modules/job-search-sk/job-search-sk_puppeteer_test.ts b/task_scheduler/modules/job-search-sk/job-search-sk_puppeteer_test.ts
new file mode 100644
index 0000000..4a0919f
--- /dev/null
+++ b/task_scheduler/modules/job-search-sk/job-search-sk_puppeteer_test.ts
@@ -0,0 +1,101 @@
+import * as path from 'path';
+import { expect } from 'chai';
+import {
+ setUpPuppeteerAndDemoPageServer,
+ takeScreenshot,
+} from '../../../puppeteer-tests/util';
+
+describe('job-search-sk', () => {
+ const testBed = setUpPuppeteerAndDemoPageServer(
+ path.join(__dirname, '..', '..', 'webpack.config.ts')
+ );
+
+ beforeEach(async () => {
+ await testBed.page.goto(`${testBed.baseUrl}/dist/job-search-sk.html`);
+ await testBed.page.setViewport({ width: 2200, height: 500 });
+ });
+
+ it('should render the demo page (smoke test)', async () => {
+ expect(await testBed.page.$$('job-search-sk')).to.have.length(1);
+ });
+
+ describe('screenshots', () => {
+ it('select search terms and search', async () => {
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-searching-initial'
+ );
+ await testBed.page.click('select');
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-searching-selecting'
+ );
+ await testBed.page.select('select', 'name');
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-searching-selected'
+ );
+ await testBed.page.type('#name', 'ABCDEF');
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-searching-type'
+ );
+ await testBed.page.click('button.search');
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-searching-results'
+ );
+ });
+
+ it('deletes search terms', async () => {
+ await testBed.page.select('select', 'name');
+ await testBed.page.type('#name', 'ABCDEF');
+ await testBed.page.select('select', 'revision');
+ await testBed.page.type(
+ '#revision',
+ '9883def4f8661f8eec4ccbae2e34d7fcb14bf65d'
+ );
+ await testBed.page.click('button.delete');
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-deleted-search-term'
+ );
+ });
+
+ it('cancels a job', async () => {
+ await testBed.page.click('button.search');
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-cancel-before'
+ );
+ await testBed.page.click('td > button.cancel');
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-cancel-after'
+ );
+ });
+
+ it('cancels all jobs', async () => {
+ await testBed.page.click('button.search');
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-cancel-all-before'
+ );
+ await testBed.page.click('th > button.cancel');
+ await takeScreenshot(
+ testBed.page,
+ 'task-scheduler',
+ 'job-search-sk-cancel-all-after'
+ );
+ });
+ });
+});
diff --git a/task_scheduler/modules/rpc-mock/index.ts b/task_scheduler/modules/rpc-mock/index.ts
index 898899e..d6ebad5 100644
--- a/task_scheduler/modules/rpc-mock/index.ts
+++ b/task_scheduler/modules/rpc-mock/index.ts
@@ -64,11 +64,47 @@
job: job,
});
}
- searchJobs(
- searchJobsRequest: SearchJobsRequest
- ): Promise<SearchJobsResponse> {
- return new Promise((_, reject) => {
- reject('not implemented');
+ searchJobs(req: SearchJobsRequest): Promise<SearchJobsResponse> {
+ console.log(req);
+ const results: Job[] = Object.values(this.jobs).filter((job: Job) => {
+ if (req.hasRepo && job.repoState?.repo != req.repo) {
+ return false;
+ } else if (req.hasRevision && job.repoState?.revision != req.revision) {
+ return false;
+ } else if (req.hasIssue && req.issue != job.repoState!.patch!.issue) {
+ return false;
+ } else if (
+ req.hasPatchset &&
+ req.patchset != job.repoState?.patch?.patchset
+ ) {
+ return false;
+ } else if (req.hasName && job.name != req.name) {
+ return false;
+ } else if (
+ req.hasBuildbucketBuildId &&
+ job.buildbucketBuildId != req.buildbucketBuildId
+ ) {
+ return false;
+ } else if (req.hasStatus && job.status != req.status) {
+ return false;
+ } else if (
+ req.hasTimeStart &&
+ new Date(job.createdAt!).getTime() <= new Date(req.timeStart!).getTime()
+ ) {
+ return false;
+ } else if (
+ req.hasTimeEnd &&
+ new Date(job.createdAt!).getTime() > new Date(req.timeEnd!).getTime()
+ ) {
+ return false;
+ } else if (req.hasIsForce && job.isForce != req.isForce) {
+ return false;
+ }
+ return true;
+ });
+ console.log(results);
+ return Promise.resolve({
+ jobs: results,
});
}
getTask(getTaskRequest: GetTaskRequest): Promise<GetTaskResponse> {
diff --git a/task_scheduler/modules/rpc/rpc.ts b/task_scheduler/modules/rpc/rpc.ts
index 915578d..77912a1 100644
--- a/task_scheduler/modules/rpc/rpc.ts
+++ b/task_scheduler/modules/rpc/rpc.ts
@@ -118,34 +118,73 @@
};
export interface SearchJobsRequest {
- repoState?: RepoState;
buildbucketBuildId: number;
+ hasBuildbucketBuildId: boolean;
isForce: boolean;
+ hasIsForce: boolean;
+ issue: string;
+ hasIssue: boolean;
name: string;
+ hasName: boolean;
+ patchset: string;
+ hasPatchset: boolean;
+ repo: string;
+ hasRepo: boolean;
+ revision: string;
+ hasRevision: boolean;
status: JobStatus;
+ hasStatus: boolean;
timeStart?: string;
+ hasTimeStart: boolean;
timeEnd?: string;
+ hasTimeEnd: boolean;
}
interface SearchJobsRequestJSON {
- repo_state?: RepoStateJSON;
buildbucket_build_id?: number;
+ has_buildbucket_build_id?: boolean;
is_force?: boolean;
+ has_is_force?: boolean;
+ issue?: string;
+ has_issue?: boolean;
name?: string;
+ has_name?: boolean;
+ patchset?: string;
+ has_patchset?: boolean;
+ repo?: string;
+ has_repo?: boolean;
+ revision?: string;
+ has_revision?: boolean;
status?: string;
+ has_status?: boolean;
time_start?: string;
+ has_time_start?: boolean;
time_end?: string;
+ has_time_end?: boolean;
}
const SearchJobsRequestToJSON = (m: SearchJobsRequest): SearchJobsRequestJSON => {
return {
- repo_state: m.repoState && RepoStateToJSON(m.repoState),
buildbucket_build_id: m.buildbucketBuildId,
+ has_buildbucket_build_id: m.hasBuildbucketBuildId,
is_force: m.isForce,
+ has_is_force: m.hasIsForce,
+ issue: m.issue,
+ has_issue: m.hasIssue,
name: m.name,
+ has_name: m.hasName,
+ patchset: m.patchset,
+ has_patchset: m.hasPatchset,
+ repo: m.repo,
+ has_repo: m.hasRepo,
+ revision: m.revision,
+ has_revision: m.hasRevision,
status: m.status,
+ has_status: m.hasStatus,
time_start: m.timeStart,
+ has_time_start: m.hasTimeStart,
time_end: m.timeEnd,
+ has_time_end: m.hasTimeEnd,
};
};
@@ -195,28 +234,67 @@
};
export interface SearchTasksRequest {
- taskKey?: TaskKey;
attempt: number;
+ hasAttempt: boolean;
+ issue: string;
+ hasIssue: boolean;
+ name: string;
+ hasName: boolean;
+ patchset: string;
+ hasPatchset: boolean;
+ repo: string;
+ hasRepo: boolean;
+ revision: string;
+ hasRevision: boolean;
status: TaskStatus;
+ hasStatus: boolean;
timeStart?: string;
+ hasTimeStart: boolean;
timeEnd?: string;
+ hasTimeEnd: boolean;
}
interface SearchTasksRequestJSON {
- task_key?: TaskKeyJSON;
attempt?: number;
+ has_attempt?: boolean;
+ issue?: string;
+ has_issue?: boolean;
+ name?: string;
+ has_name?: boolean;
+ patchset?: string;
+ has_patchset?: boolean;
+ repo?: string;
+ has_repo?: boolean;
+ revision?: string;
+ has_revision?: boolean;
status?: string;
+ has_status?: boolean;
time_start?: string;
+ has_time_start?: boolean;
time_end?: string;
+ has_time_end?: boolean;
}
const SearchTasksRequestToJSON = (m: SearchTasksRequest): SearchTasksRequestJSON => {
return {
- task_key: m.taskKey && TaskKeyToJSON(m.taskKey),
attempt: m.attempt,
+ has_attempt: m.hasAttempt,
+ issue: m.issue,
+ has_issue: m.hasIssue,
+ name: m.name,
+ has_name: m.hasName,
+ patchset: m.patchset,
+ has_patchset: m.hasPatchset,
+ repo: m.repo,
+ has_repo: m.hasRepo,
+ revision: m.revision,
+ has_revision: m.hasRevision,
status: m.status,
+ has_status: m.hasStatus,
time_start: m.timeStart,
+ has_time_start: m.hasTimeStart,
time_end: m.timeEnd,
+ has_time_end: m.hasTimeEnd,
};
};
@@ -364,15 +442,6 @@
server?: string;
}
-const RepoState_PatchToJSON = (m: RepoState_Patch): RepoState_PatchJSON => {
- return {
- issue: m.issue,
- patch_repo: m.patchRepo,
- patchset: m.patchset,
- server: m.server,
- };
-};
-
const JSONToRepoState_Patch = (m: RepoState_PatchJSON): RepoState_Patch => {
return {
issue: m.issue || "",
@@ -394,14 +463,6 @@
revision?: string;
}
-const RepoStateToJSON = (m: RepoState): RepoStateJSON => {
- return {
- patch: m.patch && RepoState_PatchToJSON(m.patch),
- repo: m.repo,
- revision: m.revision,
- };
-};
-
const JSONToRepoState = (m: RepoStateJSON): RepoState => {
return {
patch: m.patch && JSONToRepoState_Patch(m.patch),
@@ -422,14 +483,6 @@
forced_job_id?: string;
}
-const TaskKeyToJSON = (m: TaskKey): TaskKeyJSON => {
- return {
- repo_state: m.repoState && RepoStateToJSON(m.repoState),
- name: m.name,
- forced_job_id: m.forcedJobId,
- };
-};
-
const JSONToTaskKey = (m: TaskKeyJSON): TaskKey => {
return {
repoState: m.repo_state && JSONToRepoState(m.repo_state),