diff --git a/conformance/tests/ot_mark.py b/conformance/tests/ot_mark.py index 18ab5c3f..e33c3657 100644 --- a/conformance/tests/ot_mark.py +++ b/conformance/tests/ot_mark.py @@ -9,7 +9,7 @@ def test_mark_select_label_filter(man): for row in G.query().V("Film:1").as_("a").\ both("films").\ as_("b").\ - select(["a", "b"]): + render({"a" : "$a", "b" : "$b"}): count += 1 if len(row) != 2: errors.append("Incorrect number of marks returned") @@ -32,7 +32,7 @@ def test_mark_select(man): count = 0 for row in G.query().V("Character:1").as_("a").out().as_( - "b").out().as_("c").select(["a", "b", "c"]): + "b").out().as_("c").render({"a": "$a", "b": "$b", "c": "$c"}): count += 1 if len(row) != 3: errors.append("Incorrect number of marks returned") diff --git a/engine/core/statement_compiler.go b/engine/core/statement_compiler.go index 015c7f0a..30333d5f 100644 --- a/engine/core/statement_compiler.go +++ b/engine/core/statement_compiler.go @@ -190,16 +190,8 @@ func (sc *DefaultStmtCompiler) Jump(stmt *gripql.GraphStatement_Jump, ps *gdbi.S } func (sc *DefaultStmtCompiler) Select(stmt *gripql.GraphStatement_Select, ps *gdbi.State) (gdbi.Processor, error) { - switch len(stmt.Select.Marks) { - case 0: - return nil, fmt.Errorf(`"select" statement has an empty list of mark names`) - case 1: - ps.LastType = ps.MarkTypes[stmt.Select.Marks[0]] - return &MarkSelect{stmt.Select.Marks[0]}, nil - default: - ps.LastType = gdbi.SelectionData - return &Selector{stmt.Select.Marks}, nil - } + ps.LastType = ps.MarkTypes[stmt.Select] + return &MarkSelect{stmt.Select}, nil } func (sc *DefaultStmtCompiler) Render(stmt *gripql.GraphStatement_Render, ps *gdbi.State) (gdbi.Processor, error) { diff --git a/engine/pipeline/pipes.go b/engine/pipeline/pipes.go index e9a3ede7..a8436f67 100644 --- a/engine/pipeline/pipes.go +++ b/engine/pipeline/pipes.go @@ -163,45 +163,6 @@ func Convert(graph gdbi.GraphInterface, dataType gdbi.DataType, markTypes map[st }, } - case gdbi.SelectionData: - selections := map[string]*gripql.Selection{} - for k, v := range t.GetSelections() { - vd := v.Get() - switch markTypes[k] { - case gdbi.VertexData: - var ve *gripql.Vertex - if !vd.Loaded { - ve = graph.GetVertex(vd.ID, true).ToVertex() - } else { - ve = vd.ToVertex() - } - selections[k] = &gripql.Selection{ - Result: &gripql.Selection_Vertex{ - Vertex: ve, - }, - } - case gdbi.EdgeData: - var ee *gripql.Edge - if !vd.Loaded { - ee = graph.GetEdge(ee.Gid, true).ToEdge() - } else { - ee = vd.ToEdge() - } - selections[k] = &gripql.Selection{ - Result: &gripql.Selection_Edge{ - Edge: ee, - }, - } - } - } - return &gripql.QueryResult{ - Result: &gripql.QueryResult_Selections{ - Selections: &gripql.Selections{ - Selections: selections, - }, - }, - } - case gdbi.RenderData: sValue, _ := structpb.NewValue(t.GetRender()) return &gripql.QueryResult{ diff --git a/gdbi/statement_processor.go b/gdbi/statement_processor.go index 10ce411c..38730e3e 100644 --- a/gdbi/statement_processor.go +++ b/gdbi/statement_processor.go @@ -194,7 +194,7 @@ func StatementProcessor( return nil, fmt.Errorf(`"select" statement is only valid for edge or vertex types not: %s`, ps.LastType.String()) } out, err := sc.Select(stmt, ps) - ps.LastType = ps.MarkTypes[stmt.Select.Marks[0]] + ps.LastType = ps.MarkTypes[stmt.Select] return out, err case *gripql.GraphStatement_Render: diff --git a/gripql/gripql.pb.go b/gripql/gripql.pb.go index 2664b202..67e7415a 100644 --- a/gripql/gripql.pb.go +++ b/gripql/gripql.pb.go @@ -551,11 +551,11 @@ func (x *GraphStatement) GetAs() string { return "" } -func (x *GraphStatement) GetSelect() *SelectStatement { +func (x *GraphStatement) GetSelect() string { if x, ok := x.GetStatement().(*GraphStatement_Select); ok { return x.Select } - return nil + return "" } func (x *GraphStatement) GetLimit() uint32 { @@ -741,7 +741,7 @@ type GraphStatement_As struct { } type GraphStatement_Select struct { - Select *SelectStatement `protobuf:"bytes,21,opt,name=select,proto3,oneof"` + Select string `protobuf:"bytes,21,opt,name=select,proto3,oneof"` } type GraphStatement_Limit struct { @@ -1761,181 +1761,6 @@ func (x *HasCondition) GetCondition() Condition { return Condition_UNKNOWN_CONDITION } -type SelectStatement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Marks []string `protobuf:"bytes,1,rep,name=marks,proto3" json:"marks,omitempty"` -} - -func (x *SelectStatement) Reset() { - *x = SelectStatement{} - if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SelectStatement) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SelectStatement) ProtoMessage() {} - -func (x *SelectStatement) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SelectStatement.ProtoReflect.Descriptor instead. -func (*SelectStatement) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{18} -} - -func (x *SelectStatement) GetMarks() []string { - if x != nil { - return x.Marks - } - return nil -} - -type Selection struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Result: - // - // *Selection_Vertex - // *Selection_Edge - Result isSelection_Result `protobuf_oneof:"result"` -} - -func (x *Selection) Reset() { - *x = Selection{} - if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Selection) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Selection) ProtoMessage() {} - -func (x *Selection) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Selection.ProtoReflect.Descriptor instead. -func (*Selection) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{19} -} - -func (m *Selection) GetResult() isSelection_Result { - if m != nil { - return m.Result - } - return nil -} - -func (x *Selection) GetVertex() *Vertex { - if x, ok := x.GetResult().(*Selection_Vertex); ok { - return x.Vertex - } - return nil -} - -func (x *Selection) GetEdge() *Edge { - if x, ok := x.GetResult().(*Selection_Edge); ok { - return x.Edge - } - return nil -} - -type isSelection_Result interface { - isSelection_Result() -} - -type Selection_Vertex struct { - Vertex *Vertex `protobuf:"bytes,1,opt,name=vertex,proto3,oneof"` -} - -type Selection_Edge struct { - Edge *Edge `protobuf:"bytes,2,opt,name=edge,proto3,oneof"` -} - -func (*Selection_Vertex) isSelection_Result() {} - -func (*Selection_Edge) isSelection_Result() {} - -type Selections struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Selections map[string]*Selection `protobuf:"bytes,1,rep,name=selections,proto3" json:"selections,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` -} - -func (x *Selections) Reset() { - *x = Selections{} - if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Selections) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Selections) ProtoMessage() {} - -func (x *Selections) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Selections.ProtoReflect.Descriptor instead. -func (*Selections) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{20} -} - -func (x *Selections) GetSelections() map[string]*Selection { - if x != nil { - return x.Selections - } - return nil -} - type Jump struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1949,7 +1774,7 @@ type Jump struct { func (x *Jump) Reset() { *x = Jump{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[21] + mi := &file_gripql_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1962,7 +1787,7 @@ func (x *Jump) String() string { func (*Jump) ProtoMessage() {} func (x *Jump) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[21] + mi := &file_gripql_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1975,7 +1800,7 @@ func (x *Jump) ProtoReflect() protoreflect.Message { // Deprecated: Use Jump.ProtoReflect.Descriptor instead. func (*Jump) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{21} + return file_gripql_proto_rawDescGZIP(), []int{18} } func (x *Jump) GetMark() string { @@ -2011,7 +1836,7 @@ type Set struct { func (x *Set) Reset() { *x = Set{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[22] + mi := &file_gripql_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2024,7 +1849,7 @@ func (x *Set) String() string { func (*Set) ProtoMessage() {} func (x *Set) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[22] + mi := &file_gripql_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2037,7 +1862,7 @@ func (x *Set) ProtoReflect() protoreflect.Message { // Deprecated: Use Set.ProtoReflect.Descriptor instead. func (*Set) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{22} + return file_gripql_proto_rawDescGZIP(), []int{19} } func (x *Set) GetKey() string { @@ -2066,7 +1891,7 @@ type Increment struct { func (x *Increment) Reset() { *x = Increment{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[23] + mi := &file_gripql_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2079,7 +1904,7 @@ func (x *Increment) String() string { func (*Increment) ProtoMessage() {} func (x *Increment) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[23] + mi := &file_gripql_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2092,7 +1917,7 @@ func (x *Increment) ProtoReflect() protoreflect.Message { // Deprecated: Use Increment.ProtoReflect.Descriptor instead. func (*Increment) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{23} + return file_gripql_proto_rawDescGZIP(), []int{20} } func (x *Increment) GetKey() string { @@ -2122,7 +1947,7 @@ type Vertex struct { func (x *Vertex) Reset() { *x = Vertex{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[24] + mi := &file_gripql_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2135,7 +1960,7 @@ func (x *Vertex) String() string { func (*Vertex) ProtoMessage() {} func (x *Vertex) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[24] + mi := &file_gripql_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2148,7 +1973,7 @@ func (x *Vertex) ProtoReflect() protoreflect.Message { // Deprecated: Use Vertex.ProtoReflect.Descriptor instead. func (*Vertex) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{24} + return file_gripql_proto_rawDescGZIP(), []int{21} } func (x *Vertex) GetGid() string { @@ -2187,7 +2012,7 @@ type Edge struct { func (x *Edge) Reset() { *x = Edge{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[25] + mi := &file_gripql_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2200,7 +2025,7 @@ func (x *Edge) String() string { func (*Edge) ProtoMessage() {} func (x *Edge) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[25] + mi := &file_gripql_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2213,7 +2038,7 @@ func (x *Edge) ProtoReflect() protoreflect.Message { // Deprecated: Use Edge.ProtoReflect.Descriptor instead. func (*Edge) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{25} + return file_gripql_proto_rawDescGZIP(), []int{22} } func (x *Edge) GetGid() string { @@ -2261,7 +2086,6 @@ type QueryResult struct { // *QueryResult_Vertex // *QueryResult_Edge // *QueryResult_Aggregations - // *QueryResult_Selections // *QueryResult_Render // *QueryResult_Count // *QueryResult_Path @@ -2271,7 +2095,7 @@ type QueryResult struct { func (x *QueryResult) Reset() { *x = QueryResult{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[26] + mi := &file_gripql_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2284,7 +2108,7 @@ func (x *QueryResult) String() string { func (*QueryResult) ProtoMessage() {} func (x *QueryResult) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[26] + mi := &file_gripql_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2297,7 +2121,7 @@ func (x *QueryResult) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryResult.ProtoReflect.Descriptor instead. func (*QueryResult) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{26} + return file_gripql_proto_rawDescGZIP(), []int{23} } func (m *QueryResult) GetResult() isQueryResult_Result { @@ -2328,13 +2152,6 @@ func (x *QueryResult) GetAggregations() *NamedAggregationResult { return nil } -func (x *QueryResult) GetSelections() *Selections { - if x, ok := x.GetResult().(*QueryResult_Selections); ok { - return x.Selections - } - return nil -} - func (x *QueryResult) GetRender() *structpb.Value { if x, ok := x.GetResult().(*QueryResult_Render); ok { return x.Render @@ -2372,10 +2189,6 @@ type QueryResult_Aggregations struct { Aggregations *NamedAggregationResult `protobuf:"bytes,3,opt,name=aggregations,proto3,oneof"` } -type QueryResult_Selections struct { - Selections *Selections `protobuf:"bytes,4,opt,name=selections,proto3,oneof"` -} - type QueryResult_Render struct { Render *structpb.Value `protobuf:"bytes,5,opt,name=render,proto3,oneof"` } @@ -2394,8 +2207,6 @@ func (*QueryResult_Edge) isQueryResult_Result() {} func (*QueryResult_Aggregations) isQueryResult_Result() {} -func (*QueryResult_Selections) isQueryResult_Result() {} - func (*QueryResult_Render) isQueryResult_Result() {} func (*QueryResult_Count) isQueryResult_Result() {} @@ -2414,7 +2225,7 @@ type QueryJob struct { func (x *QueryJob) Reset() { *x = QueryJob{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[27] + mi := &file_gripql_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2427,7 +2238,7 @@ func (x *QueryJob) String() string { func (*QueryJob) ProtoMessage() {} func (x *QueryJob) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[27] + mi := &file_gripql_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2440,7 +2251,7 @@ func (x *QueryJob) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryJob.ProtoReflect.Descriptor instead. func (*QueryJob) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{27} + return file_gripql_proto_rawDescGZIP(), []int{24} } func (x *QueryJob) GetId() string { @@ -2470,7 +2281,7 @@ type ExtendQuery struct { func (x *ExtendQuery) Reset() { *x = ExtendQuery{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[28] + mi := &file_gripql_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2483,7 +2294,7 @@ func (x *ExtendQuery) String() string { func (*ExtendQuery) ProtoMessage() {} func (x *ExtendQuery) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[28] + mi := &file_gripql_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2496,7 +2307,7 @@ func (x *ExtendQuery) ProtoReflect() protoreflect.Message { // Deprecated: Use ExtendQuery.ProtoReflect.Descriptor instead. func (*ExtendQuery) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{28} + return file_gripql_proto_rawDescGZIP(), []int{25} } func (x *ExtendQuery) GetSrcId() string { @@ -2536,7 +2347,7 @@ type JobStatus struct { func (x *JobStatus) Reset() { *x = JobStatus{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[29] + mi := &file_gripql_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2549,7 +2360,7 @@ func (x *JobStatus) String() string { func (*JobStatus) ProtoMessage() {} func (x *JobStatus) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[29] + mi := &file_gripql_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2562,7 +2373,7 @@ func (x *JobStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use JobStatus.ProtoReflect.Descriptor instead. func (*JobStatus) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{29} + return file_gripql_proto_rawDescGZIP(), []int{26} } func (x *JobStatus) GetId() string { @@ -2618,7 +2429,7 @@ type EditResult struct { func (x *EditResult) Reset() { *x = EditResult{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[30] + mi := &file_gripql_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2631,7 +2442,7 @@ func (x *EditResult) String() string { func (*EditResult) ProtoMessage() {} func (x *EditResult) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[30] + mi := &file_gripql_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2644,7 +2455,7 @@ func (x *EditResult) ProtoReflect() protoreflect.Message { // Deprecated: Use EditResult.ProtoReflect.Descriptor instead. func (*EditResult) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{30} + return file_gripql_proto_rawDescGZIP(), []int{27} } func (x *EditResult) GetId() string { @@ -2666,7 +2477,7 @@ type BulkEditResult struct { func (x *BulkEditResult) Reset() { *x = BulkEditResult{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[31] + mi := &file_gripql_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2679,7 +2490,7 @@ func (x *BulkEditResult) String() string { func (*BulkEditResult) ProtoMessage() {} func (x *BulkEditResult) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[31] + mi := &file_gripql_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2692,7 +2503,7 @@ func (x *BulkEditResult) ProtoReflect() protoreflect.Message { // Deprecated: Use BulkEditResult.ProtoReflect.Descriptor instead. func (*BulkEditResult) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{31} + return file_gripql_proto_rawDescGZIP(), []int{28} } func (x *BulkEditResult) GetInsertCount() int32 { @@ -2722,7 +2533,7 @@ type GraphElement struct { func (x *GraphElement) Reset() { *x = GraphElement{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[32] + mi := &file_gripql_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2735,7 +2546,7 @@ func (x *GraphElement) String() string { func (*GraphElement) ProtoMessage() {} func (x *GraphElement) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[32] + mi := &file_gripql_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2748,7 +2559,7 @@ func (x *GraphElement) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphElement.ProtoReflect.Descriptor instead. func (*GraphElement) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{32} + return file_gripql_proto_rawDescGZIP(), []int{29} } func (x *GraphElement) GetGraph() string { @@ -2783,7 +2594,7 @@ type GraphID struct { func (x *GraphID) Reset() { *x = GraphID{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[33] + mi := &file_gripql_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2796,7 +2607,7 @@ func (x *GraphID) String() string { func (*GraphID) ProtoMessage() {} func (x *GraphID) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[33] + mi := &file_gripql_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2809,7 +2620,7 @@ func (x *GraphID) ProtoReflect() protoreflect.Message { // Deprecated: Use GraphID.ProtoReflect.Descriptor instead. func (*GraphID) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{33} + return file_gripql_proto_rawDescGZIP(), []int{30} } func (x *GraphID) GetGraph() string { @@ -2831,7 +2642,7 @@ type ElementID struct { func (x *ElementID) Reset() { *x = ElementID{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[34] + mi := &file_gripql_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2844,7 +2655,7 @@ func (x *ElementID) String() string { func (*ElementID) ProtoMessage() {} func (x *ElementID) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[34] + mi := &file_gripql_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2857,7 +2668,7 @@ func (x *ElementID) ProtoReflect() protoreflect.Message { // Deprecated: Use ElementID.ProtoReflect.Descriptor instead. func (*ElementID) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{34} + return file_gripql_proto_rawDescGZIP(), []int{31} } func (x *ElementID) GetGraph() string { @@ -2887,7 +2698,7 @@ type IndexID struct { func (x *IndexID) Reset() { *x = IndexID{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[35] + mi := &file_gripql_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2900,7 +2711,7 @@ func (x *IndexID) String() string { func (*IndexID) ProtoMessage() {} func (x *IndexID) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[35] + mi := &file_gripql_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2913,7 +2724,7 @@ func (x *IndexID) ProtoReflect() protoreflect.Message { // Deprecated: Use IndexID.ProtoReflect.Descriptor instead. func (*IndexID) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{35} + return file_gripql_proto_rawDescGZIP(), []int{32} } func (x *IndexID) GetGraph() string { @@ -2948,7 +2759,7 @@ type Timestamp struct { func (x *Timestamp) Reset() { *x = Timestamp{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[36] + mi := &file_gripql_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2961,7 +2772,7 @@ func (x *Timestamp) String() string { func (*Timestamp) ProtoMessage() {} func (x *Timestamp) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[36] + mi := &file_gripql_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2974,7 +2785,7 @@ func (x *Timestamp) ProtoReflect() protoreflect.Message { // Deprecated: Use Timestamp.ProtoReflect.Descriptor instead. func (*Timestamp) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{36} + return file_gripql_proto_rawDescGZIP(), []int{33} } func (x *Timestamp) GetTimestamp() string { @@ -2993,7 +2804,7 @@ type Empty struct { func (x *Empty) Reset() { *x = Empty{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[37] + mi := &file_gripql_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3006,7 +2817,7 @@ func (x *Empty) String() string { func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[37] + mi := &file_gripql_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3019,7 +2830,7 @@ func (x *Empty) ProtoReflect() protoreflect.Message { // Deprecated: Use Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{37} + return file_gripql_proto_rawDescGZIP(), []int{34} } type ListGraphsResponse struct { @@ -3033,7 +2844,7 @@ type ListGraphsResponse struct { func (x *ListGraphsResponse) Reset() { *x = ListGraphsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[38] + mi := &file_gripql_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3046,7 +2857,7 @@ func (x *ListGraphsResponse) String() string { func (*ListGraphsResponse) ProtoMessage() {} func (x *ListGraphsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[38] + mi := &file_gripql_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3059,7 +2870,7 @@ func (x *ListGraphsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListGraphsResponse.ProtoReflect.Descriptor instead. func (*ListGraphsResponse) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{38} + return file_gripql_proto_rawDescGZIP(), []int{35} } func (x *ListGraphsResponse) GetGraphs() []string { @@ -3080,7 +2891,7 @@ type ListIndicesResponse struct { func (x *ListIndicesResponse) Reset() { *x = ListIndicesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[39] + mi := &file_gripql_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3093,7 +2904,7 @@ func (x *ListIndicesResponse) String() string { func (*ListIndicesResponse) ProtoMessage() {} func (x *ListIndicesResponse) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[39] + mi := &file_gripql_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3106,7 +2917,7 @@ func (x *ListIndicesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListIndicesResponse.ProtoReflect.Descriptor instead. func (*ListIndicesResponse) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{39} + return file_gripql_proto_rawDescGZIP(), []int{36} } func (x *ListIndicesResponse) GetIndices() []*IndexID { @@ -3128,7 +2939,7 @@ type ListLabelsResponse struct { func (x *ListLabelsResponse) Reset() { *x = ListLabelsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[40] + mi := &file_gripql_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3141,7 +2952,7 @@ func (x *ListLabelsResponse) String() string { func (*ListLabelsResponse) ProtoMessage() {} func (x *ListLabelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[40] + mi := &file_gripql_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3154,7 +2965,7 @@ func (x *ListLabelsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListLabelsResponse.ProtoReflect.Descriptor instead. func (*ListLabelsResponse) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{40} + return file_gripql_proto_rawDescGZIP(), []int{37} } func (x *ListLabelsResponse) GetVertexLabels() []string { @@ -3185,7 +2996,7 @@ type TableInfo struct { func (x *TableInfo) Reset() { *x = TableInfo{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[41] + mi := &file_gripql_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3198,7 +3009,7 @@ func (x *TableInfo) String() string { func (*TableInfo) ProtoMessage() {} func (x *TableInfo) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[41] + mi := &file_gripql_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3211,7 +3022,7 @@ func (x *TableInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TableInfo.ProtoReflect.Descriptor instead. func (*TableInfo) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{41} + return file_gripql_proto_rawDescGZIP(), []int{38} } func (x *TableInfo) GetSource() string { @@ -3255,7 +3066,7 @@ type PluginConfig struct { func (x *PluginConfig) Reset() { *x = PluginConfig{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[42] + mi := &file_gripql_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3268,7 +3079,7 @@ func (x *PluginConfig) String() string { func (*PluginConfig) ProtoMessage() {} func (x *PluginConfig) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[42] + mi := &file_gripql_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3281,7 +3092,7 @@ func (x *PluginConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginConfig.ProtoReflect.Descriptor instead. func (*PluginConfig) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{42} + return file_gripql_proto_rawDescGZIP(), []int{39} } func (x *PluginConfig) GetName() string { @@ -3317,7 +3128,7 @@ type PluginStatus struct { func (x *PluginStatus) Reset() { *x = PluginStatus{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[43] + mi := &file_gripql_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3330,7 +3141,7 @@ func (x *PluginStatus) String() string { func (*PluginStatus) ProtoMessage() {} func (x *PluginStatus) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[43] + mi := &file_gripql_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3343,7 +3154,7 @@ func (x *PluginStatus) ProtoReflect() protoreflect.Message { // Deprecated: Use PluginStatus.ProtoReflect.Descriptor instead. func (*PluginStatus) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{43} + return file_gripql_proto_rawDescGZIP(), []int{40} } func (x *PluginStatus) GetName() string { @@ -3371,7 +3182,7 @@ type ListDriversResponse struct { func (x *ListDriversResponse) Reset() { *x = ListDriversResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[44] + mi := &file_gripql_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3384,7 +3195,7 @@ func (x *ListDriversResponse) String() string { func (*ListDriversResponse) ProtoMessage() {} func (x *ListDriversResponse) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[44] + mi := &file_gripql_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3397,7 +3208,7 @@ func (x *ListDriversResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListDriversResponse.ProtoReflect.Descriptor instead. func (*ListDriversResponse) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{44} + return file_gripql_proto_rawDescGZIP(), []int{41} } func (x *ListDriversResponse) GetDrivers() []string { @@ -3418,7 +3229,7 @@ type ListPluginsResponse struct { func (x *ListPluginsResponse) Reset() { *x = ListPluginsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_gripql_proto_msgTypes[45] + mi := &file_gripql_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3431,7 +3242,7 @@ func (x *ListPluginsResponse) String() string { func (*ListPluginsResponse) ProtoMessage() {} func (x *ListPluginsResponse) ProtoReflect() protoreflect.Message { - mi := &file_gripql_proto_msgTypes[45] + mi := &file_gripql_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3444,7 +3255,7 @@ func (x *ListPluginsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPluginsResponse.ProtoReflect.Descriptor instead. func (*ListPluginsResponse) Descriptor() ([]byte, []int) { - return file_gripql_proto_rawDescGZIP(), []int{45} + return file_gripql_proto_rawDescGZIP(), []int{42} } func (x *ListPluginsResponse) GetPlugins() []string { @@ -3477,7 +3288,7 @@ var file_gripql_proto_rawDesc = []byte{ 0x65, 0x72, 0x79, 0x22, 0x38, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xba, 0x0b, + 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xa1, 0x0b, 0x0a, 0x0e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, @@ -3518,511 +3329,487 @@ var file_gripql_proto_rawDesc = []byte{ 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x45, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x10, 0x0a, 0x02, 0x61, 0x73, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x61, 0x73, 0x12, 0x31, 0x0a, 0x06, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x69, 0x70, - 0x71, 0x6c, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x18, 0x19, 0x20, 0x01, - 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6b, 0x69, 0x70, 0x12, 0x25, 0x0a, 0x05, 0x72, 0x61, - 0x6e, 0x67, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, - 0x71, 0x6c, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x29, 0x0a, 0x03, 0x68, 0x61, 0x73, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x68, 0x61, 0x73, 0x12, 0x39, 0x0a, 0x09, - 0x68, 0x61, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x61, 0x73, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x73, 0x65, 0x6c, + 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x18, 0x20, 0x01, + 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x04, 0x73, + 0x6b, 0x69, 0x70, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x04, 0x73, 0x6b, 0x69, + 0x70, 0x12, 0x25, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, + 0x00, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x68, 0x61, 0x73, 0x18, + 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, + 0x61, 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, + 0x68, 0x61, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x68, 0x61, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x35, + 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x68, - 0x61, 0x73, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x07, 0x68, 0x61, 0x73, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x68, 0x61, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x33, - 0x0a, 0x06, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x05, 0x68, 0x61, - 0x73, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, - 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x68, + 0x61, 0x73, 0x4b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x06, 0x68, 0x61, 0x73, 0x5f, 0x69, 0x64, 0x18, + 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x12, 0x34, 0x0a, - 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x06, 0x75, 0x6e, 0x77, 0x69, 0x6e, 0x64, 0x18, 0x33, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x75, 0x6e, 0x77, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, - 0x74, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, - 0x6c, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, - 0x52, 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x72, - 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x30, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, - 0x14, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x46, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, - 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x04, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x47, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4a, 0x75, 0x6d, - 0x70, 0x48, 0x00, 0x52, 0x04, 0x6a, 0x75, 0x6d, 0x70, 0x12, 0x1f, 0x0a, 0x03, 0x73, 0x65, 0x74, - 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, - 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x03, 0x73, 0x65, 0x74, 0x12, 0x31, 0x0a, 0x09, 0x69, 0x6e, - 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x48, 0x00, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x0a, - 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x31, 0x0a, 0x05, 0x52, 0x61, - 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x6f, - 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x22, 0x62, 0x0a, - 0x13, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x35, 0x0a, 0x0c, 0x61, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, - 0x61, 0x74, 0x65, 0x52, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x22, 0x45, 0x0a, 0x0c, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x12, 0x35, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, + 0x65, 0x48, 0x00, 0x52, 0x05, 0x68, 0x61, 0x73, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x08, 0x64, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x63, 0x74, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x63, 0x74, 0x12, 0x34, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x32, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x48, 0x00, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x18, 0x0a, 0x06, 0x75, 0x6e, + 0x77, 0x69, 0x6e, 0x64, 0x18, 0x33, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x75, 0x6e, + 0x77, 0x69, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x3c, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x09, + 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x09, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x3e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x3f, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x46, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x22, 0x0a, 0x04, + 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x72, 0x69, + 0x70, 0x71, 0x6c, 0x2e, 0x4a, 0x75, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x04, 0x6a, 0x75, 0x6d, 0x70, + 0x12, 0x1f, 0x0a, 0x03, 0x73, 0x65, 0x74, 0x18, 0x48, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, + 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x48, 0x00, 0x52, 0x03, 0x73, 0x65, + 0x74, 0x12, 0x31, 0x0a, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x49, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x49, 0x6e, + 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x09, 0x69, 0x6e, 0x63, 0x72, 0x65, + 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x0b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x22, 0x31, 0x0a, 0x05, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x74, 0x6f, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x73, 0x74, 0x6f, 0x70, 0x22, 0x62, 0x0a, 0x13, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x12, 0x35, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x61, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xef, 0x02, 0x0a, 0x09, 0x41, 0x67, 0x67, - 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x65, - 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, - 0x6c, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x72, 0x6d, 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x65, 0x72, - 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, - 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, - 0x65, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, - 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x68, 0x69, - 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, - 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x68, - 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x30, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, - 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, - 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, - 0x6c, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x61, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x0f, 0x54, 0x65, - 0x72, 0x6d, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x49, 0x0a, 0x15, 0x50, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x01, 0x52, 0x08, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, - 0x74, 0x73, 0x22, 0x48, 0x0a, 0x14, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x41, - 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x28, 0x0a, 0x10, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x27, 0x0a, 0x0f, 0x54, 0x79, 0x70, 0x65, 0x41, 0x67, - 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, - 0x12, 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x16, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, - 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x45, 0x0a, 0x0c, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x65, 0x52, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, + 0xef, 0x02, 0x0a, 0x09, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x28, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x4c, 0x0a, 0x11, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, - 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0xda, 0x01, 0x0a, 0x0d, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x61, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x03, 0x61, 0x6e, 0x64, - 0x12, 0x2b, 0x0a, 0x02, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, - 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x02, 0x6f, 0x72, 0x12, 0x29, 0x0a, - 0x03, 0x6e, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x69, - 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x6f, 0x74, 0x12, 0x34, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, - 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, - 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0x0a, 0x0c, - 0x48, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x09, - 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x27, 0x0a, - 0x0f, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x05, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x63, 0x0a, 0x09, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x56, 0x65, 0x72, - 0x74, 0x65, 0x78, 0x48, 0x00, 0x52, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, 0x22, 0x0a, - 0x04, 0x65, 0x64, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x72, - 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x48, 0x00, 0x52, 0x04, 0x65, 0x64, 0x67, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0xa2, 0x01, 0x0a, 0x0a, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x42, 0x0a, 0x0a, 0x73, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x50, - 0x0a, 0x0f, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x65, 0x0a, 0x04, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x35, 0x0a, 0x0a, - 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x45, 0x78, 0x70, - 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x04, 0x65, 0x6d, 0x69, 0x74, 0x22, 0x45, 0x0a, 0x03, 0x53, 0x65, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, - 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x05, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x5d, 0x0a, 0x06, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, 0x10, 0x0a, - 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x7f, 0x0a, 0x04, 0x45, 0x64, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, - 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0xdd, 0x02, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x56, 0x65, 0x72, - 0x74, 0x65, 0x78, 0x48, 0x00, 0x52, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, 0x22, 0x0a, - 0x04, 0x65, 0x64, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x72, - 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x48, 0x00, 0x52, 0x04, 0x65, 0x64, 0x67, - 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, - 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, - 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x72, - 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, - 0x00, 0x52, 0x0a, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, - 0x06, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, - 0x16, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, - 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 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, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x48, 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x30, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x22, 0x68, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x12, 0x2c, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, - 0xbb, 0x01, 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, + 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x65, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x54, 0x65, 0x72, 0x6d, 0x41, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x74, 0x65, 0x72, 0x6d, + 0x12, 0x3f, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x50, 0x65, + 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, + 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, + 0x30, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x41, 0x67, 0x67, + 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x30, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x18, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x67, + 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x3b, 0x0a, 0x0f, 0x54, 0x65, 0x72, 0x6d, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, + 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x49, + 0x0a, 0x15, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x69, 0x6c, 0x65, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, + 0x08, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x01, 0x52, + 0x08, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x48, 0x0a, 0x14, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x22, 0x28, 0x0a, 0x10, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x41, 0x67, 0x67, 0x72, + 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x27, 0x0a, + 0x0f, 0x54, 0x79, 0x70, 0x65, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x41, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6c, 0x0a, 0x16, 0x4e, 0x61, + 0x6d, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4c, 0x0a, 0x11, 0x48, 0x61, 0x73, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x37, 0x0a, + 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x45, + 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x78, 0x70, 0x72, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xda, 0x01, 0x0a, 0x0d, 0x48, 0x61, 0x73, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2d, 0x0a, 0x03, 0x61, 0x6e, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, + 0x61, 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, + 0x48, 0x00, 0x52, 0x03, 0x61, 0x6e, 0x64, 0x12, 0x2b, 0x0a, 0x02, 0x6f, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, + 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, + 0x52, 0x02, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x03, 0x6e, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x45, 0x78, + 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x6f, 0x74, 0x12, + 0x34, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, 0x73, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x22, 0x7f, 0x0a, 0x0c, 0x48, 0x61, 0x73, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x2f, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x04, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, + 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, + 0x12, 0x35, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x48, 0x61, + 0x73, 0x45, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, + 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x65, 0x6d, 0x69, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x65, 0x6d, 0x69, 0x74, 0x22, 0x45, 0x0a, 0x03, 0x53, + 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x22, 0x33, 0x0a, 0x09, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 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, 0x05, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x5d, 0x0a, 0x06, 0x56, 0x65, 0x72, 0x74, 0x65, + 0x78, 0x12, 0x10, 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x67, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7f, 0x0a, 0x04, 0x45, 0x64, 0x67, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x67, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x67, 0x69, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa7, 0x02, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x28, 0x0a, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, + 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, + 0x2e, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x48, 0x00, 0x52, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, + 0x78, 0x12, 0x22, 0x0a, 0x04, 0x65, 0x64, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0c, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x48, 0x00, 0x52, + 0x04, 0x65, 0x64, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x0c, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, + 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x41, 0x67, 0x67, 0x72, 0x65, 0x67, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, + 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x06, 0x72, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x16, 0x0a, + 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 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, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, + 0x00, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x30, 0x0a, 0x08, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x12, 0x26, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4a, 0x6f, 0x62, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x16, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x1c, 0x0a, - 0x0a, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x0e, 0x42, - 0x75, 0x6c, 0x6b, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x6e, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x70, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x26, 0x0a, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, - 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, - 0x2e, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x52, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, - 0x20, 0x0a, 0x04, 0x65, 0x64, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, - 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x04, 0x65, 0x64, 0x67, - 0x65, 0x22, 0x1f, 0x0a, 0x07, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x22, 0x31, 0x0a, 0x09, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, + 0x61, 0x70, 0x68, 0x22, 0x68, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x72, 0x63, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x72, 0x63, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, + 0x2c, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0xbb, 0x01, + 0x0a, 0x09, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x12, 0x26, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x2c, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x1c, 0x0a, 0x0a, 0x45, + 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x0e, 0x42, 0x75, 0x6c, + 0x6b, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x69, + 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1f, + 0x0a, 0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x6e, 0x0a, 0x0c, 0x47, 0x72, 0x61, 0x70, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x44, - 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x22, 0x29, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x07, 0x0a, - 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2c, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x73, 0x22, 0x40, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x69, - 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x69, - 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, - 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x44, 0x52, 0x07, 0x69, - 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x22, 0x5a, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, - 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x4c, 0x61, 0x62, 0x65, 0x6c, - 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x64, 0x67, 0x65, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x22, 0xc6, 0x01, 0x0a, 0x09, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x61, 0x70, - 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4d, 0x61, - 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x61, 0x70, 0x1a, - 0x3a, 0x0a, 0x0c, 0x4c, 0x69, 0x6e, 0x6b, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x26, 0x0a, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x56, + 0x65, 0x72, 0x74, 0x65, 0x78, 0x52, 0x06, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, 0x20, 0x0a, + 0x04, 0x65, 0x64, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x72, + 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x67, 0x65, 0x52, 0x04, 0x65, 0x64, 0x67, 0x65, 0x22, + 0x1f, 0x0a, 0x07, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x22, 0x31, 0x0a, 0x09, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, + 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x07, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x44, 0x12, 0x14, + 0x0a, 0x05, 0x67, 0x72, 0x61, 0x70, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x22, 0x29, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x07, 0x0a, 0x05, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2c, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x73, 0x22, 0x40, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x69, 0x6e, 0x64, + 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x72, 0x69, + 0x70, 0x71, 0x6c, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x44, 0x52, 0x07, 0x69, 0x6e, 0x64, + 0x69, 0x63, 0x65, 0x73, 0x22, 0x5a, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x62, 0x65, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x65, + 0x72, 0x74, 0x65, 0x78, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0c, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, + 0x1f, 0x0a, 0x0b, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x64, 0x67, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x22, 0xc6, 0x01, 0x0a, 0x09, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, + 0x65, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x04, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x69, 0x6e, 0x6b, 0x4d, 0x61, 0x70, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6c, 0x69, 0x6e, 0x6b, 0x4d, 0x61, 0x70, 0x1a, 0x3a, 0x0a, + 0x0c, 0x4c, 0x69, 0x6e, 0x6b, 0x4d, 0x61, 0x70, 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, 0xaf, 0x01, 0x0a, 0x0c, 0x50, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0xaf, 0x01, 0x0a, 0x0c, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, - 0x6c, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 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, 0x38, 0x0a, - 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2f, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x44, - 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x07, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x22, 0x2f, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2a, 0xa2, 0x01, 0x0a, 0x09, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, - 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x06, - 0x0a, 0x02, 0x45, 0x51, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x45, 0x51, 0x10, 0x02, 0x12, - 0x06, 0x0a, 0x02, 0x47, 0x54, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x54, 0x45, 0x10, 0x04, - 0x12, 0x06, 0x0a, 0x02, 0x4c, 0x54, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x54, 0x45, 0x10, - 0x06, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x53, 0x49, 0x44, 0x45, 0x10, 0x07, 0x12, 0x0b, 0x0a, - 0x07, 0x4f, 0x55, 0x54, 0x53, 0x49, 0x44, 0x45, 0x10, 0x08, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x45, - 0x54, 0x57, 0x45, 0x45, 0x4e, 0x10, 0x09, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x49, 0x54, 0x48, 0x49, - 0x4e, 0x10, 0x0a, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x10, 0x0b, - 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x0c, 0x2a, 0x49, - 0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x51, 0x55, - 0x45, 0x55, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, - 0x47, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, - 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, - 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x4f, 0x0a, 0x09, 0x46, 0x69, 0x65, - 0x6c, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, - 0x0b, 0x0a, 0x07, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, - 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x41, 0x50, 0x10, 0x04, 0x12, - 0x09, 0x0a, 0x05, 0x41, 0x52, 0x52, 0x41, 0x59, 0x10, 0x05, 0x32, 0xcf, 0x06, 0x0a, 0x05, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x12, 0x5a, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, - 0x6c, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x30, 0x01, - 0x12, 0x55, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, 0x11, 0x2e, - 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, - 0x1a, 0x0e, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, - 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x74, - 0x65, 0x78, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x4f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x45, 0x64, - 0x67, 0x65, 0x12, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x49, 0x44, 0x1a, 0x0c, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, - 0x64, 0x67, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x65, - 0x64, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x57, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, - 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, - 0x71, 0x6c, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x23, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, - 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x4d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x0f, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, - 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x22, 0x20, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x12, 0x4f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0f, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, - 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x22, 0x21, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, - 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x12, 0x4a, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, - 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x5c, 0x0a, - 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x0f, 0x2e, 0x67, - 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x1b, 0x2e, - 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x69, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, 0x0a, 0x4c, - 0x69, 0x73, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, - 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x1a, 0x2e, 0x67, 0x72, 0x69, - 0x70, 0x71, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, - 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x7d, 0x2f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x43, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, - 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x30, 0x01, 0x32, 0xed, 0x04, 0x0a, - 0x03, 0x4a, 0x6f, 0x62, 0x12, 0x50, 0x0a, 0x06, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x12, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x1a, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x4a, 0x6f, 0x62, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, 0x0c, 0x50, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x2f, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x72, 0x69, + 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x64, + 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x22, 0x2f, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2a, 0xa2, 0x01, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x11, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, + 0x5f, 0x43, 0x4f, 0x4e, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, + 0x45, 0x51, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x45, 0x51, 0x10, 0x02, 0x12, 0x06, 0x0a, + 0x02, 0x47, 0x54, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x54, 0x45, 0x10, 0x04, 0x12, 0x06, + 0x0a, 0x02, 0x4c, 0x54, 0x10, 0x05, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x54, 0x45, 0x10, 0x06, 0x12, + 0x0a, 0x0a, 0x06, 0x49, 0x4e, 0x53, 0x49, 0x44, 0x45, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x4f, + 0x55, 0x54, 0x53, 0x49, 0x44, 0x45, 0x10, 0x08, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x45, 0x54, 0x57, + 0x45, 0x45, 0x4e, 0x10, 0x09, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x49, 0x54, 0x48, 0x49, 0x4e, 0x10, + 0x0a, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x10, 0x0b, 0x12, 0x0c, + 0x0a, 0x08, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x53, 0x10, 0x0c, 0x2a, 0x49, 0x0a, 0x08, + 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x51, 0x55, 0x45, 0x55, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, + 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x12, + 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, + 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x4f, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, + 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, + 0x4f, 0x4c, 0x10, 0x03, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x41, 0x50, 0x10, 0x04, 0x12, 0x09, 0x0a, + 0x05, 0x41, 0x52, 0x52, 0x41, 0x59, 0x10, 0x05, 0x32, 0xcf, 0x06, 0x0a, 0x05, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x12, 0x5a, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6c, 0x12, + 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, + 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x55, + 0x0a, 0x09, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, 0x11, 0x2e, 0x67, 0x72, + 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x1a, 0x0e, + 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x22, 0x25, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x12, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, + 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x4f, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x45, 0x64, 0x67, 0x65, + 0x12, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, + 0x74, 0x49, 0x44, 0x1a, 0x0c, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x67, + 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x65, 0x64, 0x67, + 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x57, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, + 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x4d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x0f, 0x2e, 0x67, + 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x0d, 0x2e, + 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x22, 0x20, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, + 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x4f, + 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x67, + 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x0d, 0x2e, + 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x22, 0x21, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, + 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, + 0x4a, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, 0x12, 0x0d, 0x2e, + 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1a, 0x2e, 0x67, + 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x61, 0x70, 0x68, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, + 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x12, 0x5c, 0x0a, 0x0b, 0x4c, + 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, + 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x1b, 0x2e, 0x67, 0x72, + 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x64, 0x69, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, + 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x7d, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x5a, 0x0a, 0x0a, 0x4c, 0x69, 0x73, + 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, + 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x1a, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, + 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, - 0x6a, 0x6f, 0x62, 0x3a, 0x01, 0x2a, 0x12, 0x4e, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, - 0x62, 0x73, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x49, 0x44, 0x1a, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, - 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, - 0x2f, 0x6a, 0x6f, 0x62, 0x30, 0x01, 0x12, 0x5e, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, - 0x61, 0x70, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, - 0x6c, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x27, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x54, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4a, 0x6f, 0x62, 0x12, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4a, - 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, - 0x2a, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x51, 0x0a, 0x06, - 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, - 0x6c, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x22, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, - 0x59, 0x0a, 0x07, 0x56, 0x69, 0x65, 0x77, 0x4a, 0x6f, 0x62, 0x12, 0x10, 0x2e, 0x67, 0x72, 0x69, - 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x1a, 0x13, 0x2e, 0x67, - 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x09, 0x52, 0x65, - 0x73, 0x75, 0x6d, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x13, 0x2e, 0x67, - 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, - 0x2d, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x32, 0xaa, 0x08, 0x0a, - 0x04, 0x45, 0x64, 0x69, 0x74, 0x12, 0x5f, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x56, 0x65, 0x72, 0x74, - 0x65, 0x78, 0x12, 0x14, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, - 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, - 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x28, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x22, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, - 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x3a, 0x06, - 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, 0x59, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x45, 0x64, 0x67, - 0x65, 0x12, 0x14, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, - 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x24, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1e, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, - 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x3a, 0x04, 0x65, 0x64, 0x67, - 0x65, 0x12, 0x4c, 0x0a, 0x07, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x64, 0x64, 0x12, 0x14, 0x2e, 0x67, - 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x42, 0x75, 0x6c, 0x6b, - 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0b, 0x22, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x28, 0x01, 0x12, - 0x4a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0f, 0x2e, 0x67, 0x72, - 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x67, - 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x12, 0x4d, 0x0a, 0x0b, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, - 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x67, 0x72, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x43, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x12, 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, + 0x76, 0x31, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x30, 0x01, 0x32, 0xed, 0x04, 0x0a, 0x03, 0x4a, + 0x6f, 0x62, 0x12, 0x50, 0x0a, 0x06, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x2e, 0x67, + 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x1a, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, + 0x6f, 0x62, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, + 0x62, 0x3a, 0x01, 0x2a, 0x12, 0x4e, 0x0a, 0x08, 0x4c, 0x69, 0x73, 0x74, 0x4a, 0x6f, 0x62, 0x73, + 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, + 0x44, 0x1a, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x4a, 0x6f, 0x62, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, + 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, + 0x6f, 0x62, 0x30, 0x01, 0x12, 0x5e, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x4a, 0x6f, + 0x62, 0x73, 0x12, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, + 0x68, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, + 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x21, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, + 0x01, 0x2a, 0x30, 0x01, 0x12, 0x54, 0x0a, 0x09, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4a, 0x6f, + 0x62, 0x12, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x4a, 0x6f, 0x62, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4a, 0x6f, 0x62, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x51, 0x0a, 0x06, 0x47, 0x65, + 0x74, 0x4a, 0x6f, 0x62, 0x12, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x1a, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, + 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x59, 0x0a, + 0x07, 0x56, 0x69, 0x65, 0x77, 0x4a, 0x6f, 0x62, 0x12, 0x10, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, + 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x69, + 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x2f, 0x7b, + 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x12, 0x60, 0x0a, 0x09, 0x52, 0x65, 0x73, 0x75, + 0x6d, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x13, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x51, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x13, 0x2e, 0x67, 0x72, 0x69, + 0x70, 0x71, 0x6c, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, + 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6a, 0x6f, 0x62, 0x2d, 0x72, + 0x65, 0x73, 0x75, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x30, 0x01, 0x32, 0xaa, 0x08, 0x0a, 0x04, 0x45, + 0x64, 0x69, 0x74, 0x12, 0x5f, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, + 0x12, 0x14, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x45, + 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, + 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x22, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x3a, 0x06, 0x76, 0x65, + 0x72, 0x74, 0x65, 0x78, 0x12, 0x59, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x45, 0x64, 0x67, 0x65, 0x12, + 0x14, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x45, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, + 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1e, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, + 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x3a, 0x04, 0x65, 0x64, 0x67, 0x65, 0x12, + 0x4c, 0x0a, 0x07, 0x42, 0x75, 0x6c, 0x6b, 0x41, 0x64, 0x64, 0x12, 0x14, 0x2e, 0x67, 0x72, 0x69, + 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x42, 0x75, 0x6c, 0x6b, 0x45, 0x64, + 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x11, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, + 0x22, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x28, 0x01, 0x12, 0x4a, 0x0a, + 0x08, 0x41, 0x64, 0x64, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, + 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, + 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x19, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x12, 0x4d, 0x0a, 0x0b, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x47, 0x72, 0x61, 0x70, 0x68, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, + 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, + 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x19, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, + 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x12, 0x5c, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, + 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, - 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, - 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x12, 0x5c, 0x0a, 0x0c, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x12, 0x11, 0x2e, 0x67, 0x72, 0x69, - 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x1a, 0x12, 0x2e, + 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, + 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x76, 0x65, 0x72, 0x74, 0x65, + 0x78, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x58, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x45, 0x64, 0x67, 0x65, 0x12, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, + 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x23, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1d, 0x2a, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x12, 0x5b, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x0f, 0x2e, 0x67, + 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x2a, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x67, - 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x76, 0x65, 0x72, - 0x74, 0x65, 0x78, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x58, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x45, 0x64, 0x67, 0x65, 0x12, 0x11, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, - 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, - 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x23, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, - 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x7b, 0x69, - 0x64, 0x7d, 0x12, 0x5b, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x0f, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x44, 0x1a, - 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x22, 0x1f, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2f, 0x7b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x7d, 0x3a, 0x01, 0x2a, 0x12, - 0x63, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x0f, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x44, 0x1a, - 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x69, - 0x6e, 0x64, 0x65, 0x78, 0x2f, 0x7b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x7d, 0x2f, 0x7b, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x7d, 0x12, 0x53, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x12, 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, - 0x1a, 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, - 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, - 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x3a, 0x01, 0x2a, 0x12, 0x57, 0x0a, 0x0c, 0x53, 0x61, 0x6d, - 0x70, 0x6c, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, - 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x0d, 0x2e, 0x67, 0x72, 0x69, - 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x21, 0x12, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, - 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2d, 0x73, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x12, 0x55, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x12, 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x1a, - 0x12, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, - 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x3a, 0x01, 0x2a, 0x32, 0x82, 0x02, 0x0a, 0x09, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x57, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x14, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x14, 0x2e, 0x67, - 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, - 0x12, 0x4d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, - 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, - 0x4d, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x0d, - 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, - 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x42, 0x1d, - 0x5a, 0x1b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6d, 0x65, - 0x67, 0x2f, 0x67, 0x72, 0x69, 0x70, 0x2f, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x22, 0x2a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x22, 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x2f, 0x7b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x63, 0x0a, + 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x0f, 0x2e, 0x67, + 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x44, 0x1a, 0x12, 0x2e, + 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x2a, 0x27, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x69, 0x6e, 0x64, + 0x65, 0x78, 0x2f, 0x7b, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x7d, 0x2f, 0x7b, 0x66, 0x69, 0x65, 0x6c, + 0x64, 0x7d, 0x12, 0x53, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, + 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x1a, 0x12, + 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x22, 0x18, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x3a, 0x01, 0x2a, 0x12, 0x57, 0x0a, 0x0c, 0x53, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x0f, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, + 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x49, 0x44, 0x1a, 0x0d, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, + 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x12, + 0x1f, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, + 0x68, 0x7d, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x12, 0x55, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0d, + 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x47, 0x72, 0x61, 0x70, 0x68, 0x1a, 0x12, 0x2e, + 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x64, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2f, 0x7b, 0x67, 0x72, 0x61, 0x70, 0x68, 0x7d, 0x2f, 0x6d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x3a, 0x01, 0x2a, 0x32, 0x82, 0x02, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x57, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x72, 0x74, 0x50, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x12, 0x14, 0x2e, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x50, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x1a, 0x14, 0x2e, 0x67, 0x72, 0x69, + 0x70, 0x71, 0x6c, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x4d, + 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x0d, 0x2e, + 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x67, + 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x12, 0x4d, 0x0a, + 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, 0x12, 0x0d, 0x2e, 0x67, + 0x72, 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1b, 0x2e, 0x67, 0x72, + 0x69, 0x70, 0x71, 0x6c, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, + 0x12, 0x0a, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x42, 0x1d, 0x5a, 0x1b, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x62, 0x6d, 0x65, 0x67, 0x2f, + 0x67, 0x72, 0x69, 0x70, 0x2f, 0x67, 0x72, 0x69, 0x70, 0x71, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -4038,7 +3825,7 @@ func file_gripql_proto_rawDescGZIP() []byte { } var file_gripql_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_gripql_proto_msgTypes = make([]protoimpl.MessageInfo, 49) +var file_gripql_proto_msgTypes = make([]protoimpl.MessageInfo, 45) var file_gripql_proto_goTypes = []interface{}{ (Condition)(0), // 0: gripql.Condition (JobState)(0), // 1: gripql.JobState @@ -4061,179 +3848,169 @@ var file_gripql_proto_goTypes = []interface{}{ (*HasExpressionList)(nil), // 18: gripql.HasExpressionList (*HasExpression)(nil), // 19: gripql.HasExpression (*HasCondition)(nil), // 20: gripql.HasCondition - (*SelectStatement)(nil), // 21: gripql.SelectStatement - (*Selection)(nil), // 22: gripql.Selection - (*Selections)(nil), // 23: gripql.Selections - (*Jump)(nil), // 24: gripql.Jump - (*Set)(nil), // 25: gripql.Set - (*Increment)(nil), // 26: gripql.Increment - (*Vertex)(nil), // 27: gripql.Vertex - (*Edge)(nil), // 28: gripql.Edge - (*QueryResult)(nil), // 29: gripql.QueryResult - (*QueryJob)(nil), // 30: gripql.QueryJob - (*ExtendQuery)(nil), // 31: gripql.ExtendQuery - (*JobStatus)(nil), // 32: gripql.JobStatus - (*EditResult)(nil), // 33: gripql.EditResult - (*BulkEditResult)(nil), // 34: gripql.BulkEditResult - (*GraphElement)(nil), // 35: gripql.GraphElement - (*GraphID)(nil), // 36: gripql.GraphID - (*ElementID)(nil), // 37: gripql.ElementID - (*IndexID)(nil), // 38: gripql.IndexID - (*Timestamp)(nil), // 39: gripql.Timestamp - (*Empty)(nil), // 40: gripql.Empty - (*ListGraphsResponse)(nil), // 41: gripql.ListGraphsResponse - (*ListIndicesResponse)(nil), // 42: gripql.ListIndicesResponse - (*ListLabelsResponse)(nil), // 43: gripql.ListLabelsResponse - (*TableInfo)(nil), // 44: gripql.TableInfo - (*PluginConfig)(nil), // 45: gripql.PluginConfig - (*PluginStatus)(nil), // 46: gripql.PluginStatus - (*ListDriversResponse)(nil), // 47: gripql.ListDriversResponse - (*ListPluginsResponse)(nil), // 48: gripql.ListPluginsResponse - nil, // 49: gripql.Selections.SelectionsEntry - nil, // 50: gripql.TableInfo.LinkMapEntry - nil, // 51: gripql.PluginConfig.ConfigEntry - (*structpb.ListValue)(nil), // 52: google.protobuf.ListValue - (*structpb.Value)(nil), // 53: google.protobuf.Value - (*structpb.Struct)(nil), // 54: google.protobuf.Struct + (*Jump)(nil), // 21: gripql.Jump + (*Set)(nil), // 22: gripql.Set + (*Increment)(nil), // 23: gripql.Increment + (*Vertex)(nil), // 24: gripql.Vertex + (*Edge)(nil), // 25: gripql.Edge + (*QueryResult)(nil), // 26: gripql.QueryResult + (*QueryJob)(nil), // 27: gripql.QueryJob + (*ExtendQuery)(nil), // 28: gripql.ExtendQuery + (*JobStatus)(nil), // 29: gripql.JobStatus + (*EditResult)(nil), // 30: gripql.EditResult + (*BulkEditResult)(nil), // 31: gripql.BulkEditResult + (*GraphElement)(nil), // 32: gripql.GraphElement + (*GraphID)(nil), // 33: gripql.GraphID + (*ElementID)(nil), // 34: gripql.ElementID + (*IndexID)(nil), // 35: gripql.IndexID + (*Timestamp)(nil), // 36: gripql.Timestamp + (*Empty)(nil), // 37: gripql.Empty + (*ListGraphsResponse)(nil), // 38: gripql.ListGraphsResponse + (*ListIndicesResponse)(nil), // 39: gripql.ListIndicesResponse + (*ListLabelsResponse)(nil), // 40: gripql.ListLabelsResponse + (*TableInfo)(nil), // 41: gripql.TableInfo + (*PluginConfig)(nil), // 42: gripql.PluginConfig + (*PluginStatus)(nil), // 43: gripql.PluginStatus + (*ListDriversResponse)(nil), // 44: gripql.ListDriversResponse + (*ListPluginsResponse)(nil), // 45: gripql.ListPluginsResponse + nil, // 46: gripql.TableInfo.LinkMapEntry + nil, // 47: gripql.PluginConfig.ConfigEntry + (*structpb.ListValue)(nil), // 48: google.protobuf.ListValue + (*structpb.Value)(nil), // 49: google.protobuf.Value + (*structpb.Struct)(nil), // 50: google.protobuf.Struct } var file_gripql_proto_depIdxs = []int32{ - 27, // 0: gripql.Graph.vertices:type_name -> gripql.Vertex - 28, // 1: gripql.Graph.edges:type_name -> gripql.Edge - 6, // 2: gripql.GraphQuery.query:type_name -> gripql.GraphStatement - 6, // 3: gripql.QuerySet.query:type_name -> gripql.GraphStatement - 52, // 4: gripql.GraphStatement.v:type_name -> google.protobuf.ListValue - 52, // 5: gripql.GraphStatement.e:type_name -> google.protobuf.ListValue - 52, // 6: gripql.GraphStatement.in:type_name -> google.protobuf.ListValue - 52, // 7: gripql.GraphStatement.out:type_name -> google.protobuf.ListValue - 52, // 8: gripql.GraphStatement.both:type_name -> google.protobuf.ListValue - 52, // 9: gripql.GraphStatement.in_e:type_name -> google.protobuf.ListValue - 52, // 10: gripql.GraphStatement.out_e:type_name -> google.protobuf.ListValue - 52, // 11: gripql.GraphStatement.both_e:type_name -> google.protobuf.ListValue - 52, // 12: gripql.GraphStatement.in_null:type_name -> google.protobuf.ListValue - 52, // 13: gripql.GraphStatement.out_null:type_name -> google.protobuf.ListValue - 52, // 14: gripql.GraphStatement.in_e_null:type_name -> google.protobuf.ListValue - 52, // 15: gripql.GraphStatement.out_e_null:type_name -> google.protobuf.ListValue - 21, // 16: gripql.GraphStatement.select:type_name -> gripql.SelectStatement - 7, // 17: gripql.GraphStatement.range:type_name -> gripql.Range - 19, // 18: gripql.GraphStatement.has:type_name -> gripql.HasExpression - 52, // 19: gripql.GraphStatement.has_label:type_name -> google.protobuf.ListValue - 52, // 20: gripql.GraphStatement.has_key:type_name -> google.protobuf.ListValue - 52, // 21: gripql.GraphStatement.has_id:type_name -> google.protobuf.ListValue - 52, // 22: gripql.GraphStatement.distinct:type_name -> google.protobuf.ListValue - 52, // 23: gripql.GraphStatement.fields:type_name -> google.protobuf.ListValue - 9, // 24: gripql.GraphStatement.aggregate:type_name -> gripql.Aggregations - 53, // 25: gripql.GraphStatement.render:type_name -> google.protobuf.Value - 52, // 26: gripql.GraphStatement.path:type_name -> google.protobuf.ListValue - 24, // 27: gripql.GraphStatement.jump:type_name -> gripql.Jump - 25, // 28: gripql.GraphStatement.set:type_name -> gripql.Set - 26, // 29: gripql.GraphStatement.increment:type_name -> gripql.Increment - 10, // 30: gripql.AggregationsRequest.aggregations:type_name -> gripql.Aggregate - 10, // 31: gripql.Aggregations.aggregations:type_name -> gripql.Aggregate - 11, // 32: gripql.Aggregate.term:type_name -> gripql.TermAggregation - 12, // 33: gripql.Aggregate.percentile:type_name -> gripql.PercentileAggregation - 13, // 34: gripql.Aggregate.histogram:type_name -> gripql.HistogramAggregation - 14, // 35: gripql.Aggregate.field:type_name -> gripql.FieldAggregation - 15, // 36: gripql.Aggregate.type:type_name -> gripql.TypeAggregation - 16, // 37: gripql.Aggregate.count:type_name -> gripql.CountAggregation - 53, // 38: gripql.NamedAggregationResult.key:type_name -> google.protobuf.Value - 19, // 39: gripql.HasExpressionList.expressions:type_name -> gripql.HasExpression - 18, // 40: gripql.HasExpression.and:type_name -> gripql.HasExpressionList - 18, // 41: gripql.HasExpression.or:type_name -> gripql.HasExpressionList - 19, // 42: gripql.HasExpression.not:type_name -> gripql.HasExpression - 20, // 43: gripql.HasExpression.condition:type_name -> gripql.HasCondition - 53, // 44: gripql.HasCondition.value:type_name -> google.protobuf.Value - 0, // 45: gripql.HasCondition.condition:type_name -> gripql.Condition - 27, // 46: gripql.Selection.vertex:type_name -> gripql.Vertex - 28, // 47: gripql.Selection.edge:type_name -> gripql.Edge - 49, // 48: gripql.Selections.selections:type_name -> gripql.Selections.SelectionsEntry - 19, // 49: gripql.Jump.expression:type_name -> gripql.HasExpression - 53, // 50: gripql.Set.value:type_name -> google.protobuf.Value - 54, // 51: gripql.Vertex.data:type_name -> google.protobuf.Struct - 54, // 52: gripql.Edge.data:type_name -> google.protobuf.Struct - 27, // 53: gripql.QueryResult.vertex:type_name -> gripql.Vertex - 28, // 54: gripql.QueryResult.edge:type_name -> gripql.Edge - 17, // 55: gripql.QueryResult.aggregations:type_name -> gripql.NamedAggregationResult - 23, // 56: gripql.QueryResult.selections:type_name -> gripql.Selections - 53, // 57: gripql.QueryResult.render:type_name -> google.protobuf.Value - 52, // 58: gripql.QueryResult.path:type_name -> google.protobuf.ListValue - 6, // 59: gripql.ExtendQuery.query:type_name -> gripql.GraphStatement - 1, // 60: gripql.JobStatus.state:type_name -> gripql.JobState - 6, // 61: gripql.JobStatus.query:type_name -> gripql.GraphStatement - 27, // 62: gripql.GraphElement.vertex:type_name -> gripql.Vertex - 28, // 63: gripql.GraphElement.edge:type_name -> gripql.Edge - 38, // 64: gripql.ListIndicesResponse.indices:type_name -> gripql.IndexID - 50, // 65: gripql.TableInfo.link_map:type_name -> gripql.TableInfo.LinkMapEntry - 51, // 66: gripql.PluginConfig.config:type_name -> gripql.PluginConfig.ConfigEntry - 22, // 67: gripql.Selections.SelectionsEntry.value:type_name -> gripql.Selection - 4, // 68: gripql.Query.Traversal:input_type -> gripql.GraphQuery - 37, // 69: gripql.Query.GetVertex:input_type -> gripql.ElementID - 37, // 70: gripql.Query.GetEdge:input_type -> gripql.ElementID - 36, // 71: gripql.Query.GetTimestamp:input_type -> gripql.GraphID - 36, // 72: gripql.Query.GetSchema:input_type -> gripql.GraphID - 36, // 73: gripql.Query.GetMapping:input_type -> gripql.GraphID - 40, // 74: gripql.Query.ListGraphs:input_type -> gripql.Empty - 36, // 75: gripql.Query.ListIndices:input_type -> gripql.GraphID - 36, // 76: gripql.Query.ListLabels:input_type -> gripql.GraphID - 40, // 77: gripql.Query.ListTables:input_type -> gripql.Empty - 4, // 78: gripql.Job.Submit:input_type -> gripql.GraphQuery - 36, // 79: gripql.Job.ListJobs:input_type -> gripql.GraphID - 4, // 80: gripql.Job.SearchJobs:input_type -> gripql.GraphQuery - 30, // 81: gripql.Job.DeleteJob:input_type -> gripql.QueryJob - 30, // 82: gripql.Job.GetJob:input_type -> gripql.QueryJob - 30, // 83: gripql.Job.ViewJob:input_type -> gripql.QueryJob - 31, // 84: gripql.Job.ResumeJob:input_type -> gripql.ExtendQuery - 35, // 85: gripql.Edit.AddVertex:input_type -> gripql.GraphElement - 35, // 86: gripql.Edit.AddEdge:input_type -> gripql.GraphElement - 35, // 87: gripql.Edit.BulkAdd:input_type -> gripql.GraphElement - 36, // 88: gripql.Edit.AddGraph:input_type -> gripql.GraphID - 36, // 89: gripql.Edit.DeleteGraph:input_type -> gripql.GraphID - 37, // 90: gripql.Edit.DeleteVertex:input_type -> gripql.ElementID - 37, // 91: gripql.Edit.DeleteEdge:input_type -> gripql.ElementID - 38, // 92: gripql.Edit.AddIndex:input_type -> gripql.IndexID - 38, // 93: gripql.Edit.DeleteIndex:input_type -> gripql.IndexID - 3, // 94: gripql.Edit.AddSchema:input_type -> gripql.Graph - 36, // 95: gripql.Edit.SampleSchema:input_type -> gripql.GraphID - 3, // 96: gripql.Edit.AddMapping:input_type -> gripql.Graph - 45, // 97: gripql.Configure.StartPlugin:input_type -> gripql.PluginConfig - 40, // 98: gripql.Configure.ListPlugins:input_type -> gripql.Empty - 40, // 99: gripql.Configure.ListDrivers:input_type -> gripql.Empty - 29, // 100: gripql.Query.Traversal:output_type -> gripql.QueryResult - 27, // 101: gripql.Query.GetVertex:output_type -> gripql.Vertex - 28, // 102: gripql.Query.GetEdge:output_type -> gripql.Edge - 39, // 103: gripql.Query.GetTimestamp:output_type -> gripql.Timestamp - 3, // 104: gripql.Query.GetSchema:output_type -> gripql.Graph - 3, // 105: gripql.Query.GetMapping:output_type -> gripql.Graph - 41, // 106: gripql.Query.ListGraphs:output_type -> gripql.ListGraphsResponse - 42, // 107: gripql.Query.ListIndices:output_type -> gripql.ListIndicesResponse - 43, // 108: gripql.Query.ListLabels:output_type -> gripql.ListLabelsResponse - 44, // 109: gripql.Query.ListTables:output_type -> gripql.TableInfo - 30, // 110: gripql.Job.Submit:output_type -> gripql.QueryJob - 30, // 111: gripql.Job.ListJobs:output_type -> gripql.QueryJob - 32, // 112: gripql.Job.SearchJobs:output_type -> gripql.JobStatus - 32, // 113: gripql.Job.DeleteJob:output_type -> gripql.JobStatus - 32, // 114: gripql.Job.GetJob:output_type -> gripql.JobStatus - 29, // 115: gripql.Job.ViewJob:output_type -> gripql.QueryResult - 29, // 116: gripql.Job.ResumeJob:output_type -> gripql.QueryResult - 33, // 117: gripql.Edit.AddVertex:output_type -> gripql.EditResult - 33, // 118: gripql.Edit.AddEdge:output_type -> gripql.EditResult - 34, // 119: gripql.Edit.BulkAdd:output_type -> gripql.BulkEditResult - 33, // 120: gripql.Edit.AddGraph:output_type -> gripql.EditResult - 33, // 121: gripql.Edit.DeleteGraph:output_type -> gripql.EditResult - 33, // 122: gripql.Edit.DeleteVertex:output_type -> gripql.EditResult - 33, // 123: gripql.Edit.DeleteEdge:output_type -> gripql.EditResult - 33, // 124: gripql.Edit.AddIndex:output_type -> gripql.EditResult - 33, // 125: gripql.Edit.DeleteIndex:output_type -> gripql.EditResult - 33, // 126: gripql.Edit.AddSchema:output_type -> gripql.EditResult - 3, // 127: gripql.Edit.SampleSchema:output_type -> gripql.Graph - 33, // 128: gripql.Edit.AddMapping:output_type -> gripql.EditResult - 46, // 129: gripql.Configure.StartPlugin:output_type -> gripql.PluginStatus - 48, // 130: gripql.Configure.ListPlugins:output_type -> gripql.ListPluginsResponse - 47, // 131: gripql.Configure.ListDrivers:output_type -> gripql.ListDriversResponse - 100, // [100:132] is the sub-list for method output_type - 68, // [68:100] is the sub-list for method input_type - 68, // [68:68] is the sub-list for extension type_name - 68, // [68:68] is the sub-list for extension extendee - 0, // [0:68] is the sub-list for field type_name + 24, // 0: gripql.Graph.vertices:type_name -> gripql.Vertex + 25, // 1: gripql.Graph.edges:type_name -> gripql.Edge + 6, // 2: gripql.GraphQuery.query:type_name -> gripql.GraphStatement + 6, // 3: gripql.QuerySet.query:type_name -> gripql.GraphStatement + 48, // 4: gripql.GraphStatement.v:type_name -> google.protobuf.ListValue + 48, // 5: gripql.GraphStatement.e:type_name -> google.protobuf.ListValue + 48, // 6: gripql.GraphStatement.in:type_name -> google.protobuf.ListValue + 48, // 7: gripql.GraphStatement.out:type_name -> google.protobuf.ListValue + 48, // 8: gripql.GraphStatement.both:type_name -> google.protobuf.ListValue + 48, // 9: gripql.GraphStatement.in_e:type_name -> google.protobuf.ListValue + 48, // 10: gripql.GraphStatement.out_e:type_name -> google.protobuf.ListValue + 48, // 11: gripql.GraphStatement.both_e:type_name -> google.protobuf.ListValue + 48, // 12: gripql.GraphStatement.in_null:type_name -> google.protobuf.ListValue + 48, // 13: gripql.GraphStatement.out_null:type_name -> google.protobuf.ListValue + 48, // 14: gripql.GraphStatement.in_e_null:type_name -> google.protobuf.ListValue + 48, // 15: gripql.GraphStatement.out_e_null:type_name -> google.protobuf.ListValue + 7, // 16: gripql.GraphStatement.range:type_name -> gripql.Range + 19, // 17: gripql.GraphStatement.has:type_name -> gripql.HasExpression + 48, // 18: gripql.GraphStatement.has_label:type_name -> google.protobuf.ListValue + 48, // 19: gripql.GraphStatement.has_key:type_name -> google.protobuf.ListValue + 48, // 20: gripql.GraphStatement.has_id:type_name -> google.protobuf.ListValue + 48, // 21: gripql.GraphStatement.distinct:type_name -> google.protobuf.ListValue + 48, // 22: gripql.GraphStatement.fields:type_name -> google.protobuf.ListValue + 9, // 23: gripql.GraphStatement.aggregate:type_name -> gripql.Aggregations + 49, // 24: gripql.GraphStatement.render:type_name -> google.protobuf.Value + 48, // 25: gripql.GraphStatement.path:type_name -> google.protobuf.ListValue + 21, // 26: gripql.GraphStatement.jump:type_name -> gripql.Jump + 22, // 27: gripql.GraphStatement.set:type_name -> gripql.Set + 23, // 28: gripql.GraphStatement.increment:type_name -> gripql.Increment + 10, // 29: gripql.AggregationsRequest.aggregations:type_name -> gripql.Aggregate + 10, // 30: gripql.Aggregations.aggregations:type_name -> gripql.Aggregate + 11, // 31: gripql.Aggregate.term:type_name -> gripql.TermAggregation + 12, // 32: gripql.Aggregate.percentile:type_name -> gripql.PercentileAggregation + 13, // 33: gripql.Aggregate.histogram:type_name -> gripql.HistogramAggregation + 14, // 34: gripql.Aggregate.field:type_name -> gripql.FieldAggregation + 15, // 35: gripql.Aggregate.type:type_name -> gripql.TypeAggregation + 16, // 36: gripql.Aggregate.count:type_name -> gripql.CountAggregation + 49, // 37: gripql.NamedAggregationResult.key:type_name -> google.protobuf.Value + 19, // 38: gripql.HasExpressionList.expressions:type_name -> gripql.HasExpression + 18, // 39: gripql.HasExpression.and:type_name -> gripql.HasExpressionList + 18, // 40: gripql.HasExpression.or:type_name -> gripql.HasExpressionList + 19, // 41: gripql.HasExpression.not:type_name -> gripql.HasExpression + 20, // 42: gripql.HasExpression.condition:type_name -> gripql.HasCondition + 49, // 43: gripql.HasCondition.value:type_name -> google.protobuf.Value + 0, // 44: gripql.HasCondition.condition:type_name -> gripql.Condition + 19, // 45: gripql.Jump.expression:type_name -> gripql.HasExpression + 49, // 46: gripql.Set.value:type_name -> google.protobuf.Value + 50, // 47: gripql.Vertex.data:type_name -> google.protobuf.Struct + 50, // 48: gripql.Edge.data:type_name -> google.protobuf.Struct + 24, // 49: gripql.QueryResult.vertex:type_name -> gripql.Vertex + 25, // 50: gripql.QueryResult.edge:type_name -> gripql.Edge + 17, // 51: gripql.QueryResult.aggregations:type_name -> gripql.NamedAggregationResult + 49, // 52: gripql.QueryResult.render:type_name -> google.protobuf.Value + 48, // 53: gripql.QueryResult.path:type_name -> google.protobuf.ListValue + 6, // 54: gripql.ExtendQuery.query:type_name -> gripql.GraphStatement + 1, // 55: gripql.JobStatus.state:type_name -> gripql.JobState + 6, // 56: gripql.JobStatus.query:type_name -> gripql.GraphStatement + 24, // 57: gripql.GraphElement.vertex:type_name -> gripql.Vertex + 25, // 58: gripql.GraphElement.edge:type_name -> gripql.Edge + 35, // 59: gripql.ListIndicesResponse.indices:type_name -> gripql.IndexID + 46, // 60: gripql.TableInfo.link_map:type_name -> gripql.TableInfo.LinkMapEntry + 47, // 61: gripql.PluginConfig.config:type_name -> gripql.PluginConfig.ConfigEntry + 4, // 62: gripql.Query.Traversal:input_type -> gripql.GraphQuery + 34, // 63: gripql.Query.GetVertex:input_type -> gripql.ElementID + 34, // 64: gripql.Query.GetEdge:input_type -> gripql.ElementID + 33, // 65: gripql.Query.GetTimestamp:input_type -> gripql.GraphID + 33, // 66: gripql.Query.GetSchema:input_type -> gripql.GraphID + 33, // 67: gripql.Query.GetMapping:input_type -> gripql.GraphID + 37, // 68: gripql.Query.ListGraphs:input_type -> gripql.Empty + 33, // 69: gripql.Query.ListIndices:input_type -> gripql.GraphID + 33, // 70: gripql.Query.ListLabels:input_type -> gripql.GraphID + 37, // 71: gripql.Query.ListTables:input_type -> gripql.Empty + 4, // 72: gripql.Job.Submit:input_type -> gripql.GraphQuery + 33, // 73: gripql.Job.ListJobs:input_type -> gripql.GraphID + 4, // 74: gripql.Job.SearchJobs:input_type -> gripql.GraphQuery + 27, // 75: gripql.Job.DeleteJob:input_type -> gripql.QueryJob + 27, // 76: gripql.Job.GetJob:input_type -> gripql.QueryJob + 27, // 77: gripql.Job.ViewJob:input_type -> gripql.QueryJob + 28, // 78: gripql.Job.ResumeJob:input_type -> gripql.ExtendQuery + 32, // 79: gripql.Edit.AddVertex:input_type -> gripql.GraphElement + 32, // 80: gripql.Edit.AddEdge:input_type -> gripql.GraphElement + 32, // 81: gripql.Edit.BulkAdd:input_type -> gripql.GraphElement + 33, // 82: gripql.Edit.AddGraph:input_type -> gripql.GraphID + 33, // 83: gripql.Edit.DeleteGraph:input_type -> gripql.GraphID + 34, // 84: gripql.Edit.DeleteVertex:input_type -> gripql.ElementID + 34, // 85: gripql.Edit.DeleteEdge:input_type -> gripql.ElementID + 35, // 86: gripql.Edit.AddIndex:input_type -> gripql.IndexID + 35, // 87: gripql.Edit.DeleteIndex:input_type -> gripql.IndexID + 3, // 88: gripql.Edit.AddSchema:input_type -> gripql.Graph + 33, // 89: gripql.Edit.SampleSchema:input_type -> gripql.GraphID + 3, // 90: gripql.Edit.AddMapping:input_type -> gripql.Graph + 42, // 91: gripql.Configure.StartPlugin:input_type -> gripql.PluginConfig + 37, // 92: gripql.Configure.ListPlugins:input_type -> gripql.Empty + 37, // 93: gripql.Configure.ListDrivers:input_type -> gripql.Empty + 26, // 94: gripql.Query.Traversal:output_type -> gripql.QueryResult + 24, // 95: gripql.Query.GetVertex:output_type -> gripql.Vertex + 25, // 96: gripql.Query.GetEdge:output_type -> gripql.Edge + 36, // 97: gripql.Query.GetTimestamp:output_type -> gripql.Timestamp + 3, // 98: gripql.Query.GetSchema:output_type -> gripql.Graph + 3, // 99: gripql.Query.GetMapping:output_type -> gripql.Graph + 38, // 100: gripql.Query.ListGraphs:output_type -> gripql.ListGraphsResponse + 39, // 101: gripql.Query.ListIndices:output_type -> gripql.ListIndicesResponse + 40, // 102: gripql.Query.ListLabels:output_type -> gripql.ListLabelsResponse + 41, // 103: gripql.Query.ListTables:output_type -> gripql.TableInfo + 27, // 104: gripql.Job.Submit:output_type -> gripql.QueryJob + 27, // 105: gripql.Job.ListJobs:output_type -> gripql.QueryJob + 29, // 106: gripql.Job.SearchJobs:output_type -> gripql.JobStatus + 29, // 107: gripql.Job.DeleteJob:output_type -> gripql.JobStatus + 29, // 108: gripql.Job.GetJob:output_type -> gripql.JobStatus + 26, // 109: gripql.Job.ViewJob:output_type -> gripql.QueryResult + 26, // 110: gripql.Job.ResumeJob:output_type -> gripql.QueryResult + 30, // 111: gripql.Edit.AddVertex:output_type -> gripql.EditResult + 30, // 112: gripql.Edit.AddEdge:output_type -> gripql.EditResult + 31, // 113: gripql.Edit.BulkAdd:output_type -> gripql.BulkEditResult + 30, // 114: gripql.Edit.AddGraph:output_type -> gripql.EditResult + 30, // 115: gripql.Edit.DeleteGraph:output_type -> gripql.EditResult + 30, // 116: gripql.Edit.DeleteVertex:output_type -> gripql.EditResult + 30, // 117: gripql.Edit.DeleteEdge:output_type -> gripql.EditResult + 30, // 118: gripql.Edit.AddIndex:output_type -> gripql.EditResult + 30, // 119: gripql.Edit.DeleteIndex:output_type -> gripql.EditResult + 30, // 120: gripql.Edit.AddSchema:output_type -> gripql.EditResult + 3, // 121: gripql.Edit.SampleSchema:output_type -> gripql.Graph + 30, // 122: gripql.Edit.AddMapping:output_type -> gripql.EditResult + 43, // 123: gripql.Configure.StartPlugin:output_type -> gripql.PluginStatus + 45, // 124: gripql.Configure.ListPlugins:output_type -> gripql.ListPluginsResponse + 44, // 125: gripql.Configure.ListDrivers:output_type -> gripql.ListDriversResponse + 94, // [94:126] is the sub-list for method output_type + 62, // [62:94] is the sub-list for method input_type + 62, // [62:62] is the sub-list for extension type_name + 62, // [62:62] is the sub-list for extension extendee + 0, // [0:62] is the sub-list for field type_name } func init() { file_gripql_proto_init() } @@ -4459,42 +4236,6 @@ func file_gripql_proto_init() { } } file_gripql_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SelectStatement); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gripql_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Selection); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gripql_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Selections); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_gripql_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Jump); i { case 0: return &v.state @@ -4506,7 +4247,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Set); i { case 0: return &v.state @@ -4518,7 +4259,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Increment); i { case 0: return &v.state @@ -4530,7 +4271,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Vertex); i { case 0: return &v.state @@ -4542,7 +4283,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Edge); i { case 0: return &v.state @@ -4554,7 +4295,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryResult); i { case 0: return &v.state @@ -4566,7 +4307,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryJob); i { case 0: return &v.state @@ -4578,7 +4319,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ExtendQuery); i { case 0: return &v.state @@ -4590,7 +4331,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*JobStatus); i { case 0: return &v.state @@ -4602,7 +4343,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EditResult); i { case 0: return &v.state @@ -4614,7 +4355,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BulkEditResult); i { case 0: return &v.state @@ -4626,7 +4367,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GraphElement); i { case 0: return &v.state @@ -4638,7 +4379,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GraphID); i { case 0: return &v.state @@ -4650,7 +4391,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ElementID); i { case 0: return &v.state @@ -4662,7 +4403,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*IndexID); i { case 0: return &v.state @@ -4674,7 +4415,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Timestamp); i { case 0: return &v.state @@ -4686,7 +4427,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Empty); i { case 0: return &v.state @@ -4698,7 +4439,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListGraphsResponse); i { case 0: return &v.state @@ -4710,7 +4451,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListIndicesResponse); i { case 0: return &v.state @@ -4722,7 +4463,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListLabelsResponse); i { case 0: return &v.state @@ -4734,7 +4475,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TableInfo); i { case 0: return &v.state @@ -4746,7 +4487,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PluginConfig); i { case 0: return &v.state @@ -4758,7 +4499,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PluginStatus); i { case 0: return &v.state @@ -4770,7 +4511,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListDriversResponse); i { case 0: return &v.state @@ -4782,7 +4523,7 @@ func file_gripql_proto_init() { return nil } } - file_gripql_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_gripql_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListPluginsResponse); i { case 0: return &v.state @@ -4843,15 +4584,10 @@ func file_gripql_proto_init() { (*HasExpression_Not)(nil), (*HasExpression_Condition)(nil), } - file_gripql_proto_msgTypes[19].OneofWrappers = []interface{}{ - (*Selection_Vertex)(nil), - (*Selection_Edge)(nil), - } - file_gripql_proto_msgTypes[26].OneofWrappers = []interface{}{ + file_gripql_proto_msgTypes[23].OneofWrappers = []interface{}{ (*QueryResult_Vertex)(nil), (*QueryResult_Edge)(nil), (*QueryResult_Aggregations)(nil), - (*QueryResult_Selections)(nil), (*QueryResult_Render)(nil), (*QueryResult_Count)(nil), (*QueryResult_Path)(nil), @@ -4862,7 +4598,7 @@ func file_gripql_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_gripql_proto_rawDesc, NumEnums: 3, - NumMessages: 49, + NumMessages: 45, NumExtensions: 0, NumServices: 4, }, diff --git a/gripql/gripql.proto b/gripql/gripql.proto index 0e990fe9..a192859a 100644 --- a/gripql/gripql.proto +++ b/gripql/gripql.proto @@ -40,7 +40,7 @@ message GraphStatement { google.protobuf.ListValue out_e_null = 19; string as = 20; - SelectStatement select = 21; + string select = 21; uint32 limit = 24; uint32 skip = 25; Range range = 26; @@ -160,21 +160,6 @@ enum Condition { CONTAINS = 12; } -message SelectStatement { - repeated string marks = 1; -} - -message Selection { - oneof result { - Vertex vertex = 1; - Edge edge = 2; - } -} - -message Selections { - map selections = 1; -} - message Jump { string mark = 1; HasExpression expression = 2; @@ -210,7 +195,6 @@ message QueryResult { Vertex vertex = 1; Edge edge = 2; NamedAggregationResult aggregations = 3; - Selections selections = 4; google.protobuf.Value render = 5; uint32 count = 6; google.protobuf.ListValue path = 7; diff --git a/gripql/inspect/inspect.go b/gripql/inspect/inspect.go index ca376824..3ebe89da 100644 --- a/gripql/inspect/inspect.go +++ b/gripql/inspect/inspect.go @@ -88,16 +88,6 @@ func PipelineStepOutputs(stmts []*gripql.GraphStatement) map[string][]string { switch gs.GetStatement().(type) { case *gripql.GraphStatement_Count: onLast = false - case *gripql.GraphStatement_Select: - if onLast { - sel := gs.GetSelect().Marks - for _, s := range sel { - if a, ok := asMap[s]; ok { - out[a] = []string{"*"} - } - } - onLast = false - } case *gripql.GraphStatement_Distinct: //if there is a distinct step, we need to load data, but only for requested fields fields := protoutil.AsStringList(gs.GetDistinct()) diff --git a/gripql/python/gripql/query.py b/gripql/python/gripql/query.py index 62563d0b..2657ba18 100644 --- a/gripql/python/gripql/query.py +++ b/gripql/python/gripql/query.py @@ -232,21 +232,12 @@ def as_(self, name): """ return self.__append({"as": name}) - def select(self, marks): + def select(self, name): """ - Returns rows of marked elements, with one item for each mark. + Move traveler back to a previously marked position - "marks" is a list of mark names. - The rows returned are all combinations of marks, e.g. - [ - [A1, B1], - [A1, B2], - [A2, B1], - [A2, B2], - ] """ - marks = _wrap_str_value(marks) - return self.__append({"select": {"marks": marks}}) + return self.__append({"select": name}) def limit(self, n): """ diff --git a/gripql/query.go b/gripql/query.go index b17c45cd..3f1cb6f2 100644 --- a/gripql/query.go +++ b/gripql/query.go @@ -159,9 +159,8 @@ func (q *Query) As(id string) *Query { } // Select retreieves previously marked elemets -func (q *Query) Select(id ...string) *Query { - idList := SelectStatement{Marks: id} - return q.with(&GraphStatement{Statement: &GraphStatement_Select{&idList}}) +func (q *Query) Select(name string) *Query { + return q.with(&GraphStatement{Statement: &GraphStatement_Select{name}}) } // Fields selects which properties are returned in the result. @@ -280,7 +279,7 @@ func (q *Query) String() string { add("As", stmt.As) case *GraphStatement_Select: - add("Select", stmt.Select.Marks...) + add("Select", stmt.Select) case *GraphStatement_Fields: fields := protoutil.AsStringList(stmt.Fields) diff --git a/gripql/schema/scan.go b/gripql/schema/scan.go index 85e2b257..a6a417c4 100644 --- a/gripql/schema/scan.go +++ b/gripql/schema/scan.go @@ -1,8 +1,6 @@ package schema import ( - "fmt" - "github.com/bmeg/grip/gripql" "github.com/bmeg/grip/log" "github.com/bmeg/grip/util" @@ -60,41 +58,45 @@ func ScanSchema(conn gripql.Client, graph string, sampleCount uint32, exclude [] } } + //TODO: fix this bit eList := []*gripql.Edge{} - for _, elabel := range labelRes.EdgeLabels { - if stringInSlice(elabel, exclude) { - continue - } - log.Infof("Scanning edge %s\n", elabel) - edgeQuery := gripql.E().HasLabel(elabel).Limit(sampleCount).As("edge").Out().Fields().As("to").Select("edge").In().Fields().As("from").Select("edge", "from", "to") - edgeRes, err := conn.Traversal(&gripql.GraphQuery{Graph: graph, Query: edgeQuery.Statements}) - if err == nil { - labelSchema := edgeMap{} - for row := range edgeRes { - sel := row.GetSelections().Selections - edge := sel["edge"].GetEdge() - src := sel["from"].GetVertex() - dst := sel["to"].GetVertex() - ds := gripql.GetDataFieldTypes(edge.Data.AsMap()) - k := edgeKey{to: dst.Label, from: src.Label, label: edge.Label} - if p, ok := labelSchema[k]; ok { - labelSchema[k] = util.MergeMaps(p, ds) - } else { - labelSchema[k] = ds - } + /* + for _, elabel := range labelRes.EdgeLabels { + if stringInSlice(elabel, exclude) { + continue } - for k, v := range labelSchema { - sValue, _ := structpb.NewStruct(v.(map[string]interface{})) - eSchema := &gripql.Edge{ - Gid: fmt.Sprintf("(%s)-%s->(%s)", k.from, k.label, k.to), - Label: k.label, - From: k.from, - To: k.to, - Data: sValue, + log.Infof("Scanning edge %s\n", elabel) + edgeQuery := gripql.E().HasLabel(elabel).Limit(sampleCount).As("edge").Out().Fields().As("to").Select("edge").In().Fields().As("from").Select("edge", "from", "to") + edgeRes, err := conn.Traversal(&gripql.GraphQuery{Graph: graph, Query: edgeQuery.Statements}) + if err == nil { + labelSchema := edgeMap{} + for row := range edgeRes { + sel := row.GetSelections().Selections + edge := sel["edge"].GetEdge() + src := sel["from"].GetVertex() + dst := sel["to"].GetVertex() + ds := gripql.GetDataFieldTypes(edge.Data.AsMap()) + k := edgeKey{to: dst.Label, from: src.Label, label: edge.Label} + if p, ok := labelSchema[k]; ok { + labelSchema[k] = util.MergeMaps(p, ds) + } else { + labelSchema[k] = ds + } + } + for k, v := range labelSchema { + sValue, _ := structpb.NewStruct(v.(map[string]interface{})) + eSchema := &gripql.Edge{ + Gid: fmt.Sprintf("(%s)-%s->(%s)", k.from, k.label, k.to), + Label: k.label, + From: k.from, + To: k.to, + Data: sValue, + } + eList = append(eList, eSchema) } - eList = append(eList, eSchema) } } - } + */ + return &gripql.Graph{Graph: graph, Vertices: vList, Edges: eList}, nil } diff --git a/mongo/compile.go b/mongo/compile.go index 34f84fa2..1b83c1fd 100644 --- a/mongo/compile.go +++ b/mongo/compile.go @@ -666,42 +666,30 @@ func (comp *Compiler) Compile(stmts []*gripql.GraphStatement, opts *gdbi.Compile if lastType != gdbi.VertexData && lastType != gdbi.EdgeData { return &Pipeline{}, fmt.Errorf(`"select" statement is only valid for edge or vertex types not: %s`, lastType.String()) } - switch len(stmt.Select.Marks) { - case 0: - return &Pipeline{}, fmt.Errorf(`"select" statement has an empty list of mark names`) - case 1: - mark := "$marks." + stmt.Select.Marks[0] - switch markTypes[stmt.Select.Marks[0]] { - case gdbi.VertexData: - query = append(query, bson.D{primitive.E{Key: "$project", Value: bson.M{ - "_id": mark + "._id", - "label": mark + ".label", - "data": mark + ".data", - "marks": 1, - "path": "$path", - //"path": bson.M{"$concatArrays": []interface{}{"$path", []bson.M{{"vertex": mark + "._id"}}}}, - }}}) - lastType = gdbi.VertexData - case gdbi.EdgeData: - query = append(query, bson.D{primitive.E{Key: "$project", Value: bson.M{ - "_id": mark + "._id", - "label": mark + ".label", - "from": mark + ".from", - "to": mark + ".to", - "data": mark + ".data", - "marks": 1, - "path": "$path", - //"path": bson.M{"$concatArrays": []interface{}{"$path", []bson.M{{"edge": mark + "._id"}}}}, - }}}) - lastType = gdbi.EdgeData - } - default: - selection := bson.M{} - for _, mark := range stmt.Select.Marks { - selection["marks."+mark] = 1 - } - query = append(query, bson.D{primitive.E{Key: "$project", Value: selection}}) - lastType = gdbi.SelectionData + mark := "$marks." + stmt.Select + switch markTypes[stmt.Select] { + case gdbi.VertexData: + query = append(query, bson.D{primitive.E{Key: "$project", Value: bson.M{ + "_id": mark + "._id", + "label": mark + ".label", + "data": mark + ".data", + "marks": 1, + "path": "$path", + //"path": bson.M{"$concatArrays": []interface{}{"$path", []bson.M{{"vertex": mark + "._id"}}}}, + }}}) + lastType = gdbi.VertexData + case gdbi.EdgeData: + query = append(query, bson.D{primitive.E{Key: "$project", Value: bson.M{ + "_id": mark + "._id", + "label": mark + ".label", + "from": mark + ".from", + "to": mark + ".to", + "data": mark + ".data", + "marks": 1, + "path": "$path", + //"path": bson.M{"$concatArrays": []interface{}{"$path", []bson.M{{"edge": mark + "._id"}}}}, + }}}) + lastType = gdbi.EdgeData } case *gripql.GraphStatement_Render: diff --git a/website/content/docs/queries/operations.md b/website/content/docs/queries/operations.md index 2f36d84c..0c90d310 100644 --- a/website/content/docs/queries/operations.md +++ b/website/content/docs/queries/operations.md @@ -14,11 +14,13 @@ Start query from Vertex ```python G.query().V() ``` + Returns all vertices in graph ```python -G.query().V(["vertex1]") +G.query().V(["vertex1"]) ``` + Returns: ```json {"gid" : "vertex1", "label":"TestVertex", "data":{}} @@ -37,7 +39,7 @@ G.query().E(["edge1"]) ``` Returns: ```json -{"gid" : "edge1", "label":"TestEdge", From: "vertex1", To: "vertex2", data":{}} +{"gid" : "edge1", "label":"TestEdge", "from": "vertex1", "to": "vertex2", "data":{}} ``` @@ -176,9 +178,9 @@ G.query().V().as_("a").out().as_("b") ``` ## .select([names]) -Output previously marked elements +Move traveler to previously marked position ```python -G.query().V().mark("a").out().mark("b").select(["a", "b"]) +G.query().V().mark("a").out().mark("b").select("a") ``` ## .limit(count)