From dd9c993767233cf085fabc5249be055c82ffbad4 Mon Sep 17 00:00:00 2001 From: Jiahe114514 Date: Mon, 1 Sep 2025 10:14:44 +0800 Subject: [PATCH 1/3] feat: add timestamp in getSchedule --- campusapis/teaching/v1/courses.go | 10 +- campusapis/teaching/v1/teaching.pb.go | 1788 +++++++++-------- campusapis/teaching/v1/teaching.proto | 7 +- .../teaching/v1/teaching.swagger.json | 22 +- 4 files changed, 957 insertions(+), 870 deletions(-) diff --git a/campusapis/teaching/v1/courses.go b/campusapis/teaching/v1/courses.go index 228f64d..dbc0ad7 100644 --- a/campusapis/teaching/v1/courses.go +++ b/campusapis/teaching/v1/courses.go @@ -1,10 +1,16 @@ package teachingv1 -import "github.com/hduhelp/api_open_sdk/campusapis/staff" +import ( + "github.com/hduhelp/api_open_sdk/campusapis/staff" + "github.com/hduhelp/api_open_sdk/schoolConst" +) func (x *Courses) ToGetScheduleResponse() *GetScheduleResponse { return &GetScheduleResponse{ - Data: x.GetScheduleResponseCourse(), + Data: &ScheduleResponseData{ + Course: x.GetScheduleResponseCourse(), + SemesterStartTimestamp: schoolConst.SemesterStartTimestamp, + }, } } diff --git a/campusapis/teaching/v1/teaching.pb.go b/campusapis/teaching/v1/teaching.pb.go index fa8b03b..dd8748e 100644 --- a/campusapis/teaching/v1/teaching.pb.go +++ b/campusapis/teaching/v1/teaching.pb.go @@ -115,10 +115,10 @@ func (x *GetScheduleRequest) GetWeekday() int32 { // GetScheduleResponse 课表列表返回体 type GetScheduleResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - Data []*ScheduleResponseCourse `protobuf:"bytes,3,rep,name=data,proto3" json:"data,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Data *ScheduleResponseData `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -167,13 +167,65 @@ func (x *GetScheduleResponse) GetMsg() string { return "" } -func (x *GetScheduleResponse) GetData() []*ScheduleResponseCourse { +func (x *GetScheduleResponse) GetData() *ScheduleResponseData { if x != nil { return x.Data } return nil } +type ScheduleResponseData struct { + state protoimpl.MessageState `protogen:"open.v1"` + SemesterStartTimestamp int64 `protobuf:"varint,1,opt,name=semester_start_timestamp,json=semesterStartTimestamp,proto3" json:"semester_start_timestamp,omitempty"` + Course []*ScheduleResponseCourse `protobuf:"bytes,2,rep,name=course,proto3" json:"course,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ScheduleResponseData) Reset() { + *x = ScheduleResponseData{} + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ScheduleResponseData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ScheduleResponseData) ProtoMessage() {} + +func (x *ScheduleResponseData) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ScheduleResponseData.ProtoReflect.Descriptor instead. +func (*ScheduleResponseData) Descriptor() ([]byte, []int) { + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{2} +} + +func (x *ScheduleResponseData) GetSemesterStartTimestamp() int64 { + if x != nil { + return x.SemesterStartTimestamp + } + return 0 +} + +func (x *ScheduleResponseData) GetCourse() []*ScheduleResponseCourse { + if x != nil { + return x.Course + } + return nil +} + // ScheduleResponseCourse 单课程返回体(如高等数学课) type ScheduleResponseCourse struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -201,7 +253,7 @@ type ScheduleResponseCourse struct { func (x *ScheduleResponseCourse) Reset() { *x = ScheduleResponseCourse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[2] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -213,7 +265,7 @@ func (x *ScheduleResponseCourse) String() string { func (*ScheduleResponseCourse) ProtoMessage() {} func (x *ScheduleResponseCourse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[2] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[3] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -226,7 +278,7 @@ func (x *ScheduleResponseCourse) ProtoReflect() protoreflect.Message { // Deprecated: Use ScheduleResponseCourse.ProtoReflect.Descriptor instead. func (*ScheduleResponseCourse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{2} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{3} } func (x *ScheduleResponseCourse) GetClassID() string { @@ -303,7 +355,7 @@ type Courses struct { func (x *Courses) Reset() { *x = Courses{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[3] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -315,7 +367,7 @@ func (x *Courses) String() string { func (*Courses) ProtoMessage() {} func (x *Courses) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[3] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -328,7 +380,7 @@ func (x *Courses) ProtoReflect() protoreflect.Message { // Deprecated: Use Courses.ProtoReflect.Descriptor instead. func (*Courses) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{3} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{4} } func (x *Courses) GetItems() map[string]*CourseItem { @@ -365,7 +417,7 @@ type CourseItem struct { func (x *CourseItem) Reset() { *x = CourseItem{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[4] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -377,7 +429,7 @@ func (x *CourseItem) String() string { func (*CourseItem) ProtoMessage() {} func (x *CourseItem) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[4] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -390,7 +442,7 @@ func (x *CourseItem) ProtoReflect() protoreflect.Message { // Deprecated: Use CourseItem.ProtoReflect.Descriptor instead. func (*CourseItem) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{4} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{5} } func (x *CourseItem) GetClassID() string { @@ -467,7 +519,7 @@ type Schedule struct { func (x *Schedule) Reset() { *x = Schedule{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[5] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -479,7 +531,7 @@ func (x *Schedule) String() string { func (*Schedule) ProtoMessage() {} func (x *Schedule) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[5] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -492,7 +544,7 @@ func (x *Schedule) ProtoReflect() protoreflect.Message { // Deprecated: Use Schedule.ProtoReflect.Descriptor instead. func (*Schedule) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{5} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{6} } func (x *Schedule) GetItems() map[string]*ScheduleItem { @@ -533,7 +585,7 @@ type ScheduleItem struct { func (x *ScheduleItem) Reset() { *x = ScheduleItem{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[6] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -545,7 +597,7 @@ func (x *ScheduleItem) String() string { func (*ScheduleItem) ProtoMessage() {} func (x *ScheduleItem) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[6] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -558,7 +610,7 @@ func (x *ScheduleItem) ProtoReflect() protoreflect.Message { // Deprecated: Use ScheduleItem.ProtoReflect.Descriptor instead. func (*ScheduleItem) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{6} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{7} } func (x *ScheduleItem) GetWeek() []int32 { @@ -655,7 +707,7 @@ type StaffInfo struct { func (x *StaffInfo) Reset() { *x = StaffInfo{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[7] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -667,7 +719,7 @@ func (x *StaffInfo) String() string { func (*StaffInfo) ProtoMessage() {} func (x *StaffInfo) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[7] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -680,7 +732,7 @@ func (x *StaffInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use StaffInfo.ProtoReflect.Descriptor instead. func (*StaffInfo) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{7} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{8} } func (x *StaffInfo) GetStaffID() string { @@ -716,7 +768,7 @@ type GetScheduleNowResponse struct { func (x *GetScheduleNowResponse) Reset() { *x = GetScheduleNowResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[8] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -728,7 +780,7 @@ func (x *GetScheduleNowResponse) String() string { func (*GetScheduleNowResponse) ProtoMessage() {} func (x *GetScheduleNowResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[8] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -741,7 +793,7 @@ func (x *GetScheduleNowResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScheduleNowResponse.ProtoReflect.Descriptor instead. func (*GetScheduleNowResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{8} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{9} } func (x *GetScheduleNowResponse) GetError() int32 { @@ -790,7 +842,7 @@ type GetScheduleNowResponse_Course struct { func (x *GetScheduleNowResponse_Course) Reset() { *x = GetScheduleNowResponse_Course{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[9] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -802,7 +854,7 @@ func (x *GetScheduleNowResponse_Course) String() string { func (*GetScheduleNowResponse_Course) ProtoMessage() {} func (x *GetScheduleNowResponse_Course) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[9] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -815,7 +867,7 @@ func (x *GetScheduleNowResponse_Course) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScheduleNowResponse_Course.ProtoReflect.Descriptor instead. func (*GetScheduleNowResponse_Course) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{9} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{10} } func (x *GetScheduleNowResponse_Course) GetStartSection() int32 { @@ -886,7 +938,7 @@ type GetScheduleNowV2Response struct { func (x *GetScheduleNowV2Response) Reset() { *x = GetScheduleNowV2Response{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[10] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -898,7 +950,7 @@ func (x *GetScheduleNowV2Response) String() string { func (*GetScheduleNowV2Response) ProtoMessage() {} func (x *GetScheduleNowV2Response) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[10] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -911,7 +963,7 @@ func (x *GetScheduleNowV2Response) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScheduleNowV2Response.ProtoReflect.Descriptor instead. func (*GetScheduleNowV2Response) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{10} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{11} } func (x *GetScheduleNowV2Response) GetError() int32 { @@ -947,7 +999,7 @@ type GetScheduleNowV3Response struct { func (x *GetScheduleNowV3Response) Reset() { *x = GetScheduleNowV3Response{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[11] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -959,7 +1011,7 @@ func (x *GetScheduleNowV3Response) String() string { func (*GetScheduleNowV3Response) ProtoMessage() {} func (x *GetScheduleNowV3Response) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[11] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -972,7 +1024,7 @@ func (x *GetScheduleNowV3Response) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScheduleNowV3Response.ProtoReflect.Descriptor instead. func (*GetScheduleNowV3Response) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{11} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{12} } func (x *GetScheduleNowV3Response) GetError() int32 { @@ -1009,7 +1061,7 @@ type GetGlobalScheduleRequest struct { func (x *GetGlobalScheduleRequest) Reset() { *x = GetGlobalScheduleRequest{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[12] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1021,7 +1073,7 @@ func (x *GetGlobalScheduleRequest) String() string { func (*GetGlobalScheduleRequest) ProtoMessage() {} func (x *GetGlobalScheduleRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[12] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1034,7 +1086,7 @@ func (x *GetGlobalScheduleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGlobalScheduleRequest.ProtoReflect.Descriptor instead. func (*GetGlobalScheduleRequest) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{12} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{13} } func (x *GetGlobalScheduleRequest) GetWeek() int32 { @@ -1063,7 +1115,7 @@ type GetGlobalScheduleResponse struct { func (x *GetGlobalScheduleResponse) Reset() { *x = GetGlobalScheduleResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[13] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1075,7 +1127,7 @@ func (x *GetGlobalScheduleResponse) String() string { func (*GetGlobalScheduleResponse) ProtoMessage() {} func (x *GetGlobalScheduleResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[13] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1088,7 +1140,7 @@ func (x *GetGlobalScheduleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetGlobalScheduleResponse.ProtoReflect.Descriptor instead. func (*GetGlobalScheduleResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{13} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{14} } func (x *GetGlobalScheduleResponse) GetError() int32 { @@ -1138,7 +1190,7 @@ type GlobalSchedule struct { func (x *GlobalSchedule) Reset() { *x = GlobalSchedule{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[14] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1150,7 +1202,7 @@ func (x *GlobalSchedule) String() string { func (*GlobalSchedule) ProtoMessage() {} func (x *GlobalSchedule) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[14] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1163,7 +1215,7 @@ func (x *GlobalSchedule) ProtoReflect() protoreflect.Message { // Deprecated: Use GlobalSchedule.ProtoReflect.Descriptor instead. func (*GlobalSchedule) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{14} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{15} } func (x *GlobalSchedule) GetStaffId() string { @@ -1240,7 +1292,7 @@ type GetClassDetailRequest struct { func (x *GetClassDetailRequest) Reset() { *x = GetClassDetailRequest{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[15] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1252,7 +1304,7 @@ func (x *GetClassDetailRequest) String() string { func (*GetClassDetailRequest) ProtoMessage() {} func (x *GetClassDetailRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[15] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1265,7 +1317,7 @@ func (x *GetClassDetailRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClassDetailRequest.ProtoReflect.Descriptor instead. func (*GetClassDetailRequest) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{15} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{16} } func (x *GetClassDetailRequest) GetClassID() string { @@ -1287,7 +1339,7 @@ type GetClassDetailResponse struct { func (x *GetClassDetailResponse) Reset() { *x = GetClassDetailResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[16] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1299,7 +1351,7 @@ func (x *GetClassDetailResponse) String() string { func (*GetClassDetailResponse) ProtoMessage() {} func (x *GetClassDetailResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[16] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1312,7 +1364,7 @@ func (x *GetClassDetailResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClassDetailResponse.ProtoReflect.Descriptor instead. func (*GetClassDetailResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{16} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{17} } func (x *GetClassDetailResponse) GetError() int32 { @@ -1357,7 +1409,7 @@ type ClassDetail struct { func (x *ClassDetail) Reset() { *x = ClassDetail{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[17] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1369,7 +1421,7 @@ func (x *ClassDetail) String() string { func (*ClassDetail) ProtoMessage() {} func (x *ClassDetail) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[17] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1382,7 +1434,7 @@ func (x *ClassDetail) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassDetail.ProtoReflect.Descriptor instead. func (*ClassDetail) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{17} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{18} } func (x *ClassDetail) GetClassID() string { @@ -1440,7 +1492,7 @@ type GetClassroomsRequest struct { func (x *GetClassroomsRequest) Reset() { *x = GetClassroomsRequest{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[18] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1452,7 +1504,7 @@ func (x *GetClassroomsRequest) String() string { func (*GetClassroomsRequest) ProtoMessage() {} func (x *GetClassroomsRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[18] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1465,7 +1517,7 @@ func (x *GetClassroomsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClassroomsRequest.ProtoReflect.Descriptor instead. func (*GetClassroomsRequest) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{18} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{19} } func (x *GetClassroomsRequest) GetSchoolYear() string { @@ -1496,7 +1548,7 @@ type GetClassroomUsagesRequest struct { func (x *GetClassroomUsagesRequest) Reset() { *x = GetClassroomUsagesRequest{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[19] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1508,7 +1560,7 @@ func (x *GetClassroomUsagesRequest) String() string { func (*GetClassroomUsagesRequest) ProtoMessage() {} func (x *GetClassroomUsagesRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[19] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1521,7 +1573,7 @@ func (x *GetClassroomUsagesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClassroomUsagesRequest.ProtoReflect.Descriptor instead. func (*GetClassroomUsagesRequest) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{19} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{20} } func (x *GetClassroomUsagesRequest) GetSemester() string { @@ -1566,7 +1618,7 @@ type GetUnusedClassroomsRequest struct { func (x *GetUnusedClassroomsRequest) Reset() { *x = GetUnusedClassroomsRequest{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[20] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1578,7 +1630,7 @@ func (x *GetUnusedClassroomsRequest) String() string { func (*GetUnusedClassroomsRequest) ProtoMessage() {} func (x *GetUnusedClassroomsRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[20] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1591,7 +1643,7 @@ func (x *GetUnusedClassroomsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUnusedClassroomsRequest.ProtoReflect.Descriptor instead. func (*GetUnusedClassroomsRequest) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{20} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{21} } func (x *GetUnusedClassroomsRequest) GetSemester() string { @@ -1648,7 +1700,7 @@ type GetClassroomsResponse struct { func (x *GetClassroomsResponse) Reset() { *x = GetClassroomsResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[21] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1660,7 +1712,7 @@ func (x *GetClassroomsResponse) String() string { func (*GetClassroomsResponse) ProtoMessage() {} func (x *GetClassroomsResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[21] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1673,7 +1725,7 @@ func (x *GetClassroomsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClassroomsResponse.ProtoReflect.Descriptor instead. func (*GetClassroomsResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{21} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{22} } func (x *GetClassroomsResponse) GetError() int32 { @@ -1709,7 +1761,7 @@ type GetUnusedClassroomsResponse struct { func (x *GetUnusedClassroomsResponse) Reset() { *x = GetUnusedClassroomsResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[22] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1721,7 +1773,7 @@ func (x *GetUnusedClassroomsResponse) String() string { func (*GetUnusedClassroomsResponse) ProtoMessage() {} func (x *GetUnusedClassroomsResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[22] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1734,7 +1786,7 @@ func (x *GetUnusedClassroomsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUnusedClassroomsResponse.ProtoReflect.Descriptor instead. func (*GetUnusedClassroomsResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{22} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{23} } func (x *GetUnusedClassroomsResponse) GetError() int32 { @@ -1783,7 +1835,7 @@ type Classroom struct { func (x *Classroom) Reset() { *x = Classroom{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[23] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1795,7 +1847,7 @@ func (x *Classroom) String() string { func (*Classroom) ProtoMessage() {} func (x *Classroom) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[23] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1808,7 +1860,7 @@ func (x *Classroom) ProtoReflect() protoreflect.Message { // Deprecated: Use Classroom.ProtoReflect.Descriptor instead. func (*Classroom) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{23} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{24} } func (x *Classroom) GetSemester() int32 { @@ -1880,7 +1932,7 @@ type GetClassroomUsagesResponse struct { func (x *GetClassroomUsagesResponse) Reset() { *x = GetClassroomUsagesResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[24] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1892,7 +1944,7 @@ func (x *GetClassroomUsagesResponse) String() string { func (*GetClassroomUsagesResponse) ProtoMessage() {} func (x *GetClassroomUsagesResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[24] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1905,7 +1957,7 @@ func (x *GetClassroomUsagesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetClassroomUsagesResponse.ProtoReflect.Descriptor instead. func (*GetClassroomUsagesResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{24} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{25} } func (x *GetClassroomUsagesResponse) GetError() int32 { @@ -1952,7 +2004,7 @@ type ClassroomUsage struct { func (x *ClassroomUsage) Reset() { *x = ClassroomUsage{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[25] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1964,7 +2016,7 @@ func (x *ClassroomUsage) String() string { func (*ClassroomUsage) ProtoMessage() {} func (x *ClassroomUsage) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[25] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[26] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1977,7 +2029,7 @@ func (x *ClassroomUsage) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassroomUsage.ProtoReflect.Descriptor instead. func (*ClassroomUsage) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{25} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{26} } func (x *ClassroomUsage) GetClassroom() *Classroom { @@ -2040,7 +2092,7 @@ type ClassQuerySearchRequest struct { func (x *ClassQuerySearchRequest) Reset() { *x = ClassQuerySearchRequest{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[26] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2052,7 +2104,7 @@ func (x *ClassQuerySearchRequest) String() string { func (*ClassQuerySearchRequest) ProtoMessage() {} func (x *ClassQuerySearchRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[26] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2065,7 +2117,7 @@ func (x *ClassQuerySearchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQuerySearchRequest.ProtoReflect.Descriptor instead. func (*ClassQuerySearchRequest) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{26} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{27} } func (x *ClassQuerySearchRequest) GetQuery() string { @@ -2100,7 +2152,7 @@ type ClassQuerySearchResponse struct { func (x *ClassQuerySearchResponse) Reset() { *x = ClassQuerySearchResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[27] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2112,7 +2164,7 @@ func (x *ClassQuerySearchResponse) String() string { func (*ClassQuerySearchResponse) ProtoMessage() {} func (x *ClassQuerySearchResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[27] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2125,7 +2177,7 @@ func (x *ClassQuerySearchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQuerySearchResponse.ProtoReflect.Descriptor instead. func (*ClassQuerySearchResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{27} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{28} } func (x *ClassQuerySearchResponse) GetError() int32 { @@ -2162,7 +2214,7 @@ type ClassQueryInfo struct { func (x *ClassQueryInfo) Reset() { *x = ClassQueryInfo{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[28] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2174,7 +2226,7 @@ func (x *ClassQueryInfo) String() string { func (*ClassQueryInfo) ProtoMessage() {} func (x *ClassQueryInfo) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[28] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2187,7 +2239,7 @@ func (x *ClassQueryInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQueryInfo.ProtoReflect.Descriptor instead. func (*ClassQueryInfo) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{28} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{29} } func (x *ClassQueryInfo) GetClassLast() int64 { @@ -2250,7 +2302,7 @@ type ClassQuerySearchClass struct { func (x *ClassQuerySearchClass) Reset() { *x = ClassQuerySearchClass{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[29] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2262,7 +2314,7 @@ func (x *ClassQuerySearchClass) String() string { func (*ClassQuerySearchClass) ProtoMessage() {} func (x *ClassQuerySearchClass) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[29] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2275,7 +2327,7 @@ func (x *ClassQuerySearchClass) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQuerySearchClass.ProtoReflect.Descriptor instead. func (*ClassQuerySearchClass) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{29} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{30} } func (x *ClassQuerySearchClass) GetCourseID() string { @@ -2408,7 +2460,7 @@ type ClassQueryMapResponse struct { func (x *ClassQueryMapResponse) Reset() { *x = ClassQueryMapResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[30] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2420,7 +2472,7 @@ func (x *ClassQueryMapResponse) String() string { func (*ClassQueryMapResponse) ProtoMessage() {} func (x *ClassQueryMapResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[30] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2433,7 +2485,7 @@ func (x *ClassQueryMapResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQueryMapResponse.ProtoReflect.Descriptor instead. func (*ClassQueryMapResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{30} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{31} } func (x *ClassQueryMapResponse) GetError() int32 { @@ -2466,7 +2518,7 @@ type ClassQueryFavSetRequest struct { func (x *ClassQueryFavSetRequest) Reset() { *x = ClassQueryFavSetRequest{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[31] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2478,7 +2530,7 @@ func (x *ClassQueryFavSetRequest) String() string { func (*ClassQueryFavSetRequest) ProtoMessage() {} func (x *ClassQueryFavSetRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[31] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2491,7 +2543,7 @@ func (x *ClassQueryFavSetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQueryFavSetRequest.ProtoReflect.Descriptor instead. func (*ClassQueryFavSetRequest) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{31} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{32} } func (x *ClassQueryFavSetRequest) GetClasses() []string { @@ -2511,7 +2563,7 @@ type ClassQueryFavSetResponse struct { func (x *ClassQueryFavSetResponse) Reset() { *x = ClassQueryFavSetResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[32] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2523,7 +2575,7 @@ func (x *ClassQueryFavSetResponse) String() string { func (*ClassQueryFavSetResponse) ProtoMessage() {} func (x *ClassQueryFavSetResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[32] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2536,7 +2588,7 @@ func (x *ClassQueryFavSetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQueryFavSetResponse.ProtoReflect.Descriptor instead. func (*ClassQueryFavSetResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{32} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{33} } func (x *ClassQueryFavSetResponse) GetError() int32 { @@ -2564,7 +2616,7 @@ type ClassQueryFavGetResponse struct { func (x *ClassQueryFavGetResponse) Reset() { *x = ClassQueryFavGetResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[33] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2576,7 +2628,7 @@ func (x *ClassQueryFavGetResponse) String() string { func (*ClassQueryFavGetResponse) ProtoMessage() {} func (x *ClassQueryFavGetResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[33] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2589,7 +2641,7 @@ func (x *ClassQueryFavGetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQueryFavGetResponse.ProtoReflect.Descriptor instead. func (*ClassQueryFavGetResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{33} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{34} } func (x *ClassQueryFavGetResponse) GetError() int32 { @@ -2622,7 +2674,7 @@ type ClassQueryGetRequest struct { func (x *ClassQueryGetRequest) Reset() { *x = ClassQueryGetRequest{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[34] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2634,7 +2686,7 @@ func (x *ClassQueryGetRequest) String() string { func (*ClassQueryGetRequest) ProtoMessage() {} func (x *ClassQueryGetRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[34] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[35] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2647,7 +2699,7 @@ func (x *ClassQueryGetRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQueryGetRequest.ProtoReflect.Descriptor instead. func (*ClassQueryGetRequest) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{34} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{35} } func (x *ClassQueryGetRequest) GetClasses() []string { @@ -2668,7 +2720,7 @@ type ClassQueryGetResponse struct { func (x *ClassQueryGetResponse) Reset() { *x = ClassQueryGetResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[35] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2680,7 +2732,7 @@ func (x *ClassQueryGetResponse) String() string { func (*ClassQueryGetResponse) ProtoMessage() {} func (x *ClassQueryGetResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[35] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[36] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2693,7 +2745,7 @@ func (x *ClassQueryGetResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQueryGetResponse.ProtoReflect.Descriptor instead. func (*ClassQueryGetResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{35} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{36} } func (x *ClassQueryGetResponse) GetError() int32 { @@ -2728,7 +2780,7 @@ type ClassQueryFavRankResponse struct { func (x *ClassQueryFavRankResponse) Reset() { *x = ClassQueryFavRankResponse{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[36] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2740,7 +2792,7 @@ func (x *ClassQueryFavRankResponse) String() string { func (*ClassQueryFavRankResponse) ProtoMessage() {} func (x *ClassQueryFavRankResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[36] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[37] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2753,7 +2805,7 @@ func (x *ClassQueryFavRankResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ClassQueryFavRankResponse.ProtoReflect.Descriptor instead. func (*ClassQueryFavRankResponse) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{36} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{37} } func (x *ClassQueryFavRankResponse) GetError() int32 { @@ -2792,7 +2844,7 @@ type ScheduleResponseCourse_StaffInfo struct { func (x *ScheduleResponseCourse_StaffInfo) Reset() { *x = ScheduleResponseCourse_StaffInfo{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[37] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2804,7 +2856,7 @@ func (x *ScheduleResponseCourse_StaffInfo) String() string { func (*ScheduleResponseCourse_StaffInfo) ProtoMessage() {} func (x *ScheduleResponseCourse_StaffInfo) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[37] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[38] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2817,7 +2869,7 @@ func (x *ScheduleResponseCourse_StaffInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ScheduleResponseCourse_StaffInfo.ProtoReflect.Descriptor instead. func (*ScheduleResponseCourse_StaffInfo) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{2, 0} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{3, 0} } func (x *ScheduleResponseCourse_StaffInfo) GetStaffID() string { @@ -2870,7 +2922,7 @@ type ScheduleResponseCourse_ScheduleInfo struct { func (x *ScheduleResponseCourse_ScheduleInfo) Reset() { *x = ScheduleResponseCourse_ScheduleInfo{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[38] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2882,7 +2934,7 @@ func (x *ScheduleResponseCourse_ScheduleInfo) String() string { func (*ScheduleResponseCourse_ScheduleInfo) ProtoMessage() {} func (x *ScheduleResponseCourse_ScheduleInfo) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[38] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[39] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2895,7 +2947,7 @@ func (x *ScheduleResponseCourse_ScheduleInfo) ProtoReflect() protoreflect.Messag // Deprecated: Use ScheduleResponseCourse_ScheduleInfo.ProtoReflect.Descriptor instead. func (*ScheduleResponseCourse_ScheduleInfo) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{2, 1} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{3, 1} } func (x *ScheduleResponseCourse_ScheduleInfo) GetLocation() string { @@ -2980,7 +3032,7 @@ type GetScheduleNowResponse_Data struct { func (x *GetScheduleNowResponse_Data) Reset() { *x = GetScheduleNowResponse_Data{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[41] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2992,7 +3044,7 @@ func (x *GetScheduleNowResponse_Data) String() string { func (*GetScheduleNowResponse_Data) ProtoMessage() {} func (x *GetScheduleNowResponse_Data) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[41] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[42] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3005,7 +3057,7 @@ func (x *GetScheduleNowResponse_Data) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScheduleNowResponse_Data.ProtoReflect.Descriptor instead. func (*GetScheduleNowResponse_Data) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{8, 0} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{9, 0} } func (x *GetScheduleNowResponse_Data) GetToday() []*GetScheduleNowResponse_Course { @@ -3036,7 +3088,7 @@ type GetScheduleNowV2Response_Data struct { func (x *GetScheduleNowV2Response_Data) Reset() { *x = GetScheduleNowV2Response_Data{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[42] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3048,7 +3100,7 @@ func (x *GetScheduleNowV2Response_Data) String() string { func (*GetScheduleNowV2Response_Data) ProtoMessage() {} func (x *GetScheduleNowV2Response_Data) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[42] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[43] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3061,7 +3113,7 @@ func (x *GetScheduleNowV2Response_Data) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScheduleNowV2Response_Data.ProtoReflect.Descriptor instead. func (*GetScheduleNowV2Response_Data) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{10, 0} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{11, 0} } func (x *GetScheduleNowV2Response_Data) GetToday() []*ScheduleResponseCourse { @@ -3096,7 +3148,7 @@ type GetScheduleNowV3Response_Data struct { func (x *GetScheduleNowV3Response_Data) Reset() { *x = GetScheduleNowV3Response_Data{} - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[43] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3108,7 +3160,7 @@ func (x *GetScheduleNowV3Response_Data) String() string { func (*GetScheduleNowV3Response_Data) ProtoMessage() {} func (x *GetScheduleNowV3Response_Data) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[43] + mi := &file_campusapis_teaching_v1_teaching_proto_msgTypes[44] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3121,7 +3173,7 @@ func (x *GetScheduleNowV3Response_Data) ProtoReflect() protoreflect.Message { // Deprecated: Use GetScheduleNowV3Response_Data.ProtoReflect.Descriptor instead. func (*GetScheduleNowV3Response_Data) Descriptor() ([]byte, []int) { - return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{11, 0} + return file_campusapis_teaching_v1_teaching_proto_rawDescGZIP(), []int{12, 0} } func (x *GetScheduleNowV3Response_Data) GetDate() string { @@ -3172,653 +3224,663 @@ var file_campusapis_teaching_v1_teaching_proto_rawDesc = string([]byte{ 0x28, 0x05, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x77, 0x65, 0x65, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x22, 0x81, 0x01, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x42, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x22, 0x7f, 0x0a, 0x13, 0x47, + 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x40, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x98, 0x01, 0x0a, + 0x14, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x38, 0x0a, 0x18, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x46, 0x0a, 0x06, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, + 0x06, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x22, 0xcf, 0x06, 0x0a, 0x16, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x12, 0x57, 0x0a, 0x08, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, + 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x53, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, + 0x65, 0x61, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x53, 0x63, 0x68, 0x6f, 0x6f, + 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x1a, 0x61, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, + 0x0a, 0x07, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x66, + 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, + 0x66, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, + 0x54, 0x79, 0x70, 0x65, 0x1a, 0x92, 0x03, 0x0a, 0x0c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x61, 0x74, 0x73, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x65, 0x61, 0x74, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, + 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, + 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x54, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x63, 0x68, + 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0xcf, 0x06, 0x0a, 0x16, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, - 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x72, - 0x65, 0x64, 0x69, 0x74, 0x12, 0x57, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, + 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x54, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, + 0x08, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x38, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, + 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x53, 0x74, 0x75, 0x64, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x44, + 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x44, 0x61, + 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x54, 0x68, 0x69, 0x73, 0x57, 0x65, 0x65, 0x6b, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, 0x54, 0x68, 0x69, 0x73, 0x57, 0x65, 0x65, + 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x07, 0x43, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x73, 0x12, 0x40, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x73, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x5c, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 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, 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, - 0x08, 0x53, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x53, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x1a, 0x61, 0x0a, 0x09, 0x53, 0x74, 0x61, - 0x66, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, - 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x44, - 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x92, 0x03, 0x0a, - 0x0c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, - 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x61, - 0x74, 0x73, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x65, 0x61, - 0x74, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x54, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, - 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, - 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x54, 0x65, 0x61, - 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x54, 0x0a, 0x08, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x57, - 0x65, 0x65, 0x6b, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x12, - 0x18, 0x0a, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x44, 0x61, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x44, 0x61, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x54, - 0x68, 0x69, 0x73, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, - 0x73, 0x54, 0x68, 0x69, 0x73, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, - 0x65, 0x22, 0xa9, 0x01, 0x0a, 0x07, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x73, 0x12, 0x40, 0x0a, - 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x73, 0x2e, 0x49, 0x74, - 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, - 0x5c, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 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, - 0x38, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x74, - 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf4, 0x02, - 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, - 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x12, 0x41, 0x0a, 0x0a, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, - 0x59, 0x65, 0x61, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x61, 0x6d, - 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x54, 0x69, - 0x6d, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x52, 0x0a, 0x53, - 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x3b, 0x0a, 0x08, 0x53, 0x65, 0x6d, - 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x61, - 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x54, - 0x69, 0x6d, 0x65, 0x2e, 0x53, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x52, 0x08, 0x53, 0x65, - 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, - 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x08, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x12, 0x41, 0x0a, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, + 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf4, 0x02, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, + 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x12, 0x1c, + 0x0a, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x12, 0x41, + 0x0a, 0x0a, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x2e, 0x53, 0x63, 0x68, 0x6f, 0x6f, + 0x6c, 0x59, 0x65, 0x61, 0x72, 0x52, 0x0a, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, + 0x72, 0x12, 0x3b, 0x0a, 0x08, 0x53, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x2e, 0x53, 0x65, 0x6d, 0x65, + 0x73, 0x74, 0x65, 0x72, 0x52, 0x08, 0x53, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x3c, + 0x0a, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, - 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x5e, 0x0a, 0x0a, 0x49, 0x74, 0x65, 0x6d, 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, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, - 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf4, 0x02, 0x0a, 0x0c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x65, - 0x6b, 0x44, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x57, 0x65, 0x65, 0x6b, - 0x44, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, - 0x0a, 0x49, 0x73, 0x54, 0x68, 0x69, 0x73, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0a, 0x49, 0x73, 0x54, 0x68, 0x69, 0x73, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x1c, 0x0a, - 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, - 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, - 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, 0x08, 0x54, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, - 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x4d, - 0x61, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x08, 0x54, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x73, - 0x12, 0x39, 0x0a, 0x08, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x61, 0x70, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x08, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x61, 0x74, 0x73, - 0x4e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x65, 0x61, 0x74, 0x73, - 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x22, 0x5b, 0x0a, 0x09, 0x53, - 0x74, 0x61, 0x66, 0x66, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x66, - 0x66, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x53, 0x74, 0x61, 0x66, 0x66, - 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x22, 0xb2, 0x02, 0x0a, 0x16, 0x47, 0x65, 0x74, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x47, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x61, 0x6d, 0x70, - 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, - 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x1a, 0xa6, 0x01, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4b, 0x0a, - 0x05, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x43, 0x6f, 0x75, - 0x72, 0x73, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x12, 0x51, 0x0a, 0x08, 0x74, 0x6f, - 0x6d, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x43, 0x6f, 0x75, - 0x72, 0x73, 0x65, 0x52, 0x08, 0x74, 0x6f, 0x6d, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x22, 0x94, 0x02, - 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x53, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x18, - 0x0a, 0x07, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd6, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, + 0x6c, 0x65, 0x52, 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x22, 0xad, 0x01, 0x0a, + 0x08, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x41, 0x0a, 0x05, 0x49, 0x74, 0x65, + 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x5e, 0x0a, 0x0a, + 0x49, 0x74, 0x65, 0x6d, 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, 0x3a, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x63, 0x61, + 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x74, 0x65, + 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf4, 0x02, 0x0a, + 0x0c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, + 0x04, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x57, 0x65, 0x65, + 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x44, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x57, 0x65, 0x65, 0x6b, 0x44, 0x61, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x53, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x49, 0x73, 0x54, 0x68, 0x69, 0x73, 0x57, + 0x65, 0x65, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x49, 0x73, 0x54, 0x68, 0x69, + 0x73, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, + 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a, + 0x08, 0x54, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, + 0x66, 0x66, 0x2e, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x61, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x08, + 0x54, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x08, 0x53, 0x74, 0x75, 0x64, + 0x65, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x49, 0x6e, + 0x66, 0x6f, 0x4d, 0x61, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x08, 0x53, 0x74, 0x75, 0x64, 0x65, + 0x6e, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1a, 0x0a, 0x08, 0x53, 0x65, 0x61, 0x74, 0x73, 0x4e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x53, 0x65, 0x61, 0x74, 0x73, 0x4e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x43, + 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x22, 0x5b, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x53, 0x74, 0x61, 0x66, 0x66, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, + 0x61, 0x66, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, + 0x74, 0x61, 0x66, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x43, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, + 0x22, 0xb2, 0x02, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6d, 0x73, 0x67, 0x12, 0x47, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, + 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xa6, 0x01, 0x0a, + 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x4b, 0x0a, 0x05, 0x74, 0x6f, 0x64, 0x61, 0x79, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x05, 0x74, 0x6f, 0x64, + 0x61, 0x79, 0x12, 0x51, 0x0a, 0x08, 0x74, 0x6f, 0x6d, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x08, 0x74, 0x6f, 0x6d, + 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x22, 0x94, 0x02, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, + 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x5f, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, + 0x65, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0a, 0x65, 0x6e, 0x64, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x72, 0x73, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, + 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, + 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xd6, 0x02, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, + 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x12, 0x49, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x49, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, - 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x1a, 0xc6, 0x01, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, - 0x05, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x05, 0x54, 0x6f, - 0x64, 0x61, 0x79, 0x12, 0x4a, 0x0a, 0x08, 0x54, 0x6f, 0x6d, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, - 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x08, 0x54, 0x6f, 0x6d, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x12, - 0x2c, 0x0a, 0x11, 0x48, 0x61, 0x73, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x65, 0x63, 0x65, - 0x6e, 0x74, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x48, 0x61, 0x73, 0x43, - 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x22, 0x95, 0x02, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, - 0x56, 0x33, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, - 0x73, 0x67, 0x12, 0x49, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, + 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0xc6, 0x01, 0x0a, + 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x05, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, + 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x52, 0x05, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x12, 0x4a, 0x0a, 0x08, 0x54, + 0x6f, 0x6d, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, + 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x08, 0x54, + 0x6f, 0x6d, 0x6f, 0x72, 0x72, 0x6f, 0x77, 0x12, 0x2c, 0x0a, 0x11, 0x48, 0x61, 0x73, 0x43, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x52, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x11, 0x48, 0x61, 0x73, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x65, 0x63, + 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x22, 0x95, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, 0x33, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x85, 0x01, - 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, - 0x65, 0x6b, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x65, - 0x6b, 0x64, 0x61, 0x79, 0x12, 0x4f, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x52, 0x07, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x48, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x77, 0x65, 0x65, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x22, - 0x7f, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6d, 0x73, 0x67, 0x12, 0x3a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x22, 0x97, 0x02, 0x0a, 0x0e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, - 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, 0x66, 0x49, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x66, 0x66, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x66, 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, - 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x65, 0x65, - 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x77, 0x65, 0x65, 0x6b, 0x73, 0x12, - 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x1d, - 0x0a, 0x0a, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, - 0x0c, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x22, 0x31, 0x0a, 0x15, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x22, 0x79, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, - 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, - 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x49, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, + 0x56, 0x33, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x85, 0x01, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x12, 0x4f, 0x0a, 0x07, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xbd, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, - 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, - 0x61, 0x63, 0x68, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, - 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x49, 0x44, 0x22, 0x52, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, - 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x22, 0xf1, 0x01, 0x0a, - 0x19, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, - 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, - 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, - 0x59, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, - 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x30, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x92, 0x41, 0x0d, 0xd2, - 0x01, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x52, 0x0a, 0x6c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x3a, 0x66, 0x92, 0x41, 0x63, 0x0a, 0x45, 0x2a, - 0x19, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x32, 0x1b, 0xe6, 0x95, 0x99, 0xe5, - 0xae, 0xa4, 0xe4, 0xbd, 0xbf, 0xe7, 0x94, 0xa8, 0xe6, 0x83, 0x85, 0xe5, 0x86, 0xb5, 0xe8, 0xaf, - 0xb7, 0xe6, 0xb1, 0x82, 0xe4, 0xbd, 0x93, 0xd2, 0x01, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x49, 0x44, 0x32, 0x1a, 0x7b, 0x20, 0x22, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x22, 0x3a, 0x20, 0x22, 0x31, 0x31, 0x31, 0x32, 0x32, 0x32, 0x22, 0x20, 0x7d, - 0x22, 0xc0, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, - 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x77, - 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, - 0x65, 0x6b, 0x64, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x77, 0x65, 0x65, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, - 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, - 0x67, 0x49, 0x44, 0x22, 0x76, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, - 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x6d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, - 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7c, 0x0a, 0x1b, 0x47, - 0x65, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, - 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, - 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, - 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, - 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x8b, 0x02, 0x0a, 0x09, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x43, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x48, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x65, 0x65, + 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x77, 0x65, 0x65, 0x6b, 0x12, 0x18, 0x0a, + 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x22, 0x7f, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x3a, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x97, 0x02, 0x0a, 0x0e, 0x47, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, + 0x74, 0x61, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, + 0x74, 0x61, 0x66, 0x66, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x66, 0x66, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x66, + 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x65, 0x65, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, + 0x52, 0x05, 0x77, 0x65, 0x65, 0x6b, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x75, 0x72, 0x73, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, + 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x65, 0x61, 0x63, + 0x68, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x61, + 0x63, 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x65, 0x6b, + 0x64, 0x61, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, + 0x61, 0x79, 0x22, 0x31, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x49, 0x44, 0x22, 0x79, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0xbd, 0x01, 0x0a, 0x0b, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x49, + 0x44, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, + 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x49, 0x44, 0x18, + 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x49, 0x44, + 0x22, 0x52, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x6f, + 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, + 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, + 0x73, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, + 0x73, 0x74, 0x65, 0x72, 0x22, 0xf1, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, + 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x30, + 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x10, 0x92, 0x41, 0x0d, 0xd2, 0x01, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x49, 0x44, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, + 0x3a, 0x66, 0x92, 0x41, 0x63, 0x0a, 0x45, 0x2a, 0x19, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x32, 0x1b, 0xe6, 0x95, 0x99, 0xe5, 0xae, 0xa4, 0xe4, 0xbd, 0xbf, 0xe7, 0x94, 0xa8, + 0xe6, 0x83, 0x85, 0xe5, 0x86, 0xb5, 0xe8, 0xaf, 0xb7, 0xe6, 0xb1, 0x82, 0xe4, 0xbd, 0x93, 0xd2, + 0x01, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x32, 0x1a, 0x7b, 0x20, + 0x22, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x22, 0x3a, 0x20, 0x22, 0x31, + 0x31, 0x31, 0x32, 0x32, 0x32, 0x22, 0x20, 0x7d, 0x22, 0xc0, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, + 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, + 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, - 0x65, 0x61, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, - 0x69, 0x6e, 0x67, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x69, - 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, - 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, - 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x6c, - 0x66, 0x53, 0x74, 0x75, 0x64, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x65, - 0x6c, 0x66, 0x53, 0x74, 0x75, 0x64, 0x79, 0x22, 0x80, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, - 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x3a, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, - 0x73, 0x61, 0x67, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xf3, 0x01, 0x0a, 0x0e, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3f, 0x0a, - 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, - 0x6f, 0x6f, 0x6d, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x18, - 0x0a, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x65, 0x65, 0x6b, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x77, 0x65, 0x65, 0x6b, 0x12, 0x18, 0x0a, 0x07, - 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, - 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, - 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x22, 0x57, 0x0a, 0x17, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, - 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x7e, 0x0a, 0x18, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, - 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x3a, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x61, - 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xd1, 0x01, 0x0a, 0x0e, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0b, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x6e, 0x75, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, - 0x75, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x4c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0xb9, 0x04, - 0x0a, 0x15, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, - 0x63, 0x68, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, - 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, - 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x74, - 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x75, 0x72, 0x73, - 0x65, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, - 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x10, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, - 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x61, 0x63, 0x68, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, - 0x61, 0x63, 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, - 0x64, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x72, 0x65, 0x64, 0x69, - 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x69, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x6e, 0x69, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, - 0x11, 0x65, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x61, 0x6d, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x22, 0x53, 0x0a, 0x15, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x65, 0x61, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, 0x12, 0x12, 0x0a, + 0x04, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x77, 0x65, 0x65, + 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x07, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x62, + 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x44, 0x22, 0x76, 0x0a, 0x15, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x22, 0x7c, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x33, - 0x0a, 0x17, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x53, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x18, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x46, 0x61, 0x76, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x56, 0x0a, 0x18, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, - 0x30, 0x0a, 0x14, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, - 0x73, 0x22, 0x7b, 0x0a, 0x15, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0x8b, 0x02, 0x0a, 0x09, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, + 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x6c, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x44, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x49, 0x44, 0x12, + 0x22, 0x0a, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x75, 0x64, 0x79, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x73, 0x65, 0x6c, 0x66, 0x53, 0x74, 0x75, 0x64, 0x79, 0x22, + 0x80, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, + 0x55, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x3a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0xf3, 0x01, 0x0a, 0x0e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, + 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, + 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x52, 0x09, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, + 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x65, 0x65, 0x6b, 0x64, 0x61, 0x79, + 0x12, 0x12, 0x0a, 0x04, 0x77, 0x65, 0x65, 0x6b, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, + 0x77, 0x65, 0x65, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x53, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, + 0x0a, 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x72, + 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x43, 0x6f, + 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x57, 0x0a, 0x17, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, + 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x12, 0x0a, + 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, + 0x65, 0x22, 0x7e, 0x0a, 0x18, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, + 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x3a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x22, 0xd1, 0x01, 0x0a, 0x0e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x61, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x61, + 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x4c, 0x61, 0x73, 0x74, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x6e, 0x75, 0x6d, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x12, 0x47, 0x0a, 0x07, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, + 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x52, 0x07, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0xb9, 0x04, 0x0a, 0x15, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, + 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x63, + 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x63, + 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x63, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x4e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x54, 0x69, 0x6d, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, + 0x10, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, + 0x44, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x65, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, + 0x20, 0x0a, 0x0b, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x74, 0x65, 0x61, 0x63, 0x68, 0x65, 0x72, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x69, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x6e, 0x69, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x65, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x11, 0x65, 0x78, 0x61, 0x6d, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x74, + 0x68, 0x6f, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x69, 0x73, 0x74, + 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, + 0x61, 0x72, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x72, + 0x6b, 0x22, 0x53, 0x0a, 0x15, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, + 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, - 0x73, 0x67, 0x12, 0x3a, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x26, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x57, - 0x0a, 0x19, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x52, - 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x33, 0x0a, 0x17, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x18, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x53, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, + 0x56, 0x0a, 0x18, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xb1, 0x14, 0x0a, 0x0f, 0x54, 0x65, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xb3, 0x01, 0x0a, 0x0b, - 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x61, - 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x5a, 0x14, 0x12, 0x12, - 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x5a, 0x16, 0x12, 0x14, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x76, - 0x32, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x15, 0x2f, 0x74, 0x65, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x12, 0x94, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x4e, 0x6f, 0x77, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2e, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, - 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, - 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x34, 0x5a, 0x17, 0x12, 0x15, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, - 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x6e, 0x6f, 0x77, 0x12, 0x19, 0x2f, - 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, - 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x6e, 0x6f, 0x77, 0x12, 0x9e, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, 0x32, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, 0x32, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x5a, - 0x1a, 0x12, 0x18, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x32, 0x2f, 0x73, - 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x6e, 0x6f, 0x77, 0x12, 0x1c, 0x2f, 0x74, 0x65, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x6e, 0x6f, 0x77, 0x12, 0x7e, 0x0a, 0x10, 0x47, 0x65, 0x74, - 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, 0x33, 0x12, 0x16, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, 0x33, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, - 0x18, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x2f, 0x6e, 0x6f, 0x77, 0x2f, 0x76, 0x33, 0x12, 0xa6, 0x01, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, - 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, - 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, - 0x76, 0x31, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, - 0x6c, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, - 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x35, 0x5a, 0x18, 0x12, 0x16, - 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, - 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, - 0x6c, 0x12, 0xa3, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, - 0x6f, 0x6d, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, + 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x30, 0x0a, 0x14, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x18, 0x0a, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x07, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x22, 0x7b, 0x0a, 0x15, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x3a, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x57, 0x0a, 0x19, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, + 0xb1, 0x14, 0x0a, 0x0f, 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0xb3, 0x01, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, + 0x75, 0x6c, 0x65, 0x12, 0x2a, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, - 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x5a, 0x15, 0x12, 0x13, 0x2f, 0x74, 0x65, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, - 0x16, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0xbe, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, - 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x31, - 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, - 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x5a, 0x1b, 0x12, - 0x19, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, - 0x72, 0x6f, 0x6f, 0x6d, 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x2f, 0x74, 0x65, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, - 0x6f, 0x6d, 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0xc3, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, - 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, - 0x12, 0x32, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x75, - 0x73, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2b, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x45, 0x5a, 0x14, 0x12, 0x12, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5a, 0x16, 0x12, 0x14, 0x2f, 0x73, + 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x12, 0x15, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x94, 0x01, 0x0a, 0x0e, 0x47, 0x65, + 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x12, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2e, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x3d, 0x5a, 0x1c, 0x12, 0x1a, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, - 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x12, - 0x1d, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x2f, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x12, 0xbe, - 0x01, 0x0a, 0x10, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x12, 0x2f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, - 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, - 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x5a, 0x1e, - 0x12, 0x1c, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1f, - 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, - 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, - 0x99, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, - 0x70, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x5a, 0x17, 0x12, 0x15, + 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, + 0x65, 0x2f, 0x6e, 0x6f, 0x77, 0x12, 0x19, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x6e, 0x6f, 0x77, + 0x12, 0x9e, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x4e, 0x6f, 0x77, 0x56, 0x32, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x30, 0x2e, + 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x40, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3a, 0x5a, 0x1a, 0x12, 0x18, 0x2f, 0x73, 0x74, 0x75, 0x64, + 0x65, 0x6e, 0x74, 0x2f, 0x76, 0x32, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2f, + 0x6e, 0x6f, 0x77, 0x12, 0x1c, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x76, 0x32, 0x2f, 0x6e, 0x6f, + 0x77, 0x12, 0x7e, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, + 0x4e, 0x6f, 0x77, 0x56, 0x33, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x30, 0x2e, + 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x4e, 0x6f, 0x77, 0x56, 0x33, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, + 0x74, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x2f, 0x6e, 0x6f, 0x77, 0x2f, 0x76, + 0x33, 0x12, 0xa6, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, + 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, 0x64, 0x75, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, - 0x5a, 0x1b, 0x12, 0x19, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x6d, 0x61, 0x70, 0x12, 0x1c, 0x2f, - 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x6d, 0x61, 0x70, 0x12, 0xc3, 0x01, 0x0a, 0x10, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x53, 0x65, 0x74, - 0x12, 0x2f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x53, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, - 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x5a, 0x1f, - 0x22, 0x1d, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, - 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, 0x73, 0x65, 0x74, 0x22, - 0x20, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, 0x73, 0x65, - 0x74, 0x12, 0xa7, 0x01, 0x0a, 0x10, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x46, 0x61, 0x76, 0x47, 0x65, 0x74, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x30, - 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x46, 0x61, 0x76, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x5a, 0x1f, 0x12, 0x1d, 0x2f, 0x74, 0x65, 0x61, - 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, 0x67, 0x65, 0x74, 0x12, 0x20, 0x2f, 0x74, 0x65, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, 0x67, 0x65, 0x74, 0x12, 0xaf, 0x01, 0x0a, 0x0d, - 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x12, 0x2c, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x63, 0x68, 0x65, + 0x64, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x26, 0x12, 0x24, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x74, + 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x12, 0xac, 0x01, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x61, + 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x35, 0x5a, 0x18, 0x12, 0x16, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x19, + 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, + 0x73, 0x73, 0x2f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0xa3, 0x01, 0x0a, 0x0d, 0x47, 0x65, + 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x12, 0x2c, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x3b, 0x5a, 0x1b, 0x12, 0x19, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, - 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x67, 0x65, 0x74, 0x12, - 0x1c, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, - 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x67, 0x65, 0x74, 0x12, 0xab, 0x01, - 0x0a, 0x11, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x52, - 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, 0x63, 0x61, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, + 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, + 0x5a, 0x15, 0x12, 0x13, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x12, + 0xbe, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, + 0x55, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x55, + 0x73, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x5a, 0x1b, 0x12, 0x19, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x2f, 0x75, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x1c, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, + 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x2f, 0x75, 0x73, 0x61, 0x67, 0x65, + 0x12, 0xc3, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x12, 0x32, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3d, 0x5a, 0x1c, 0x12, 0x1a, 0x2f, 0x74, 0x65, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, + 0x2f, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x12, 0x1d, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x72, 0x6f, 0x6f, 0x6d, 0x2f, + 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x12, 0xbe, 0x01, 0x0a, 0x10, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x2f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, - 0x61, 0x76, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x5a, 0x20, 0x12, 0x1e, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, + 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x5a, 0x1e, 0x12, 0x1c, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, - 0x66, 0x61, 0x76, 0x2f, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x21, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, 0x72, 0x61, 0x6e, 0x6b, 0x42, 0xf4, 0x03, 0x92, 0x41, - 0x88, 0x02, 0x12, 0xde, 0x01, 0x0a, 0x0c, 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, - 0x41, 0x50, 0x49, 0x12, 0x0c, 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x50, - 0x49, 0x22, 0x5b, 0x0a, 0x1b, 0x68, 0x64, 0x75, 0x68, 0x65, 0x6c, 0x70, 0x20, 0x73, 0x61, 0x6c, - 0x6d, 0x6f, 0x6e, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x64, 0x75, 0x68, 0x65, 0x6c, 0x70, 0x2f, 0x73, 0x61, 0x6c, - 0x6d, 0x6f, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x5f, 0x62, 0x61, 0x73, 0x65, 0x1a, 0x10, 0x6e, 0x6f, - 0x6e, 0x65, 0x40, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2a, 0x5e, - 0x0a, 0x14, 0x42, 0x53, 0x44, 0x20, 0x33, 0x2d, 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x20, 0x4c, - 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, - 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x67, - 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x62, 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, - 0x65, 0x72, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x2e, 0x74, 0x78, 0x74, 0x32, 0x03, - 0x30, 0x2e, 0x31, 0x2a, 0x01, 0x02, 0x32, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, - 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, - 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0d, 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x64, 0x75, 0x68, 0x65, 0x6c, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x5f, - 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x64, 0x6b, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, - 0x70, 0x69, 0x73, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, - 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x54, 0x58, - 0xaa, 0x02, 0x16, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x54, 0x65, - 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x16, 0x43, 0x61, 0x6d, 0x70, - 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5c, - 0x56, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x5c, - 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x18, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x1f, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, + 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12, 0x99, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x61, 0x73, + 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, + 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x61, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x5a, 0x1b, 0x12, 0x19, 0x2f, 0x74, 0x65, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2f, 0x6d, 0x61, 0x70, 0x12, 0x1c, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, + 0x6d, 0x61, 0x70, 0x12, 0xc3, 0x01, 0x0a, 0x10, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x46, 0x61, 0x76, 0x53, 0x65, 0x74, 0x12, 0x2f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x53, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, + 0x53, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x5a, 0x1f, 0x22, 0x1d, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, + 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, + 0x66, 0x61, 0x76, 0x2f, 0x73, 0x65, 0x74, 0x22, 0x20, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, 0x73, 0x65, 0x74, 0x12, 0xa7, 0x01, 0x0a, 0x10, 0x43, 0x6c, + 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x47, 0x65, 0x74, 0x12, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, + 0x5a, 0x1f, 0x12, 0x1d, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, + 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, 0x67, 0x65, + 0x74, 0x12, 0x20, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, + 0x67, 0x65, 0x74, 0x12, 0xaf, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x47, 0x65, 0x74, 0x12, 0x2c, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6c, 0x61, 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x41, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x5a, 0x1b, 0x12, 0x19, 0x2f, 0x74, + 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x2f, 0x67, 0x65, 0x74, 0x12, 0x1c, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, + 0x79, 0x2f, 0x67, 0x65, 0x74, 0x12, 0xab, 0x01, 0x0a, 0x11, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x16, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x61, + 0x73, 0x73, 0x51, 0x75, 0x65, 0x72, 0x79, 0x46, 0x61, 0x76, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x5a, 0x20, + 0x12, 0x1e, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x63, 0x6c, 0x61, 0x73, + 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, 0x72, 0x61, 0x6e, 0x6b, + 0x12, 0x21, 0x2f, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x63, + 0x6c, 0x61, 0x73, 0x73, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x66, 0x61, 0x76, 0x2f, 0x72, + 0x61, 0x6e, 0x6b, 0x42, 0xf4, 0x03, 0x92, 0x41, 0x88, 0x02, 0x12, 0xde, 0x01, 0x0a, 0x0c, 0x54, + 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, 0x12, 0x0c, 0x54, 0x65, 0x61, + 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x41, 0x50, 0x49, 0x22, 0x5b, 0x0a, 0x1b, 0x68, 0x64, 0x75, + 0x68, 0x65, 0x6c, 0x70, 0x20, 0x73, 0x61, 0x6c, 0x6d, 0x6f, 0x6e, 0x20, 0x62, 0x61, 0x73, 0x65, + 0x20, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x2a, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, + 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x64, 0x75, + 0x68, 0x65, 0x6c, 0x70, 0x2f, 0x73, 0x61, 0x6c, 0x6d, 0x6f, 0x6e, 0x5f, 0x61, 0x70, 0x69, 0x5f, + 0x62, 0x61, 0x73, 0x65, 0x1a, 0x10, 0x6e, 0x6f, 0x6e, 0x65, 0x40, 0x65, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x2a, 0x5e, 0x0a, 0x14, 0x42, 0x53, 0x44, 0x20, 0x33, 0x2d, + 0x43, 0x6c, 0x61, 0x75, 0x73, 0x65, 0x20, 0x4c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x12, 0x46, + 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x65, 0x63, 0x6f, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2d, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2f, 0x62, + 0x6c, 0x6f, 0x62, 0x2f, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, + 0x53, 0x45, 0x2e, 0x74, 0x78, 0x74, 0x32, 0x03, 0x30, 0x2e, 0x31, 0x2a, 0x01, 0x02, 0x32, 0x10, + 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, 0x6f, 0x6e, + 0x3a, 0x10, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6a, 0x73, + 0x6f, 0x6e, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0d, + 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x41, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x64, 0x75, 0x68, + 0x65, 0x6c, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x64, 0x6b, + 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x74, 0x65, 0x61, 0x63, + 0x68, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x74, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x54, 0x58, 0xaa, 0x02, 0x16, 0x43, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x16, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x54, + 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x22, 0x43, 0x61, 0x6d, + 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x54, 0x65, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, + 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x18, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x54, 0x65, + 0x61, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, }) var ( @@ -3833,123 +3895,125 @@ func file_campusapis_teaching_v1_teaching_proto_rawDescGZIP() []byte { return file_campusapis_teaching_v1_teaching_proto_rawDescData } -var file_campusapis_teaching_v1_teaching_proto_msgTypes = make([]protoimpl.MessageInfo, 44) +var file_campusapis_teaching_v1_teaching_proto_msgTypes = make([]protoimpl.MessageInfo, 45) var file_campusapis_teaching_v1_teaching_proto_goTypes = []any{ (*GetScheduleRequest)(nil), // 0: campusapis.teaching.v1.GetScheduleRequest (*GetScheduleResponse)(nil), // 1: campusapis.teaching.v1.GetScheduleResponse - (*ScheduleResponseCourse)(nil), // 2: campusapis.teaching.v1.ScheduleResponseCourse - (*Courses)(nil), // 3: campusapis.teaching.v1.Courses - (*CourseItem)(nil), // 4: campusapis.teaching.v1.CourseItem - (*Schedule)(nil), // 5: campusapis.teaching.v1.Schedule - (*ScheduleItem)(nil), // 6: campusapis.teaching.v1.ScheduleItem - (*StaffInfo)(nil), // 7: campusapis.teaching.v1.StaffInfo - (*GetScheduleNowResponse)(nil), // 8: campusapis.teaching.v1.GetScheduleNowResponse - (*GetScheduleNowResponse_Course)(nil), // 9: campusapis.teaching.v1.GetScheduleNowResponse_Course - (*GetScheduleNowV2Response)(nil), // 10: campusapis.teaching.v1.GetScheduleNowV2Response - (*GetScheduleNowV3Response)(nil), // 11: campusapis.teaching.v1.GetScheduleNowV3Response - (*GetGlobalScheduleRequest)(nil), // 12: campusapis.teaching.v1.GetGlobalScheduleRequest - (*GetGlobalScheduleResponse)(nil), // 13: campusapis.teaching.v1.GetGlobalScheduleResponse - (*GlobalSchedule)(nil), // 14: campusapis.teaching.v1.GlobalSchedule - (*GetClassDetailRequest)(nil), // 15: campusapis.teaching.v1.GetClassDetailRequest - (*GetClassDetailResponse)(nil), // 16: campusapis.teaching.v1.GetClassDetailResponse - (*ClassDetail)(nil), // 17: campusapis.teaching.v1.ClassDetail - (*GetClassroomsRequest)(nil), // 18: campusapis.teaching.v1.GetClassroomsRequest - (*GetClassroomUsagesRequest)(nil), // 19: campusapis.teaching.v1.GetClassroomUsagesRequest - (*GetUnusedClassroomsRequest)(nil), // 20: campusapis.teaching.v1.GetUnusedClassroomsRequest - (*GetClassroomsResponse)(nil), // 21: campusapis.teaching.v1.GetClassroomsResponse - (*GetUnusedClassroomsResponse)(nil), // 22: campusapis.teaching.v1.GetUnusedClassroomsResponse - (*Classroom)(nil), // 23: campusapis.teaching.v1.Classroom - (*GetClassroomUsagesResponse)(nil), // 24: campusapis.teaching.v1.GetClassroomUsagesResponse - (*ClassroomUsage)(nil), // 25: campusapis.teaching.v1.ClassroomUsage - (*ClassQuerySearchRequest)(nil), // 26: campusapis.teaching.v1.ClassQuerySearchRequest - (*ClassQuerySearchResponse)(nil), // 27: campusapis.teaching.v1.ClassQuerySearchResponse - (*ClassQueryInfo)(nil), // 28: campusapis.teaching.v1.ClassQueryInfo - (*ClassQuerySearchClass)(nil), // 29: campusapis.teaching.v1.ClassQuerySearchClass - (*ClassQueryMapResponse)(nil), // 30: campusapis.teaching.v1.ClassQueryMapResponse - (*ClassQueryFavSetRequest)(nil), // 31: campusapis.teaching.v1.ClassQueryFavSetRequest - (*ClassQueryFavSetResponse)(nil), // 32: campusapis.teaching.v1.ClassQueryFavSetResponse - (*ClassQueryFavGetResponse)(nil), // 33: campusapis.teaching.v1.ClassQueryFavGetResponse - (*ClassQueryGetRequest)(nil), // 34: campusapis.teaching.v1.ClassQueryGetRequest - (*ClassQueryGetResponse)(nil), // 35: campusapis.teaching.v1.ClassQueryGetResponse - (*ClassQueryFavRankResponse)(nil), // 36: campusapis.teaching.v1.ClassQueryFavRankResponse - (*ScheduleResponseCourse_StaffInfo)(nil), // 37: campusapis.teaching.v1.ScheduleResponseCourse.StaffInfo - (*ScheduleResponseCourse_ScheduleInfo)(nil), // 38: campusapis.teaching.v1.ScheduleResponseCourse.ScheduleInfo - nil, // 39: campusapis.teaching.v1.Courses.ItemsEntry - nil, // 40: campusapis.teaching.v1.Schedule.ItemsEntry - (*GetScheduleNowResponse_Data)(nil), // 41: campusapis.teaching.v1.GetScheduleNowResponse.Data - (*GetScheduleNowV2Response_Data)(nil), // 42: campusapis.teaching.v1.GetScheduleNowV2Response.Data - (*GetScheduleNowV3Response_Data)(nil), // 43: campusapis.teaching.v1.GetScheduleNowV3Response.Data - (*schoolTime.SchoolYear)(nil), // 44: campusapis.schoolTime.SchoolYear - (*schoolTime.Semester)(nil), // 45: campusapis.schoolTime.Semester - (*staff.InfoMapList)(nil), // 46: campusapis.staff.InfoMapList - (*emptypb.Empty)(nil), // 47: google.protobuf.Empty + (*ScheduleResponseData)(nil), // 2: campusapis.teaching.v1.ScheduleResponseData + (*ScheduleResponseCourse)(nil), // 3: campusapis.teaching.v1.ScheduleResponseCourse + (*Courses)(nil), // 4: campusapis.teaching.v1.Courses + (*CourseItem)(nil), // 5: campusapis.teaching.v1.CourseItem + (*Schedule)(nil), // 6: campusapis.teaching.v1.Schedule + (*ScheduleItem)(nil), // 7: campusapis.teaching.v1.ScheduleItem + (*StaffInfo)(nil), // 8: campusapis.teaching.v1.StaffInfo + (*GetScheduleNowResponse)(nil), // 9: campusapis.teaching.v1.GetScheduleNowResponse + (*GetScheduleNowResponse_Course)(nil), // 10: campusapis.teaching.v1.GetScheduleNowResponse_Course + (*GetScheduleNowV2Response)(nil), // 11: campusapis.teaching.v1.GetScheduleNowV2Response + (*GetScheduleNowV3Response)(nil), // 12: campusapis.teaching.v1.GetScheduleNowV3Response + (*GetGlobalScheduleRequest)(nil), // 13: campusapis.teaching.v1.GetGlobalScheduleRequest + (*GetGlobalScheduleResponse)(nil), // 14: campusapis.teaching.v1.GetGlobalScheduleResponse + (*GlobalSchedule)(nil), // 15: campusapis.teaching.v1.GlobalSchedule + (*GetClassDetailRequest)(nil), // 16: campusapis.teaching.v1.GetClassDetailRequest + (*GetClassDetailResponse)(nil), // 17: campusapis.teaching.v1.GetClassDetailResponse + (*ClassDetail)(nil), // 18: campusapis.teaching.v1.ClassDetail + (*GetClassroomsRequest)(nil), // 19: campusapis.teaching.v1.GetClassroomsRequest + (*GetClassroomUsagesRequest)(nil), // 20: campusapis.teaching.v1.GetClassroomUsagesRequest + (*GetUnusedClassroomsRequest)(nil), // 21: campusapis.teaching.v1.GetUnusedClassroomsRequest + (*GetClassroomsResponse)(nil), // 22: campusapis.teaching.v1.GetClassroomsResponse + (*GetUnusedClassroomsResponse)(nil), // 23: campusapis.teaching.v1.GetUnusedClassroomsResponse + (*Classroom)(nil), // 24: campusapis.teaching.v1.Classroom + (*GetClassroomUsagesResponse)(nil), // 25: campusapis.teaching.v1.GetClassroomUsagesResponse + (*ClassroomUsage)(nil), // 26: campusapis.teaching.v1.ClassroomUsage + (*ClassQuerySearchRequest)(nil), // 27: campusapis.teaching.v1.ClassQuerySearchRequest + (*ClassQuerySearchResponse)(nil), // 28: campusapis.teaching.v1.ClassQuerySearchResponse + (*ClassQueryInfo)(nil), // 29: campusapis.teaching.v1.ClassQueryInfo + (*ClassQuerySearchClass)(nil), // 30: campusapis.teaching.v1.ClassQuerySearchClass + (*ClassQueryMapResponse)(nil), // 31: campusapis.teaching.v1.ClassQueryMapResponse + (*ClassQueryFavSetRequest)(nil), // 32: campusapis.teaching.v1.ClassQueryFavSetRequest + (*ClassQueryFavSetResponse)(nil), // 33: campusapis.teaching.v1.ClassQueryFavSetResponse + (*ClassQueryFavGetResponse)(nil), // 34: campusapis.teaching.v1.ClassQueryFavGetResponse + (*ClassQueryGetRequest)(nil), // 35: campusapis.teaching.v1.ClassQueryGetRequest + (*ClassQueryGetResponse)(nil), // 36: campusapis.teaching.v1.ClassQueryGetResponse + (*ClassQueryFavRankResponse)(nil), // 37: campusapis.teaching.v1.ClassQueryFavRankResponse + (*ScheduleResponseCourse_StaffInfo)(nil), // 38: campusapis.teaching.v1.ScheduleResponseCourse.StaffInfo + (*ScheduleResponseCourse_ScheduleInfo)(nil), // 39: campusapis.teaching.v1.ScheduleResponseCourse.ScheduleInfo + nil, // 40: campusapis.teaching.v1.Courses.ItemsEntry + nil, // 41: campusapis.teaching.v1.Schedule.ItemsEntry + (*GetScheduleNowResponse_Data)(nil), // 42: campusapis.teaching.v1.GetScheduleNowResponse.Data + (*GetScheduleNowV2Response_Data)(nil), // 43: campusapis.teaching.v1.GetScheduleNowV2Response.Data + (*GetScheduleNowV3Response_Data)(nil), // 44: campusapis.teaching.v1.GetScheduleNowV3Response.Data + (*schoolTime.SchoolYear)(nil), // 45: campusapis.schoolTime.SchoolYear + (*schoolTime.Semester)(nil), // 46: campusapis.schoolTime.Semester + (*staff.InfoMapList)(nil), // 47: campusapis.staff.InfoMapList + (*emptypb.Empty)(nil), // 48: google.protobuf.Empty } var file_campusapis_teaching_v1_teaching_proto_depIdxs = []int32{ - 2, // 0: campusapis.teaching.v1.GetScheduleResponse.data:type_name -> campusapis.teaching.v1.ScheduleResponseCourse - 38, // 1: campusapis.teaching.v1.ScheduleResponseCourse.Schedule:type_name -> campusapis.teaching.v1.ScheduleResponseCourse.ScheduleInfo - 39, // 2: campusapis.teaching.v1.Courses.Items:type_name -> campusapis.teaching.v1.Courses.ItemsEntry - 44, // 3: campusapis.teaching.v1.CourseItem.SchoolYear:type_name -> campusapis.schoolTime.SchoolYear - 45, // 4: campusapis.teaching.v1.CourseItem.Semester:type_name -> campusapis.schoolTime.Semester - 5, // 5: campusapis.teaching.v1.CourseItem.Schedule:type_name -> campusapis.teaching.v1.Schedule - 40, // 6: campusapis.teaching.v1.Schedule.Items:type_name -> campusapis.teaching.v1.Schedule.ItemsEntry - 46, // 7: campusapis.teaching.v1.ScheduleItem.Teachers:type_name -> campusapis.staff.InfoMapList - 46, // 8: campusapis.teaching.v1.ScheduleItem.Students:type_name -> campusapis.staff.InfoMapList - 41, // 9: campusapis.teaching.v1.GetScheduleNowResponse.data:type_name -> campusapis.teaching.v1.GetScheduleNowResponse.Data - 42, // 10: campusapis.teaching.v1.GetScheduleNowV2Response.data:type_name -> campusapis.teaching.v1.GetScheduleNowV2Response.Data - 43, // 11: campusapis.teaching.v1.GetScheduleNowV3Response.data:type_name -> campusapis.teaching.v1.GetScheduleNowV3Response.Data - 14, // 12: campusapis.teaching.v1.GetGlobalScheduleResponse.data:type_name -> campusapis.teaching.v1.GlobalSchedule - 17, // 13: campusapis.teaching.v1.GetClassDetailResponse.data:type_name -> campusapis.teaching.v1.ClassDetail - 23, // 14: campusapis.teaching.v1.GetClassroomsResponse.data:type_name -> campusapis.teaching.v1.Classroom - 23, // 15: campusapis.teaching.v1.GetUnusedClassroomsResponse.data:type_name -> campusapis.teaching.v1.Classroom - 25, // 16: campusapis.teaching.v1.GetClassroomUsagesResponse.data:type_name -> campusapis.teaching.v1.ClassroomUsage - 23, // 17: campusapis.teaching.v1.ClassroomUsage.classroom:type_name -> campusapis.teaching.v1.Classroom - 28, // 18: campusapis.teaching.v1.ClassQuerySearchResponse.data:type_name -> campusapis.teaching.v1.ClassQueryInfo - 29, // 19: campusapis.teaching.v1.ClassQueryInfo.classes:type_name -> campusapis.teaching.v1.ClassQuerySearchClass - 28, // 20: campusapis.teaching.v1.ClassQueryGetResponse.data:type_name -> campusapis.teaching.v1.ClassQueryInfo - 37, // 21: campusapis.teaching.v1.ScheduleResponseCourse.ScheduleInfo.Teachers:type_name -> campusapis.teaching.v1.ScheduleResponseCourse.StaffInfo - 37, // 22: campusapis.teaching.v1.ScheduleResponseCourse.ScheduleInfo.Students:type_name -> campusapis.teaching.v1.ScheduleResponseCourse.StaffInfo - 4, // 23: campusapis.teaching.v1.Courses.ItemsEntry.value:type_name -> campusapis.teaching.v1.CourseItem - 6, // 24: campusapis.teaching.v1.Schedule.ItemsEntry.value:type_name -> campusapis.teaching.v1.ScheduleItem - 9, // 25: campusapis.teaching.v1.GetScheduleNowResponse.Data.today:type_name -> campusapis.teaching.v1.GetScheduleNowResponse_Course - 9, // 26: campusapis.teaching.v1.GetScheduleNowResponse.Data.tomorrow:type_name -> campusapis.teaching.v1.GetScheduleNowResponse_Course - 2, // 27: campusapis.teaching.v1.GetScheduleNowV2Response.Data.Today:type_name -> campusapis.teaching.v1.ScheduleResponseCourse - 2, // 28: campusapis.teaching.v1.GetScheduleNowV2Response.Data.Tomorrow:type_name -> campusapis.teaching.v1.ScheduleResponseCourse - 9, // 29: campusapis.teaching.v1.GetScheduleNowV3Response.Data.classes:type_name -> campusapis.teaching.v1.GetScheduleNowResponse_Course - 0, // 30: campusapis.teaching.v1.TeachingService.GetSchedule:input_type -> campusapis.teaching.v1.GetScheduleRequest - 47, // 31: campusapis.teaching.v1.TeachingService.GetScheduleNow:input_type -> google.protobuf.Empty - 47, // 32: campusapis.teaching.v1.TeachingService.GetScheduleNowV2:input_type -> google.protobuf.Empty - 47, // 33: campusapis.teaching.v1.TeachingService.GetScheduleNowV3:input_type -> google.protobuf.Empty - 12, // 34: campusapis.teaching.v1.TeachingService.GetGlobalSchedule:input_type -> campusapis.teaching.v1.GetGlobalScheduleRequest - 15, // 35: campusapis.teaching.v1.TeachingService.GetClassDetail:input_type -> campusapis.teaching.v1.GetClassDetailRequest - 18, // 36: campusapis.teaching.v1.TeachingService.GetClassrooms:input_type -> campusapis.teaching.v1.GetClassroomsRequest - 19, // 37: campusapis.teaching.v1.TeachingService.GetClassroomUsages:input_type -> campusapis.teaching.v1.GetClassroomUsagesRequest - 20, // 38: campusapis.teaching.v1.TeachingService.GetUnusedClassrooms:input_type -> campusapis.teaching.v1.GetUnusedClassroomsRequest - 26, // 39: campusapis.teaching.v1.TeachingService.ClassQuerySearch:input_type -> campusapis.teaching.v1.ClassQuerySearchRequest - 47, // 40: campusapis.teaching.v1.TeachingService.ClassQueryMap:input_type -> google.protobuf.Empty - 31, // 41: campusapis.teaching.v1.TeachingService.ClassQueryFavSet:input_type -> campusapis.teaching.v1.ClassQueryFavSetRequest - 47, // 42: campusapis.teaching.v1.TeachingService.ClassQueryFavGet:input_type -> google.protobuf.Empty - 34, // 43: campusapis.teaching.v1.TeachingService.ClassQueryGet:input_type -> campusapis.teaching.v1.ClassQueryGetRequest - 47, // 44: campusapis.teaching.v1.TeachingService.ClassQueryFavRank:input_type -> google.protobuf.Empty - 1, // 45: campusapis.teaching.v1.TeachingService.GetSchedule:output_type -> campusapis.teaching.v1.GetScheduleResponse - 8, // 46: campusapis.teaching.v1.TeachingService.GetScheduleNow:output_type -> campusapis.teaching.v1.GetScheduleNowResponse - 10, // 47: campusapis.teaching.v1.TeachingService.GetScheduleNowV2:output_type -> campusapis.teaching.v1.GetScheduleNowV2Response - 11, // 48: campusapis.teaching.v1.TeachingService.GetScheduleNowV3:output_type -> campusapis.teaching.v1.GetScheduleNowV3Response - 13, // 49: campusapis.teaching.v1.TeachingService.GetGlobalSchedule:output_type -> campusapis.teaching.v1.GetGlobalScheduleResponse - 16, // 50: campusapis.teaching.v1.TeachingService.GetClassDetail:output_type -> campusapis.teaching.v1.GetClassDetailResponse - 21, // 51: campusapis.teaching.v1.TeachingService.GetClassrooms:output_type -> campusapis.teaching.v1.GetClassroomsResponse - 24, // 52: campusapis.teaching.v1.TeachingService.GetClassroomUsages:output_type -> campusapis.teaching.v1.GetClassroomUsagesResponse - 22, // 53: campusapis.teaching.v1.TeachingService.GetUnusedClassrooms:output_type -> campusapis.teaching.v1.GetUnusedClassroomsResponse - 27, // 54: campusapis.teaching.v1.TeachingService.ClassQuerySearch:output_type -> campusapis.teaching.v1.ClassQuerySearchResponse - 30, // 55: campusapis.teaching.v1.TeachingService.ClassQueryMap:output_type -> campusapis.teaching.v1.ClassQueryMapResponse - 32, // 56: campusapis.teaching.v1.TeachingService.ClassQueryFavSet:output_type -> campusapis.teaching.v1.ClassQueryFavSetResponse - 33, // 57: campusapis.teaching.v1.TeachingService.ClassQueryFavGet:output_type -> campusapis.teaching.v1.ClassQueryFavGetResponse - 35, // 58: campusapis.teaching.v1.TeachingService.ClassQueryGet:output_type -> campusapis.teaching.v1.ClassQueryGetResponse - 36, // 59: campusapis.teaching.v1.TeachingService.ClassQueryFavRank:output_type -> campusapis.teaching.v1.ClassQueryFavRankResponse - 45, // [45:60] is the sub-list for method output_type - 30, // [30:45] is the sub-list for method input_type - 30, // [30:30] is the sub-list for extension type_name - 30, // [30:30] is the sub-list for extension extendee - 0, // [0:30] is the sub-list for field type_name + 2, // 0: campusapis.teaching.v1.GetScheduleResponse.data:type_name -> campusapis.teaching.v1.ScheduleResponseData + 3, // 1: campusapis.teaching.v1.ScheduleResponseData.course:type_name -> campusapis.teaching.v1.ScheduleResponseCourse + 39, // 2: campusapis.teaching.v1.ScheduleResponseCourse.Schedule:type_name -> campusapis.teaching.v1.ScheduleResponseCourse.ScheduleInfo + 40, // 3: campusapis.teaching.v1.Courses.Items:type_name -> campusapis.teaching.v1.Courses.ItemsEntry + 45, // 4: campusapis.teaching.v1.CourseItem.SchoolYear:type_name -> campusapis.schoolTime.SchoolYear + 46, // 5: campusapis.teaching.v1.CourseItem.Semester:type_name -> campusapis.schoolTime.Semester + 6, // 6: campusapis.teaching.v1.CourseItem.Schedule:type_name -> campusapis.teaching.v1.Schedule + 41, // 7: campusapis.teaching.v1.Schedule.Items:type_name -> campusapis.teaching.v1.Schedule.ItemsEntry + 47, // 8: campusapis.teaching.v1.ScheduleItem.Teachers:type_name -> campusapis.staff.InfoMapList + 47, // 9: campusapis.teaching.v1.ScheduleItem.Students:type_name -> campusapis.staff.InfoMapList + 42, // 10: campusapis.teaching.v1.GetScheduleNowResponse.data:type_name -> campusapis.teaching.v1.GetScheduleNowResponse.Data + 43, // 11: campusapis.teaching.v1.GetScheduleNowV2Response.data:type_name -> campusapis.teaching.v1.GetScheduleNowV2Response.Data + 44, // 12: campusapis.teaching.v1.GetScheduleNowV3Response.data:type_name -> campusapis.teaching.v1.GetScheduleNowV3Response.Data + 15, // 13: campusapis.teaching.v1.GetGlobalScheduleResponse.data:type_name -> campusapis.teaching.v1.GlobalSchedule + 18, // 14: campusapis.teaching.v1.GetClassDetailResponse.data:type_name -> campusapis.teaching.v1.ClassDetail + 24, // 15: campusapis.teaching.v1.GetClassroomsResponse.data:type_name -> campusapis.teaching.v1.Classroom + 24, // 16: campusapis.teaching.v1.GetUnusedClassroomsResponse.data:type_name -> campusapis.teaching.v1.Classroom + 26, // 17: campusapis.teaching.v1.GetClassroomUsagesResponse.data:type_name -> campusapis.teaching.v1.ClassroomUsage + 24, // 18: campusapis.teaching.v1.ClassroomUsage.classroom:type_name -> campusapis.teaching.v1.Classroom + 29, // 19: campusapis.teaching.v1.ClassQuerySearchResponse.data:type_name -> campusapis.teaching.v1.ClassQueryInfo + 30, // 20: campusapis.teaching.v1.ClassQueryInfo.classes:type_name -> campusapis.teaching.v1.ClassQuerySearchClass + 29, // 21: campusapis.teaching.v1.ClassQueryGetResponse.data:type_name -> campusapis.teaching.v1.ClassQueryInfo + 38, // 22: campusapis.teaching.v1.ScheduleResponseCourse.ScheduleInfo.Teachers:type_name -> campusapis.teaching.v1.ScheduleResponseCourse.StaffInfo + 38, // 23: campusapis.teaching.v1.ScheduleResponseCourse.ScheduleInfo.Students:type_name -> campusapis.teaching.v1.ScheduleResponseCourse.StaffInfo + 5, // 24: campusapis.teaching.v1.Courses.ItemsEntry.value:type_name -> campusapis.teaching.v1.CourseItem + 7, // 25: campusapis.teaching.v1.Schedule.ItemsEntry.value:type_name -> campusapis.teaching.v1.ScheduleItem + 10, // 26: campusapis.teaching.v1.GetScheduleNowResponse.Data.today:type_name -> campusapis.teaching.v1.GetScheduleNowResponse_Course + 10, // 27: campusapis.teaching.v1.GetScheduleNowResponse.Data.tomorrow:type_name -> campusapis.teaching.v1.GetScheduleNowResponse_Course + 3, // 28: campusapis.teaching.v1.GetScheduleNowV2Response.Data.Today:type_name -> campusapis.teaching.v1.ScheduleResponseCourse + 3, // 29: campusapis.teaching.v1.GetScheduleNowV2Response.Data.Tomorrow:type_name -> campusapis.teaching.v1.ScheduleResponseCourse + 10, // 30: campusapis.teaching.v1.GetScheduleNowV3Response.Data.classes:type_name -> campusapis.teaching.v1.GetScheduleNowResponse_Course + 0, // 31: campusapis.teaching.v1.TeachingService.GetSchedule:input_type -> campusapis.teaching.v1.GetScheduleRequest + 48, // 32: campusapis.teaching.v1.TeachingService.GetScheduleNow:input_type -> google.protobuf.Empty + 48, // 33: campusapis.teaching.v1.TeachingService.GetScheduleNowV2:input_type -> google.protobuf.Empty + 48, // 34: campusapis.teaching.v1.TeachingService.GetScheduleNowV3:input_type -> google.protobuf.Empty + 13, // 35: campusapis.teaching.v1.TeachingService.GetGlobalSchedule:input_type -> campusapis.teaching.v1.GetGlobalScheduleRequest + 16, // 36: campusapis.teaching.v1.TeachingService.GetClassDetail:input_type -> campusapis.teaching.v1.GetClassDetailRequest + 19, // 37: campusapis.teaching.v1.TeachingService.GetClassrooms:input_type -> campusapis.teaching.v1.GetClassroomsRequest + 20, // 38: campusapis.teaching.v1.TeachingService.GetClassroomUsages:input_type -> campusapis.teaching.v1.GetClassroomUsagesRequest + 21, // 39: campusapis.teaching.v1.TeachingService.GetUnusedClassrooms:input_type -> campusapis.teaching.v1.GetUnusedClassroomsRequest + 27, // 40: campusapis.teaching.v1.TeachingService.ClassQuerySearch:input_type -> campusapis.teaching.v1.ClassQuerySearchRequest + 48, // 41: campusapis.teaching.v1.TeachingService.ClassQueryMap:input_type -> google.protobuf.Empty + 32, // 42: campusapis.teaching.v1.TeachingService.ClassQueryFavSet:input_type -> campusapis.teaching.v1.ClassQueryFavSetRequest + 48, // 43: campusapis.teaching.v1.TeachingService.ClassQueryFavGet:input_type -> google.protobuf.Empty + 35, // 44: campusapis.teaching.v1.TeachingService.ClassQueryGet:input_type -> campusapis.teaching.v1.ClassQueryGetRequest + 48, // 45: campusapis.teaching.v1.TeachingService.ClassQueryFavRank:input_type -> google.protobuf.Empty + 1, // 46: campusapis.teaching.v1.TeachingService.GetSchedule:output_type -> campusapis.teaching.v1.GetScheduleResponse + 9, // 47: campusapis.teaching.v1.TeachingService.GetScheduleNow:output_type -> campusapis.teaching.v1.GetScheduleNowResponse + 11, // 48: campusapis.teaching.v1.TeachingService.GetScheduleNowV2:output_type -> campusapis.teaching.v1.GetScheduleNowV2Response + 12, // 49: campusapis.teaching.v1.TeachingService.GetScheduleNowV3:output_type -> campusapis.teaching.v1.GetScheduleNowV3Response + 14, // 50: campusapis.teaching.v1.TeachingService.GetGlobalSchedule:output_type -> campusapis.teaching.v1.GetGlobalScheduleResponse + 17, // 51: campusapis.teaching.v1.TeachingService.GetClassDetail:output_type -> campusapis.teaching.v1.GetClassDetailResponse + 22, // 52: campusapis.teaching.v1.TeachingService.GetClassrooms:output_type -> campusapis.teaching.v1.GetClassroomsResponse + 25, // 53: campusapis.teaching.v1.TeachingService.GetClassroomUsages:output_type -> campusapis.teaching.v1.GetClassroomUsagesResponse + 23, // 54: campusapis.teaching.v1.TeachingService.GetUnusedClassrooms:output_type -> campusapis.teaching.v1.GetUnusedClassroomsResponse + 28, // 55: campusapis.teaching.v1.TeachingService.ClassQuerySearch:output_type -> campusapis.teaching.v1.ClassQuerySearchResponse + 31, // 56: campusapis.teaching.v1.TeachingService.ClassQueryMap:output_type -> campusapis.teaching.v1.ClassQueryMapResponse + 33, // 57: campusapis.teaching.v1.TeachingService.ClassQueryFavSet:output_type -> campusapis.teaching.v1.ClassQueryFavSetResponse + 34, // 58: campusapis.teaching.v1.TeachingService.ClassQueryFavGet:output_type -> campusapis.teaching.v1.ClassQueryFavGetResponse + 36, // 59: campusapis.teaching.v1.TeachingService.ClassQueryGet:output_type -> campusapis.teaching.v1.ClassQueryGetResponse + 37, // 60: campusapis.teaching.v1.TeachingService.ClassQueryFavRank:output_type -> campusapis.teaching.v1.ClassQueryFavRankResponse + 46, // [46:61] is the sub-list for method output_type + 31, // [31:46] is the sub-list for method input_type + 31, // [31:31] is the sub-list for extension type_name + 31, // [31:31] is the sub-list for extension extendee + 0, // [0:31] is the sub-list for field type_name } func init() { file_campusapis_teaching_v1_teaching_proto_init() } @@ -3963,7 +4027,7 @@ func file_campusapis_teaching_v1_teaching_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_campusapis_teaching_v1_teaching_proto_rawDesc), len(file_campusapis_teaching_v1_teaching_proto_rawDesc)), NumEnums: 0, - NumMessages: 44, + NumMessages: 45, NumExtensions: 0, NumServices: 1, }, diff --git a/campusapis/teaching/v1/teaching.proto b/campusapis/teaching/v1/teaching.proto index 199af02..8c4de8b 100644 --- a/campusapis/teaching/v1/teaching.proto +++ b/campusapis/teaching/v1/teaching.proto @@ -204,7 +204,12 @@ message GetScheduleRequest { message GetScheduleResponse { int32 error = 1; string msg = 2; - repeated ScheduleResponseCourse data = 3; + ScheduleResponseData data = 3; +} + +message ScheduleResponseData { + int64 semester_start_timestamp = 1; + repeated ScheduleResponseCourse course = 2; } // ScheduleResponseCourse 单课程返回体(如高等数学课) diff --git a/docs/swagger/campusapis/teaching/v1/teaching.swagger.json b/docs/swagger/campusapis/teaching/v1/teaching.swagger.json index 70045ff..ace8634 100644 --- a/docs/swagger/campusapis/teaching/v1/teaching.swagger.json +++ b/docs/swagger/campusapis/teaching/v1/teaching.swagger.json @@ -1793,11 +1793,7 @@ "type": "string" }, "data": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/v1ScheduleResponseCourse" - } + "$ref": "#/definitions/v1ScheduleResponseData" } }, "title": "GetScheduleResponse 课表列表返回体" @@ -1937,6 +1933,22 @@ } }, "title": "人员信息" + }, + "v1ScheduleResponseData": { + "type": "object", + "properties": { + "semesterStartTimestamp": { + "type": "string", + "format": "int64" + }, + "course": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/v1ScheduleResponseCourse" + } + } + } } } } From 0507a13565af9798581979043017d097908444fe Mon Sep 17 00:00:00 2001 From: Jiahe114514 Date: Wed, 21 Jan 2026 13:48:16 +0800 Subject: [PATCH 2/3] feat: add fitness score CRUD (no query) proto --- campusapis/fitness/v1/fitness.pb.go | 1022 +++++++++++++++++ campusapis/fitness/v1/fitness.pb.gw.go | 501 ++++++++ campusapis/fitness/v1/fitness.proto | 133 +++ campusapis/fitness/v1/fitness_grpc.pb.go | 207 ++++ .../fitness/v1/fitness.swagger.json | 736 ++++++++++++ 5 files changed, 2599 insertions(+) create mode 100644 campusapis/fitness/v1/fitness.pb.go create mode 100644 campusapis/fitness/v1/fitness.pb.gw.go create mode 100644 campusapis/fitness/v1/fitness.proto create mode 100644 campusapis/fitness/v1/fitness_grpc.pb.go create mode 100644 docs/swagger/campusapis/fitness/v1/fitness.swagger.json diff --git a/campusapis/fitness/v1/fitness.pb.go b/campusapis/fitness/v1/fitness.pb.go new file mode 100644 index 0000000..c6d8e65 --- /dev/null +++ b/campusapis/fitness/v1/fitness.pb.go @@ -0,0 +1,1022 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.5 +// protoc (unknown) +// source: campusapis/fitness/v1/fitness.proto + +package fitnessv1 + +import ( + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// StoreFitnessScoreRequest 新增或更新体测成绩请求 +type StoreFitnessScoreRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` + SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` + Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` + Gender string `protobuf:"bytes,4,opt,name=gender,proto3" json:"gender,omitempty"` + Grade int32 `protobuf:"varint,5,opt,name=grade,proto3" json:"grade,omitempty"` + Height float32 `protobuf:"fixed32,6,opt,name=height,proto3" json:"height,omitempty"` + Weight float32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"` + Bmi float32 `protobuf:"fixed32,8,opt,name=bmi,proto3" json:"bmi,omitempty"` + Run_50M float32 `protobuf:"fixed32,9,opt,name=run_50m,json=run50m,proto3" json:"run_50m,omitempty"` + StandingLongJump float32 `protobuf:"fixed32,10,opt,name=standing_long_jump,json=standingLongJump,proto3" json:"standing_long_jump,omitempty"` + SitAndReach float32 `protobuf:"fixed32,11,opt,name=sit_and_reach,json=sitAndReach,proto3" json:"sit_and_reach,omitempty"` + Run_800M float32 `protobuf:"fixed32,12,opt,name=run_800m,json=run800m,proto3" json:"run_800m,omitempty"` + Run_1000M float32 `protobuf:"fixed32,13,opt,name=run_1000m,json=run1000m,proto3" json:"run_1000m,omitempty"` + SitUps int32 `protobuf:"varint,14,opt,name=sit_ups,json=sitUps,proto3" json:"sit_ups,omitempty"` + PullUps int32 `protobuf:"varint,15,opt,name=pull_ups,json=pullUps,proto3" json:"pull_ups,omitempty"` + LungCapacity int32 `protobuf:"varint,16,opt,name=lung_capacity,json=lungCapacity,proto3" json:"lung_capacity,omitempty"` + TotalScore float32 `protobuf:"fixed32,17,opt,name=total_score,json=totalScore,proto3" json:"total_score,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StoreFitnessScoreRequest) Reset() { + *x = StoreFitnessScoreRequest{} + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StoreFitnessScoreRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StoreFitnessScoreRequest) ProtoMessage() {} + +func (x *StoreFitnessScoreRequest) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StoreFitnessScoreRequest.ProtoReflect.Descriptor instead. +func (*StoreFitnessScoreRequest) Descriptor() ([]byte, []int) { + return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{0} +} + +func (x *StoreFitnessScoreRequest) GetStaffId() string { + if x != nil { + return x.StaffId + } + return "" +} + +func (x *StoreFitnessScoreRequest) GetSchoolYear() string { + if x != nil { + return x.SchoolYear + } + return "" +} + +func (x *StoreFitnessScoreRequest) GetSemester() int32 { + if x != nil { + return x.Semester + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetGender() string { + if x != nil { + return x.Gender + } + return "" +} + +func (x *StoreFitnessScoreRequest) GetGrade() int32 { + if x != nil { + return x.Grade + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetHeight() float32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetWeight() float32 { + if x != nil { + return x.Weight + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetBmi() float32 { + if x != nil { + return x.Bmi + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetRun_50M() float32 { + if x != nil { + return x.Run_50M + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetStandingLongJump() float32 { + if x != nil { + return x.StandingLongJump + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetSitAndReach() float32 { + if x != nil { + return x.SitAndReach + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetRun_800M() float32 { + if x != nil { + return x.Run_800M + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetRun_1000M() float32 { + if x != nil { + return x.Run_1000M + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetSitUps() int32 { + if x != nil { + return x.SitUps + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetPullUps() int32 { + if x != nil { + return x.PullUps + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetLungCapacity() int32 { + if x != nil { + return x.LungCapacity + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetTotalScore() float32 { + if x != nil { + return x.TotalScore + } + return 0 +} + +// StoreFitnessScoreResponse 新增或更新体测成绩响应 +type StoreFitnessScoreResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Data *FitnessScore `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StoreFitnessScoreResponse) Reset() { + *x = StoreFitnessScoreResponse{} + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StoreFitnessScoreResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StoreFitnessScoreResponse) ProtoMessage() {} + +func (x *StoreFitnessScoreResponse) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StoreFitnessScoreResponse.ProtoReflect.Descriptor instead. +func (*StoreFitnessScoreResponse) Descriptor() ([]byte, []int) { + return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{1} +} + +func (x *StoreFitnessScoreResponse) GetError() int32 { + if x != nil { + return x.Error + } + return 0 +} + +func (x *StoreFitnessScoreResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *StoreFitnessScoreResponse) GetData() *FitnessScore { + if x != nil { + return x.Data + } + return nil +} + +// UpdateFitnessScoreRequest 更新体测成绩请求 +type UpdateFitnessScoreRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` + SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` + Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` + Gender string `protobuf:"bytes,4,opt,name=gender,proto3" json:"gender,omitempty"` + Grade int32 `protobuf:"varint,5,opt,name=grade,proto3" json:"grade,omitempty"` + Height float32 `protobuf:"fixed32,6,opt,name=height,proto3" json:"height,omitempty"` + Weight float32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"` + Bmi float32 `protobuf:"fixed32,8,opt,name=bmi,proto3" json:"bmi,omitempty"` + Run_50M float32 `protobuf:"fixed32,9,opt,name=run_50m,json=run50m,proto3" json:"run_50m,omitempty"` + StandingLongJump float32 `protobuf:"fixed32,10,opt,name=standing_long_jump,json=standingLongJump,proto3" json:"standing_long_jump,omitempty"` + SitAndReach float32 `protobuf:"fixed32,11,opt,name=sit_and_reach,json=sitAndReach,proto3" json:"sit_and_reach,omitempty"` + Run_800M float32 `protobuf:"fixed32,12,opt,name=run_800m,json=run800m,proto3" json:"run_800m,omitempty"` + Run_1000M float32 `protobuf:"fixed32,13,opt,name=run_1000m,json=run1000m,proto3" json:"run_1000m,omitempty"` + SitUps int32 `protobuf:"varint,14,opt,name=sit_ups,json=sitUps,proto3" json:"sit_ups,omitempty"` + PullUps int32 `protobuf:"varint,15,opt,name=pull_ups,json=pullUps,proto3" json:"pull_ups,omitempty"` + LungCapacity int32 `protobuf:"varint,16,opt,name=lung_capacity,json=lungCapacity,proto3" json:"lung_capacity,omitempty"` + TotalScore float32 `protobuf:"fixed32,17,opt,name=total_score,json=totalScore,proto3" json:"total_score,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateFitnessScoreRequest) Reset() { + *x = UpdateFitnessScoreRequest{} + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateFitnessScoreRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateFitnessScoreRequest) ProtoMessage() {} + +func (x *UpdateFitnessScoreRequest) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateFitnessScoreRequest.ProtoReflect.Descriptor instead. +func (*UpdateFitnessScoreRequest) Descriptor() ([]byte, []int) { + return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{2} +} + +func (x *UpdateFitnessScoreRequest) GetStaffId() string { + if x != nil { + return x.StaffId + } + return "" +} + +func (x *UpdateFitnessScoreRequest) GetSchoolYear() string { + if x != nil { + return x.SchoolYear + } + return "" +} + +func (x *UpdateFitnessScoreRequest) GetSemester() int32 { + if x != nil { + return x.Semester + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetGender() string { + if x != nil { + return x.Gender + } + return "" +} + +func (x *UpdateFitnessScoreRequest) GetGrade() int32 { + if x != nil { + return x.Grade + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetHeight() float32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetWeight() float32 { + if x != nil { + return x.Weight + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetBmi() float32 { + if x != nil { + return x.Bmi + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetRun_50M() float32 { + if x != nil { + return x.Run_50M + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetStandingLongJump() float32 { + if x != nil { + return x.StandingLongJump + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetSitAndReach() float32 { + if x != nil { + return x.SitAndReach + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetRun_800M() float32 { + if x != nil { + return x.Run_800M + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetRun_1000M() float32 { + if x != nil { + return x.Run_1000M + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetSitUps() int32 { + if x != nil { + return x.SitUps + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetPullUps() int32 { + if x != nil { + return x.PullUps + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetLungCapacity() int32 { + if x != nil { + return x.LungCapacity + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetTotalScore() float32 { + if x != nil { + return x.TotalScore + } + return 0 +} + +// UpdateFitnessScoreResponse 更新体测成绩响应 +type UpdateFitnessScoreResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Data *FitnessScore `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateFitnessScoreResponse) Reset() { + *x = UpdateFitnessScoreResponse{} + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateFitnessScoreResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateFitnessScoreResponse) ProtoMessage() {} + +func (x *UpdateFitnessScoreResponse) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateFitnessScoreResponse.ProtoReflect.Descriptor instead. +func (*UpdateFitnessScoreResponse) Descriptor() ([]byte, []int) { + return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{3} +} + +func (x *UpdateFitnessScoreResponse) GetError() int32 { + if x != nil { + return x.Error + } + return 0 +} + +func (x *UpdateFitnessScoreResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *UpdateFitnessScoreResponse) GetData() *FitnessScore { + if x != nil { + return x.Data + } + return nil +} + +// DeleteFitnessScoreRequest 删除体测成绩请求 +type DeleteFitnessScoreRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` + SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` + Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteFitnessScoreRequest) Reset() { + *x = DeleteFitnessScoreRequest{} + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteFitnessScoreRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteFitnessScoreRequest) ProtoMessage() {} + +func (x *DeleteFitnessScoreRequest) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteFitnessScoreRequest.ProtoReflect.Descriptor instead. +func (*DeleteFitnessScoreRequest) Descriptor() ([]byte, []int) { + return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{4} +} + +func (x *DeleteFitnessScoreRequest) GetStaffId() string { + if x != nil { + return x.StaffId + } + return "" +} + +func (x *DeleteFitnessScoreRequest) GetSchoolYear() string { + if x != nil { + return x.SchoolYear + } + return "" +} + +func (x *DeleteFitnessScoreRequest) GetSemester() int32 { + if x != nil { + return x.Semester + } + return 0 +} + +// DeleteFitnessScoreResponse 删除体测成绩响应 +type DeleteFitnessScoreResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteFitnessScoreResponse) Reset() { + *x = DeleteFitnessScoreResponse{} + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteFitnessScoreResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteFitnessScoreResponse) ProtoMessage() {} + +func (x *DeleteFitnessScoreResponse) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteFitnessScoreResponse.ProtoReflect.Descriptor instead. +func (*DeleteFitnessScoreResponse) Descriptor() ([]byte, []int) { + return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{5} +} + +func (x *DeleteFitnessScoreResponse) GetError() int32 { + if x != nil { + return x.Error + } + return 0 +} + +func (x *DeleteFitnessScoreResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// FitnessScore 体测成绩信息 +type FitnessScore struct { + state protoimpl.MessageState `protogen:"open.v1"` + StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` + SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` + Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` + Gender string `protobuf:"bytes,4,opt,name=gender,proto3" json:"gender,omitempty"` + Grade int32 `protobuf:"varint,5,opt,name=grade,proto3" json:"grade,omitempty"` + Height float32 `protobuf:"fixed32,6,opt,name=height,proto3" json:"height,omitempty"` + Weight float32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"` + Bmi float32 `protobuf:"fixed32,8,opt,name=bmi,proto3" json:"bmi,omitempty"` + Run_50M float32 `protobuf:"fixed32,9,opt,name=run_50m,json=run50m,proto3" json:"run_50m,omitempty"` + StandingLongJump float32 `protobuf:"fixed32,10,opt,name=standing_long_jump,json=standingLongJump,proto3" json:"standing_long_jump,omitempty"` + SitAndReach float32 `protobuf:"fixed32,11,opt,name=sit_and_reach,json=sitAndReach,proto3" json:"sit_and_reach,omitempty"` + Run_800M float32 `protobuf:"fixed32,12,opt,name=run_800m,json=run800m,proto3" json:"run_800m,omitempty"` + Run_1000M float32 `protobuf:"fixed32,13,opt,name=run_1000m,json=run1000m,proto3" json:"run_1000m,omitempty"` + SitUps int32 `protobuf:"varint,14,opt,name=sit_ups,json=sitUps,proto3" json:"sit_ups,omitempty"` + PullUps int32 `protobuf:"varint,15,opt,name=pull_ups,json=pullUps,proto3" json:"pull_ups,omitempty"` + LungCapacity int32 `protobuf:"varint,16,opt,name=lung_capacity,json=lungCapacity,proto3" json:"lung_capacity,omitempty"` + TotalScore float32 `protobuf:"fixed32,17,opt,name=total_score,json=totalScore,proto3" json:"total_score,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FitnessScore) Reset() { + *x = FitnessScore{} + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FitnessScore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FitnessScore) ProtoMessage() {} + +func (x *FitnessScore) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FitnessScore.ProtoReflect.Descriptor instead. +func (*FitnessScore) Descriptor() ([]byte, []int) { + return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{6} +} + +func (x *FitnessScore) GetStaffId() string { + if x != nil { + return x.StaffId + } + return "" +} + +func (x *FitnessScore) GetSchoolYear() string { + if x != nil { + return x.SchoolYear + } + return "" +} + +func (x *FitnessScore) GetSemester() int32 { + if x != nil { + return x.Semester + } + return 0 +} + +func (x *FitnessScore) GetGender() string { + if x != nil { + return x.Gender + } + return "" +} + +func (x *FitnessScore) GetGrade() int32 { + if x != nil { + return x.Grade + } + return 0 +} + +func (x *FitnessScore) GetHeight() float32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *FitnessScore) GetWeight() float32 { + if x != nil { + return x.Weight + } + return 0 +} + +func (x *FitnessScore) GetBmi() float32 { + if x != nil { + return x.Bmi + } + return 0 +} + +func (x *FitnessScore) GetRun_50M() float32 { + if x != nil { + return x.Run_50M + } + return 0 +} + +func (x *FitnessScore) GetStandingLongJump() float32 { + if x != nil { + return x.StandingLongJump + } + return 0 +} + +func (x *FitnessScore) GetSitAndReach() float32 { + if x != nil { + return x.SitAndReach + } + return 0 +} + +func (x *FitnessScore) GetRun_800M() float32 { + if x != nil { + return x.Run_800M + } + return 0 +} + +func (x *FitnessScore) GetRun_1000M() float32 { + if x != nil { + return x.Run_1000M + } + return 0 +} + +func (x *FitnessScore) GetSitUps() int32 { + if x != nil { + return x.SitUps + } + return 0 +} + +func (x *FitnessScore) GetPullUps() int32 { + if x != nil { + return x.PullUps + } + return 0 +} + +func (x *FitnessScore) GetLungCapacity() int32 { + if x != nil { + return x.LungCapacity + } + return 0 +} + +func (x *FitnessScore) GetTotalScore() float32 { + if x != nil { + return x.TotalScore + } + return 0 +} + +var File_campusapis_fitness_v1_fitness_proto protoreflect.FileDescriptor + +var file_campusapis_fitness_v1_fitness_proto_rawDesc = string([]byte{ + 0x0a, 0x23, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x66, 0x69, 0x74, + 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xff, 0x03, 0x0a, 0x18, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, 0x66, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, 0x66, + 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, 0x61, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, + 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, + 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x68, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x62, 0x6d, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x62, 0x6d, 0x69, 0x12, + 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x5f, 0x35, 0x30, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x06, 0x72, 0x75, 0x6e, 0x35, 0x30, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x6f, + 0x6e, 0x67, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x74, 0x5f, 0x61, 0x6e, + 0x64, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x73, + 0x69, 0x74, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, + 0x6e, 0x5f, 0x38, 0x30, 0x30, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, 0x75, + 0x6e, 0x38, 0x30, 0x30, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x31, 0x30, 0x30, + 0x30, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x31, 0x30, 0x30, + 0x30, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x69, 0x74, 0x55, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, + 0x75, 0x6c, 0x6c, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, + 0x75, 0x6c, 0x6c, 0x55, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x75, 0x6e, 0x67, 0x5f, 0x63, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, + 0x75, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x7c, 0x0a, 0x19, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, + 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x23, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, + 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, + 0x63, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x80, 0x04, 0x0a, 0x19, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, + 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, + 0x66, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, + 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, + 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x62, 0x6d, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x62, 0x6d, 0x69, + 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x5f, 0x35, 0x30, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x06, 0x72, 0x75, 0x6e, 0x35, 0x30, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, + 0x6f, 0x6e, 0x67, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x74, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, + 0x73, 0x69, 0x74, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, + 0x75, 0x6e, 0x5f, 0x38, 0x30, 0x30, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, + 0x75, 0x6e, 0x38, 0x30, 0x30, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x31, 0x30, + 0x30, 0x30, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x31, 0x30, + 0x30, 0x30, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x69, 0x74, 0x55, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, + 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x70, 0x75, 0x6c, 0x6c, 0x55, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x75, 0x6e, 0x67, 0x5f, + 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x6c, 0x75, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x7d, 0x0a, + 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6d, 0x73, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, + 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, + 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x73, 0x0a, 0x19, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, + 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, + 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, + 0x66, 0x66, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, + 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, + 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, + 0x72, 0x22, 0x44, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, + 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xf3, 0x03, 0x0a, 0x0c, 0x46, 0x69, 0x74, 0x6e, + 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, + 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, + 0x66, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, + 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, + 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, + 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x16, + 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, + 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, + 0x0a, 0x03, 0x62, 0x6d, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x62, 0x6d, 0x69, + 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x5f, 0x35, 0x30, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x06, 0x72, 0x75, 0x6e, 0x35, 0x30, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, + 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, + 0x6f, 0x6e, 0x67, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x74, 0x5f, 0x61, + 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, + 0x73, 0x69, 0x74, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, + 0x75, 0x6e, 0x5f, 0x38, 0x30, 0x30, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, + 0x75, 0x6e, 0x38, 0x30, 0x30, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x31, 0x30, + 0x30, 0x30, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x31, 0x30, + 0x30, 0x30, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0e, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x69, 0x74, 0x55, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, + 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, + 0x70, 0x75, 0x6c, 0x6c, 0x55, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x75, 0x6e, 0x67, 0x5f, + 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, + 0x6c, 0x75, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x32, 0x8e, 0x04, + 0x0a, 0x0e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0xa6, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, + 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x28, 0x3a, 0x01, 0x2a, 0x5a, 0x10, 0x22, 0x0e, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x11, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0xa9, 0x01, 0x0a, 0x12, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x12, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, + 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, + 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, + 0x5a, 0x10, 0x32, 0x0e, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x32, 0x11, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0xa6, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, + 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, + 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, + 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, + 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x5a, 0x10, 0x2a, 0x0e, 0x2f, 0x66, 0x69, + 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x2a, 0x11, 0x2f, 0x66, 0x69, + 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0xe0, + 0x01, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x46, 0x69, + 0x74, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x64, 0x75, 0x68, 0x65, 0x6c, 0x70, + 0x2f, 0x61, 0x70, 0x69, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x64, 0x6b, 0x2f, 0x63, 0x61, + 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x2f, 0x76, 0x31, 0x3b, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x43, 0x46, 0x58, 0xaa, 0x02, 0x15, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x15, 0x43, 0x61, + 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x21, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, + 0x5c, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x17, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, + 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) + +var ( + file_campusapis_fitness_v1_fitness_proto_rawDescOnce sync.Once + file_campusapis_fitness_v1_fitness_proto_rawDescData []byte +) + +func file_campusapis_fitness_v1_fitness_proto_rawDescGZIP() []byte { + file_campusapis_fitness_v1_fitness_proto_rawDescOnce.Do(func() { + file_campusapis_fitness_v1_fitness_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_campusapis_fitness_v1_fitness_proto_rawDesc), len(file_campusapis_fitness_v1_fitness_proto_rawDesc))) + }) + return file_campusapis_fitness_v1_fitness_proto_rawDescData +} + +var file_campusapis_fitness_v1_fitness_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_campusapis_fitness_v1_fitness_proto_goTypes = []any{ + (*StoreFitnessScoreRequest)(nil), // 0: campusapis.fitness.v1.StoreFitnessScoreRequest + (*StoreFitnessScoreResponse)(nil), // 1: campusapis.fitness.v1.StoreFitnessScoreResponse + (*UpdateFitnessScoreRequest)(nil), // 2: campusapis.fitness.v1.UpdateFitnessScoreRequest + (*UpdateFitnessScoreResponse)(nil), // 3: campusapis.fitness.v1.UpdateFitnessScoreResponse + (*DeleteFitnessScoreRequest)(nil), // 4: campusapis.fitness.v1.DeleteFitnessScoreRequest + (*DeleteFitnessScoreResponse)(nil), // 5: campusapis.fitness.v1.DeleteFitnessScoreResponse + (*FitnessScore)(nil), // 6: campusapis.fitness.v1.FitnessScore +} +var file_campusapis_fitness_v1_fitness_proto_depIdxs = []int32{ + 6, // 0: campusapis.fitness.v1.StoreFitnessScoreResponse.data:type_name -> campusapis.fitness.v1.FitnessScore + 6, // 1: campusapis.fitness.v1.UpdateFitnessScoreResponse.data:type_name -> campusapis.fitness.v1.FitnessScore + 0, // 2: campusapis.fitness.v1.FitnessService.StoreFitnessScore:input_type -> campusapis.fitness.v1.StoreFitnessScoreRequest + 2, // 3: campusapis.fitness.v1.FitnessService.UpdateFitnessScore:input_type -> campusapis.fitness.v1.UpdateFitnessScoreRequest + 4, // 4: campusapis.fitness.v1.FitnessService.DeleteFitnessScore:input_type -> campusapis.fitness.v1.DeleteFitnessScoreRequest + 1, // 5: campusapis.fitness.v1.FitnessService.StoreFitnessScore:output_type -> campusapis.fitness.v1.StoreFitnessScoreResponse + 3, // 6: campusapis.fitness.v1.FitnessService.UpdateFitnessScore:output_type -> campusapis.fitness.v1.UpdateFitnessScoreResponse + 5, // 7: campusapis.fitness.v1.FitnessService.DeleteFitnessScore:output_type -> campusapis.fitness.v1.DeleteFitnessScoreResponse + 5, // [5:8] is the sub-list for method output_type + 2, // [2:5] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_campusapis_fitness_v1_fitness_proto_init() } +func file_campusapis_fitness_v1_fitness_proto_init() { + if File_campusapis_fitness_v1_fitness_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_campusapis_fitness_v1_fitness_proto_rawDesc), len(file_campusapis_fitness_v1_fitness_proto_rawDesc)), + NumEnums: 0, + NumMessages: 7, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_campusapis_fitness_v1_fitness_proto_goTypes, + DependencyIndexes: file_campusapis_fitness_v1_fitness_proto_depIdxs, + MessageInfos: file_campusapis_fitness_v1_fitness_proto_msgTypes, + }.Build() + File_campusapis_fitness_v1_fitness_proto = out.File + file_campusapis_fitness_v1_fitness_proto_goTypes = nil + file_campusapis_fitness_v1_fitness_proto_depIdxs = nil +} diff --git a/campusapis/fitness/v1/fitness.pb.gw.go b/campusapis/fitness/v1/fitness.pb.gw.go new file mode 100644 index 0000000..9f1d992 --- /dev/null +++ b/campusapis/fitness/v1/fitness.pb.gw.go @@ -0,0 +1,501 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: campusapis/fitness/v1/fitness.proto + +/* +Package fitnessv1 is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package fitnessv1 + +import ( + "context" + "errors" + "io" + "net/http" + + "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" +) + +// Suppress "imported and not used" errors +var ( + _ codes.Code + _ io.Reader + _ status.Status + _ = errors.New + _ = runtime.String + _ = utilities.NewDoubleArray + _ = metadata.Join +) + +func request_FitnessService_StoreFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq StoreFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.StoreFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_FitnessService_StoreFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq StoreFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.StoreFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +var filter_FitnessService_StoreFitnessScore_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + +func request_FitnessService_StoreFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq StoreFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_StoreFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.StoreFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_FitnessService_StoreFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq StoreFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_StoreFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.StoreFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +func request_FitnessService_UpdateFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.UpdateFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_FitnessService_UpdateFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.UpdateFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +var filter_FitnessService_UpdateFitnessScore_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + +func request_FitnessService_UpdateFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_UpdateFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.UpdateFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_FitnessService_UpdateFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_UpdateFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.UpdateFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +var filter_FitnessService_DeleteFitnessScore_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + +func request_FitnessService_DeleteFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeleteFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_DeleteFitnessScore_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.DeleteFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_FitnessService_DeleteFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeleteFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_DeleteFitnessScore_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.DeleteFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +var filter_FitnessService_DeleteFitnessScore_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + +func request_FitnessService_DeleteFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeleteFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_DeleteFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.DeleteFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_FitnessService_DeleteFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeleteFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_DeleteFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.DeleteFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +// RegisterFitnessServiceHandlerServer registers the http handlers for service FitnessService to "mux". +// UnaryRPC :call FitnessServiceServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterFitnessServiceHandlerFromEndpoint instead. +// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. +func RegisterFitnessServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server FitnessServiceServer) error { + mux.Handle(http.MethodPost, pattern_FitnessService_StoreFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_FitnessService_StoreFitnessScore_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_StoreFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_FitnessService_StoreFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_FitnessService_StoreFitnessScore_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_StoreFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPatch, pattern_FitnessService_UpdateFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_FitnessService_UpdateFitnessScore_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_UpdateFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPatch, pattern_FitnessService_UpdateFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_FitnessService_UpdateFitnessScore_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_UpdateFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_FitnessService_DeleteFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_FitnessService_DeleteFitnessScore_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_DeleteFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_FitnessService_DeleteFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_FitnessService_DeleteFitnessScore_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_DeleteFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + + return nil +} + +// RegisterFitnessServiceHandlerFromEndpoint is same as RegisterFitnessServiceHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterFitnessServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.NewClient(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + return RegisterFitnessServiceHandler(ctx, mux, conn) +} + +// RegisterFitnessServiceHandler registers the http handlers for service FitnessService to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterFitnessServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterFitnessServiceHandlerClient(ctx, mux, NewFitnessServiceClient(conn)) +} + +// RegisterFitnessServiceHandlerClient registers the http handlers for service FitnessService +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "FitnessServiceClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "FitnessServiceClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "FitnessServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. +func RegisterFitnessServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client FitnessServiceClient) error { + mux.Handle(http.MethodPost, pattern_FitnessService_StoreFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_FitnessService_StoreFitnessScore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_StoreFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_FitnessService_StoreFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_FitnessService_StoreFitnessScore_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_StoreFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPatch, pattern_FitnessService_UpdateFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_FitnessService_UpdateFitnessScore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_UpdateFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPatch, pattern_FitnessService_UpdateFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_FitnessService_UpdateFitnessScore_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_UpdateFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_FitnessService_DeleteFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_FitnessService_DeleteFitnessScore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_DeleteFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_FitnessService_DeleteFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_FitnessService_DeleteFitnessScore_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_FitnessService_DeleteFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + return nil +} + +var ( + pattern_FitnessService_StoreFitnessScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"fitness", "v1", "score"}, "")) + pattern_FitnessService_StoreFitnessScore_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"fitness", "score"}, "")) + pattern_FitnessService_UpdateFitnessScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"fitness", "v1", "score"}, "")) + pattern_FitnessService_UpdateFitnessScore_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"fitness", "score"}, "")) + pattern_FitnessService_DeleteFitnessScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"fitness", "v1", "score"}, "")) + pattern_FitnessService_DeleteFitnessScore_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"fitness", "score"}, "")) +) + +var ( + forward_FitnessService_StoreFitnessScore_0 = runtime.ForwardResponseMessage + forward_FitnessService_StoreFitnessScore_1 = runtime.ForwardResponseMessage + forward_FitnessService_UpdateFitnessScore_0 = runtime.ForwardResponseMessage + forward_FitnessService_UpdateFitnessScore_1 = runtime.ForwardResponseMessage + forward_FitnessService_DeleteFitnessScore_0 = runtime.ForwardResponseMessage + forward_FitnessService_DeleteFitnessScore_1 = runtime.ForwardResponseMessage +) diff --git a/campusapis/fitness/v1/fitness.proto b/campusapis/fitness/v1/fitness.proto new file mode 100644 index 0000000..cf976c7 --- /dev/null +++ b/campusapis/fitness/v1/fitness.proto @@ -0,0 +1,133 @@ +syntax = "proto3"; + +package campusapis.fitness.v1; + +import "google/api/annotations.proto"; + +option go_package = "./campusapis/fitness/v1"; + +// 体测成绩服务 +service FitnessService { + // 新增或更新体测成绩 + rpc StoreFitnessScore(StoreFitnessScoreRequest) returns (StoreFitnessScoreResponse) { + option (google.api.http) = { + post: "/fitness/v1/score" + body: "*" + additional_bindings { + post: "/fitness/score" + } + }; + } + + // 更新体测成绩 + rpc UpdateFitnessScore(UpdateFitnessScoreRequest) returns (UpdateFitnessScoreResponse) { + option (google.api.http) = { + patch: "/fitness/v1/score" + body: "*" + additional_bindings { + patch: "/fitness/score" + } + }; + } + + // 删除体测成绩 + rpc DeleteFitnessScore(DeleteFitnessScoreRequest) returns (DeleteFitnessScoreResponse) { + option (google.api.http) = { + delete: "/fitness/v1/score" + additional_bindings { + delete: "/fitness/score" + } + }; + } +} + +// StoreFitnessScoreRequest 新增或更新体测成绩请求 +message StoreFitnessScoreRequest { + string staff_id = 1; + string school_year = 2; + int32 semester = 3; + string gender = 4; + int32 grade = 5; + float height = 6; + float weight = 7; + float bmi = 8; + float run_50m = 9; + float standing_long_jump = 10; + float sit_and_reach = 11; + float run_800m = 12; + float run_1000m = 13; + int32 sit_ups = 14; + int32 pull_ups = 15; + int32 lung_capacity = 16; + float total_score = 17; +} + +// StoreFitnessScoreResponse 新增或更新体测成绩响应 +message StoreFitnessScoreResponse { + int32 error = 1; + string msg = 2; + FitnessScore data = 3; +} + +// UpdateFitnessScoreRequest 更新体测成绩请求 +message UpdateFitnessScoreRequest { + string staff_id = 1; + string school_year = 2; + int32 semester = 3; + string gender = 4; + int32 grade = 5; + float height = 6; + float weight = 7; + float bmi = 8; + float run_50m = 9; + float standing_long_jump = 10; + float sit_and_reach = 11; + float run_800m = 12; + float run_1000m = 13; + int32 sit_ups = 14; + int32 pull_ups = 15; + int32 lung_capacity = 16; + float total_score = 17; +} + +// UpdateFitnessScoreResponse 更新体测成绩响应 +message UpdateFitnessScoreResponse { + int32 error = 1; + string msg = 2; + FitnessScore data = 3; +} + +// DeleteFitnessScoreRequest 删除体测成绩请求 +message DeleteFitnessScoreRequest { + string staff_id = 1; + string school_year = 2; + int32 semester = 3; +} + +// DeleteFitnessScoreResponse 删除体测成绩响应 +message DeleteFitnessScoreResponse { + int32 error = 1; + string msg = 2; +} + +// FitnessScore 体测成绩信息 +message FitnessScore { + string staff_id = 1; + string school_year = 2; + int32 semester = 3; + string gender = 4; + int32 grade = 5; + float height = 6; + float weight = 7; + float bmi = 8; + float run_50m = 9; + float standing_long_jump = 10; + float sit_and_reach = 11; + float run_800m = 12; + float run_1000m = 13; + int32 sit_ups = 14; + int32 pull_ups = 15; + int32 lung_capacity = 16; + float total_score = 17; +} + diff --git a/campusapis/fitness/v1/fitness_grpc.pb.go b/campusapis/fitness/v1/fitness_grpc.pb.go new file mode 100644 index 0000000..2966cf4 --- /dev/null +++ b/campusapis/fitness/v1/fitness_grpc.pb.go @@ -0,0 +1,207 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc (unknown) +// source: campusapis/fitness/v1/fitness.proto + +package fitnessv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + FitnessService_StoreFitnessScore_FullMethodName = "/campusapis.fitness.v1.FitnessService/StoreFitnessScore" + FitnessService_UpdateFitnessScore_FullMethodName = "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore" + FitnessService_DeleteFitnessScore_FullMethodName = "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore" +) + +// FitnessServiceClient is the client API for FitnessService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// 体测成绩服务 +type FitnessServiceClient interface { + // 新增或更新体测成绩 + StoreFitnessScore(ctx context.Context, in *StoreFitnessScoreRequest, opts ...grpc.CallOption) (*StoreFitnessScoreResponse, error) + // 更新体测成绩 + UpdateFitnessScore(ctx context.Context, in *UpdateFitnessScoreRequest, opts ...grpc.CallOption) (*UpdateFitnessScoreResponse, error) + // 删除体测成绩 + DeleteFitnessScore(ctx context.Context, in *DeleteFitnessScoreRequest, opts ...grpc.CallOption) (*DeleteFitnessScoreResponse, error) +} + +type fitnessServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewFitnessServiceClient(cc grpc.ClientConnInterface) FitnessServiceClient { + return &fitnessServiceClient{cc} +} + +func (c *fitnessServiceClient) StoreFitnessScore(ctx context.Context, in *StoreFitnessScoreRequest, opts ...grpc.CallOption) (*StoreFitnessScoreResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StoreFitnessScoreResponse) + err := c.cc.Invoke(ctx, FitnessService_StoreFitnessScore_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *fitnessServiceClient) UpdateFitnessScore(ctx context.Context, in *UpdateFitnessScoreRequest, opts ...grpc.CallOption) (*UpdateFitnessScoreResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdateFitnessScoreResponse) + err := c.cc.Invoke(ctx, FitnessService_UpdateFitnessScore_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *fitnessServiceClient) DeleteFitnessScore(ctx context.Context, in *DeleteFitnessScoreRequest, opts ...grpc.CallOption) (*DeleteFitnessScoreResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DeleteFitnessScoreResponse) + err := c.cc.Invoke(ctx, FitnessService_DeleteFitnessScore_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// FitnessServiceServer is the server API for FitnessService service. +// All implementations must embed UnimplementedFitnessServiceServer +// for forward compatibility. +// +// 体测成绩服务 +type FitnessServiceServer interface { + // 新增或更新体测成绩 + StoreFitnessScore(context.Context, *StoreFitnessScoreRequest) (*StoreFitnessScoreResponse, error) + // 更新体测成绩 + UpdateFitnessScore(context.Context, *UpdateFitnessScoreRequest) (*UpdateFitnessScoreResponse, error) + // 删除体测成绩 + DeleteFitnessScore(context.Context, *DeleteFitnessScoreRequest) (*DeleteFitnessScoreResponse, error) + mustEmbedUnimplementedFitnessServiceServer() +} + +// UnimplementedFitnessServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedFitnessServiceServer struct{} + +func (UnimplementedFitnessServiceServer) StoreFitnessScore(context.Context, *StoreFitnessScoreRequest) (*StoreFitnessScoreResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StoreFitnessScore not implemented") +} +func (UnimplementedFitnessServiceServer) UpdateFitnessScore(context.Context, *UpdateFitnessScoreRequest) (*UpdateFitnessScoreResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateFitnessScore not implemented") +} +func (UnimplementedFitnessServiceServer) DeleteFitnessScore(context.Context, *DeleteFitnessScoreRequest) (*DeleteFitnessScoreResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteFitnessScore not implemented") +} +func (UnimplementedFitnessServiceServer) mustEmbedUnimplementedFitnessServiceServer() {} +func (UnimplementedFitnessServiceServer) testEmbeddedByValue() {} + +// UnsafeFitnessServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to FitnessServiceServer will +// result in compilation errors. +type UnsafeFitnessServiceServer interface { + mustEmbedUnimplementedFitnessServiceServer() +} + +func RegisterFitnessServiceServer(s grpc.ServiceRegistrar, srv FitnessServiceServer) { + // If the following call pancis, it indicates UnimplementedFitnessServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&FitnessService_ServiceDesc, srv) +} + +func _FitnessService_StoreFitnessScore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StoreFitnessScoreRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FitnessServiceServer).StoreFitnessScore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FitnessService_StoreFitnessScore_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FitnessServiceServer).StoreFitnessScore(ctx, req.(*StoreFitnessScoreRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _FitnessService_UpdateFitnessScore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateFitnessScoreRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FitnessServiceServer).UpdateFitnessScore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FitnessService_UpdateFitnessScore_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FitnessServiceServer).UpdateFitnessScore(ctx, req.(*UpdateFitnessScoreRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _FitnessService_DeleteFitnessScore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteFitnessScoreRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(FitnessServiceServer).DeleteFitnessScore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: FitnessService_DeleteFitnessScore_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(FitnessServiceServer).DeleteFitnessScore(ctx, req.(*DeleteFitnessScoreRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// FitnessService_ServiceDesc is the grpc.ServiceDesc for FitnessService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var FitnessService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "campusapis.fitness.v1.FitnessService", + HandlerType: (*FitnessServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "StoreFitnessScore", + Handler: _FitnessService_StoreFitnessScore_Handler, + }, + { + MethodName: "UpdateFitnessScore", + Handler: _FitnessService_UpdateFitnessScore_Handler, + }, + { + MethodName: "DeleteFitnessScore", + Handler: _FitnessService_DeleteFitnessScore_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "campusapis/fitness/v1/fitness.proto", +} diff --git a/docs/swagger/campusapis/fitness/v1/fitness.swagger.json b/docs/swagger/campusapis/fitness/v1/fitness.swagger.json new file mode 100644 index 0000000..282f9e0 --- /dev/null +++ b/docs/swagger/campusapis/fitness/v1/fitness.swagger.json @@ -0,0 +1,736 @@ +{ + "swagger": "2.0", + "info": { + "title": "campusapis/fitness/v1/fitness.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "FitnessService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/fitness/score": { + "delete": { + "summary": "删除体测成绩", + "operationId": "FitnessService_DeleteFitnessScore2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1DeleteFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "staffId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "schoolYear", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "semester", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "FitnessService" + ] + }, + "post": { + "summary": "新增或更新体测成绩", + "operationId": "FitnessService_StoreFitnessScore2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1StoreFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "staffId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "schoolYear", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "semester", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "gender", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "grade", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "height", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "weight", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "bmi", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run50m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "standingLongJump", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "sitAndReach", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run800m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run1000m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "sitUps", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pullUps", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "lungCapacity", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "totalScore", + "in": "query", + "required": false, + "type": "number", + "format": "float" + } + ], + "tags": [ + "FitnessService" + ] + }, + "patch": { + "summary": "更新体测成绩", + "operationId": "FitnessService_UpdateFitnessScore2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "staffId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "schoolYear", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "semester", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "gender", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "grade", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "height", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "weight", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "bmi", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run50m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "standingLongJump", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "sitAndReach", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run800m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run1000m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "sitUps", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pullUps", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "lungCapacity", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "totalScore", + "in": "query", + "required": false, + "type": "number", + "format": "float" + } + ], + "tags": [ + "FitnessService" + ] + } + }, + "/fitness/v1/score": { + "delete": { + "summary": "删除体测成绩", + "operationId": "FitnessService_DeleteFitnessScore", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1DeleteFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "staffId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "schoolYear", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "semester", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "FitnessService" + ] + }, + "post": { + "summary": "新增或更新体测成绩", + "operationId": "FitnessService_StoreFitnessScore", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1StoreFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1StoreFitnessScoreRequest" + } + } + ], + "tags": [ + "FitnessService" + ] + }, + "patch": { + "summary": "更新体测成绩", + "operationId": "FitnessService_UpdateFitnessScore", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1UpdateFitnessScoreRequest" + } + } + ], + "tags": [ + "FitnessService" + ] + } + } + }, + "definitions": { + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string" + } + }, + "additionalProperties": {} + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "v1DeleteFitnessScoreResponse": { + "type": "object", + "properties": { + "error": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + } + }, + "title": "DeleteFitnessScoreResponse 删除体测成绩响应" + }, + "v1FitnessScore": { + "type": "object", + "properties": { + "staffId": { + "type": "string" + }, + "schoolYear": { + "type": "string" + }, + "semester": { + "type": "integer", + "format": "int32" + }, + "gender": { + "type": "string" + }, + "grade": { + "type": "integer", + "format": "int32" + }, + "height": { + "type": "number", + "format": "float" + }, + "weight": { + "type": "number", + "format": "float" + }, + "bmi": { + "type": "number", + "format": "float" + }, + "run50m": { + "type": "number", + "format": "float" + }, + "standingLongJump": { + "type": "number", + "format": "float" + }, + "sitAndReach": { + "type": "number", + "format": "float" + }, + "run800m": { + "type": "number", + "format": "float" + }, + "run1000m": { + "type": "number", + "format": "float" + }, + "sitUps": { + "type": "integer", + "format": "int32" + }, + "pullUps": { + "type": "integer", + "format": "int32" + }, + "lungCapacity": { + "type": "integer", + "format": "int32" + }, + "totalScore": { + "type": "number", + "format": "float" + } + }, + "title": "FitnessScore 体测成绩信息" + }, + "v1StoreFitnessScoreRequest": { + "type": "object", + "properties": { + "staffId": { + "type": "string" + }, + "schoolYear": { + "type": "string" + }, + "semester": { + "type": "integer", + "format": "int32" + }, + "gender": { + "type": "string" + }, + "grade": { + "type": "integer", + "format": "int32" + }, + "height": { + "type": "number", + "format": "float" + }, + "weight": { + "type": "number", + "format": "float" + }, + "bmi": { + "type": "number", + "format": "float" + }, + "run50m": { + "type": "number", + "format": "float" + }, + "standingLongJump": { + "type": "number", + "format": "float" + }, + "sitAndReach": { + "type": "number", + "format": "float" + }, + "run800m": { + "type": "number", + "format": "float" + }, + "run1000m": { + "type": "number", + "format": "float" + }, + "sitUps": { + "type": "integer", + "format": "int32" + }, + "pullUps": { + "type": "integer", + "format": "int32" + }, + "lungCapacity": { + "type": "integer", + "format": "int32" + }, + "totalScore": { + "type": "number", + "format": "float" + } + }, + "title": "StoreFitnessScoreRequest 新增或更新体测成绩请求" + }, + "v1StoreFitnessScoreResponse": { + "type": "object", + "properties": { + "error": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + }, + "data": { + "$ref": "#/definitions/v1FitnessScore" + } + }, + "title": "StoreFitnessScoreResponse 新增或更新体测成绩响应" + }, + "v1UpdateFitnessScoreRequest": { + "type": "object", + "properties": { + "staffId": { + "type": "string" + }, + "schoolYear": { + "type": "string" + }, + "semester": { + "type": "integer", + "format": "int32" + }, + "gender": { + "type": "string" + }, + "grade": { + "type": "integer", + "format": "int32" + }, + "height": { + "type": "number", + "format": "float" + }, + "weight": { + "type": "number", + "format": "float" + }, + "bmi": { + "type": "number", + "format": "float" + }, + "run50m": { + "type": "number", + "format": "float" + }, + "standingLongJump": { + "type": "number", + "format": "float" + }, + "sitAndReach": { + "type": "number", + "format": "float" + }, + "run800m": { + "type": "number", + "format": "float" + }, + "run1000m": { + "type": "number", + "format": "float" + }, + "sitUps": { + "type": "integer", + "format": "int32" + }, + "pullUps": { + "type": "integer", + "format": "int32" + }, + "lungCapacity": { + "type": "integer", + "format": "int32" + }, + "totalScore": { + "type": "number", + "format": "float" + } + }, + "title": "UpdateFitnessScoreRequest 更新体测成绩请求" + }, + "v1UpdateFitnessScoreResponse": { + "type": "object", + "properties": { + "error": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + }, + "data": { + "$ref": "#/definitions/v1FitnessScore" + } + }, + "title": "UpdateFitnessScoreResponse 更新体测成绩响应" + } + } +} From d48f4ffc8f4768dd8581c37750e1689b7c1e0a60 Mon Sep 17 00:00:00 2001 From: Jiahe114514 Date: Wed, 21 Jan 2026 21:35:17 +0800 Subject: [PATCH 3/3] chore: remove fitness proto --- campusapis/fitness/v1/fitness.pb.go | 1022 ------------ campusapis/fitness/v1/fitness.pb.gw.go | 501 ------ campusapis/fitness/v1/fitness.proto | 133 -- campusapis/fitness/v1/fitness_grpc.pb.go | 207 --- campusapis/staff/v1/campus.pb.go | 1429 ++++++++++++++--- campusapis/staff/v1/campus.pb.gw.go | 410 +++++ campusapis/staff/v1/campus.proto | 128 +- campusapis/staff/v1/campus_grpc.pb.go | 120 ++ .../fitness/v1/fitness.swagger.json | 736 --------- .../campusapis/staff/v1/campus.swagger.json | 686 ++++++++ 10 files changed, 2519 insertions(+), 2853 deletions(-) delete mode 100644 campusapis/fitness/v1/fitness.pb.go delete mode 100644 campusapis/fitness/v1/fitness.pb.gw.go delete mode 100644 campusapis/fitness/v1/fitness.proto delete mode 100644 campusapis/fitness/v1/fitness_grpc.pb.go delete mode 100644 docs/swagger/campusapis/fitness/v1/fitness.swagger.json diff --git a/campusapis/fitness/v1/fitness.pb.go b/campusapis/fitness/v1/fitness.pb.go deleted file mode 100644 index c6d8e65..0000000 --- a/campusapis/fitness/v1/fitness.pb.go +++ /dev/null @@ -1,1022 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.36.5 -// protoc (unknown) -// source: campusapis/fitness/v1/fitness.proto - -package fitnessv1 - -import ( - _ "google.golang.org/genproto/googleapis/api/annotations" - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" - reflect "reflect" - sync "sync" - unsafe "unsafe" -) - -const ( - // Verify that this generated code is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) - // Verify that runtime/protoimpl is sufficiently up-to-date. - _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) -) - -// StoreFitnessScoreRequest 新增或更新体测成绩请求 -type StoreFitnessScoreRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` - SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` - Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` - Gender string `protobuf:"bytes,4,opt,name=gender,proto3" json:"gender,omitempty"` - Grade int32 `protobuf:"varint,5,opt,name=grade,proto3" json:"grade,omitempty"` - Height float32 `protobuf:"fixed32,6,opt,name=height,proto3" json:"height,omitempty"` - Weight float32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"` - Bmi float32 `protobuf:"fixed32,8,opt,name=bmi,proto3" json:"bmi,omitempty"` - Run_50M float32 `protobuf:"fixed32,9,opt,name=run_50m,json=run50m,proto3" json:"run_50m,omitempty"` - StandingLongJump float32 `protobuf:"fixed32,10,opt,name=standing_long_jump,json=standingLongJump,proto3" json:"standing_long_jump,omitempty"` - SitAndReach float32 `protobuf:"fixed32,11,opt,name=sit_and_reach,json=sitAndReach,proto3" json:"sit_and_reach,omitempty"` - Run_800M float32 `protobuf:"fixed32,12,opt,name=run_800m,json=run800m,proto3" json:"run_800m,omitempty"` - Run_1000M float32 `protobuf:"fixed32,13,opt,name=run_1000m,json=run1000m,proto3" json:"run_1000m,omitempty"` - SitUps int32 `protobuf:"varint,14,opt,name=sit_ups,json=sitUps,proto3" json:"sit_ups,omitempty"` - PullUps int32 `protobuf:"varint,15,opt,name=pull_ups,json=pullUps,proto3" json:"pull_ups,omitempty"` - LungCapacity int32 `protobuf:"varint,16,opt,name=lung_capacity,json=lungCapacity,proto3" json:"lung_capacity,omitempty"` - TotalScore float32 `protobuf:"fixed32,17,opt,name=total_score,json=totalScore,proto3" json:"total_score,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StoreFitnessScoreRequest) Reset() { - *x = StoreFitnessScoreRequest{} - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StoreFitnessScoreRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StoreFitnessScoreRequest) ProtoMessage() {} - -func (x *StoreFitnessScoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[0] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StoreFitnessScoreRequest.ProtoReflect.Descriptor instead. -func (*StoreFitnessScoreRequest) Descriptor() ([]byte, []int) { - return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{0} -} - -func (x *StoreFitnessScoreRequest) GetStaffId() string { - if x != nil { - return x.StaffId - } - return "" -} - -func (x *StoreFitnessScoreRequest) GetSchoolYear() string { - if x != nil { - return x.SchoolYear - } - return "" -} - -func (x *StoreFitnessScoreRequest) GetSemester() int32 { - if x != nil { - return x.Semester - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetGender() string { - if x != nil { - return x.Gender - } - return "" -} - -func (x *StoreFitnessScoreRequest) GetGrade() int32 { - if x != nil { - return x.Grade - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetHeight() float32 { - if x != nil { - return x.Height - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetWeight() float32 { - if x != nil { - return x.Weight - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetBmi() float32 { - if x != nil { - return x.Bmi - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetRun_50M() float32 { - if x != nil { - return x.Run_50M - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetStandingLongJump() float32 { - if x != nil { - return x.StandingLongJump - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetSitAndReach() float32 { - if x != nil { - return x.SitAndReach - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetRun_800M() float32 { - if x != nil { - return x.Run_800M - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetRun_1000M() float32 { - if x != nil { - return x.Run_1000M - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetSitUps() int32 { - if x != nil { - return x.SitUps - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetPullUps() int32 { - if x != nil { - return x.PullUps - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetLungCapacity() int32 { - if x != nil { - return x.LungCapacity - } - return 0 -} - -func (x *StoreFitnessScoreRequest) GetTotalScore() float32 { - if x != nil { - return x.TotalScore - } - return 0 -} - -// StoreFitnessScoreResponse 新增或更新体测成绩响应 -type StoreFitnessScoreResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - Data *FitnessScore `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *StoreFitnessScoreResponse) Reset() { - *x = StoreFitnessScoreResponse{} - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *StoreFitnessScoreResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StoreFitnessScoreResponse) ProtoMessage() {} - -func (x *StoreFitnessScoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[1] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StoreFitnessScoreResponse.ProtoReflect.Descriptor instead. -func (*StoreFitnessScoreResponse) Descriptor() ([]byte, []int) { - return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{1} -} - -func (x *StoreFitnessScoreResponse) GetError() int32 { - if x != nil { - return x.Error - } - return 0 -} - -func (x *StoreFitnessScoreResponse) GetMsg() string { - if x != nil { - return x.Msg - } - return "" -} - -func (x *StoreFitnessScoreResponse) GetData() *FitnessScore { - if x != nil { - return x.Data - } - return nil -} - -// UpdateFitnessScoreRequest 更新体测成绩请求 -type UpdateFitnessScoreRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` - SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` - Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` - Gender string `protobuf:"bytes,4,opt,name=gender,proto3" json:"gender,omitempty"` - Grade int32 `protobuf:"varint,5,opt,name=grade,proto3" json:"grade,omitempty"` - Height float32 `protobuf:"fixed32,6,opt,name=height,proto3" json:"height,omitempty"` - Weight float32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"` - Bmi float32 `protobuf:"fixed32,8,opt,name=bmi,proto3" json:"bmi,omitempty"` - Run_50M float32 `protobuf:"fixed32,9,opt,name=run_50m,json=run50m,proto3" json:"run_50m,omitempty"` - StandingLongJump float32 `protobuf:"fixed32,10,opt,name=standing_long_jump,json=standingLongJump,proto3" json:"standing_long_jump,omitempty"` - SitAndReach float32 `protobuf:"fixed32,11,opt,name=sit_and_reach,json=sitAndReach,proto3" json:"sit_and_reach,omitempty"` - Run_800M float32 `protobuf:"fixed32,12,opt,name=run_800m,json=run800m,proto3" json:"run_800m,omitempty"` - Run_1000M float32 `protobuf:"fixed32,13,opt,name=run_1000m,json=run1000m,proto3" json:"run_1000m,omitempty"` - SitUps int32 `protobuf:"varint,14,opt,name=sit_ups,json=sitUps,proto3" json:"sit_ups,omitempty"` - PullUps int32 `protobuf:"varint,15,opt,name=pull_ups,json=pullUps,proto3" json:"pull_ups,omitempty"` - LungCapacity int32 `protobuf:"varint,16,opt,name=lung_capacity,json=lungCapacity,proto3" json:"lung_capacity,omitempty"` - TotalScore float32 `protobuf:"fixed32,17,opt,name=total_score,json=totalScore,proto3" json:"total_score,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateFitnessScoreRequest) Reset() { - *x = UpdateFitnessScoreRequest{} - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateFitnessScoreRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateFitnessScoreRequest) ProtoMessage() {} - -func (x *UpdateFitnessScoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[2] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateFitnessScoreRequest.ProtoReflect.Descriptor instead. -func (*UpdateFitnessScoreRequest) Descriptor() ([]byte, []int) { - return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{2} -} - -func (x *UpdateFitnessScoreRequest) GetStaffId() string { - if x != nil { - return x.StaffId - } - return "" -} - -func (x *UpdateFitnessScoreRequest) GetSchoolYear() string { - if x != nil { - return x.SchoolYear - } - return "" -} - -func (x *UpdateFitnessScoreRequest) GetSemester() int32 { - if x != nil { - return x.Semester - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetGender() string { - if x != nil { - return x.Gender - } - return "" -} - -func (x *UpdateFitnessScoreRequest) GetGrade() int32 { - if x != nil { - return x.Grade - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetHeight() float32 { - if x != nil { - return x.Height - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetWeight() float32 { - if x != nil { - return x.Weight - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetBmi() float32 { - if x != nil { - return x.Bmi - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetRun_50M() float32 { - if x != nil { - return x.Run_50M - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetStandingLongJump() float32 { - if x != nil { - return x.StandingLongJump - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetSitAndReach() float32 { - if x != nil { - return x.SitAndReach - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetRun_800M() float32 { - if x != nil { - return x.Run_800M - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetRun_1000M() float32 { - if x != nil { - return x.Run_1000M - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetSitUps() int32 { - if x != nil { - return x.SitUps - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetPullUps() int32 { - if x != nil { - return x.PullUps - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetLungCapacity() int32 { - if x != nil { - return x.LungCapacity - } - return 0 -} - -func (x *UpdateFitnessScoreRequest) GetTotalScore() float32 { - if x != nil { - return x.TotalScore - } - return 0 -} - -// UpdateFitnessScoreResponse 更新体测成绩响应 -type UpdateFitnessScoreResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - Data *FitnessScore `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateFitnessScoreResponse) Reset() { - *x = UpdateFitnessScoreResponse{} - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateFitnessScoreResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateFitnessScoreResponse) ProtoMessage() {} - -func (x *UpdateFitnessScoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateFitnessScoreResponse.ProtoReflect.Descriptor instead. -func (*UpdateFitnessScoreResponse) Descriptor() ([]byte, []int) { - return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{3} -} - -func (x *UpdateFitnessScoreResponse) GetError() int32 { - if x != nil { - return x.Error - } - return 0 -} - -func (x *UpdateFitnessScoreResponse) GetMsg() string { - if x != nil { - return x.Msg - } - return "" -} - -func (x *UpdateFitnessScoreResponse) GetData() *FitnessScore { - if x != nil { - return x.Data - } - return nil -} - -// DeleteFitnessScoreRequest 删除体测成绩请求 -type DeleteFitnessScoreRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` - SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` - Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteFitnessScoreRequest) Reset() { - *x = DeleteFitnessScoreRequest{} - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteFitnessScoreRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteFitnessScoreRequest) ProtoMessage() {} - -func (x *DeleteFitnessScoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteFitnessScoreRequest.ProtoReflect.Descriptor instead. -func (*DeleteFitnessScoreRequest) Descriptor() ([]byte, []int) { - return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{4} -} - -func (x *DeleteFitnessScoreRequest) GetStaffId() string { - if x != nil { - return x.StaffId - } - return "" -} - -func (x *DeleteFitnessScoreRequest) GetSchoolYear() string { - if x != nil { - return x.SchoolYear - } - return "" -} - -func (x *DeleteFitnessScoreRequest) GetSemester() int32 { - if x != nil { - return x.Semester - } - return 0 -} - -// DeleteFitnessScoreResponse 删除体测成绩响应 -type DeleteFitnessScoreResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` - Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *DeleteFitnessScoreResponse) Reset() { - *x = DeleteFitnessScoreResponse{} - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *DeleteFitnessScoreResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeleteFitnessScoreResponse) ProtoMessage() {} - -func (x *DeleteFitnessScoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeleteFitnessScoreResponse.ProtoReflect.Descriptor instead. -func (*DeleteFitnessScoreResponse) Descriptor() ([]byte, []int) { - return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{5} -} - -func (x *DeleteFitnessScoreResponse) GetError() int32 { - if x != nil { - return x.Error - } - return 0 -} - -func (x *DeleteFitnessScoreResponse) GetMsg() string { - if x != nil { - return x.Msg - } - return "" -} - -// FitnessScore 体测成绩信息 -type FitnessScore struct { - state protoimpl.MessageState `protogen:"open.v1"` - StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` - SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` - Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` - Gender string `protobuf:"bytes,4,opt,name=gender,proto3" json:"gender,omitempty"` - Grade int32 `protobuf:"varint,5,opt,name=grade,proto3" json:"grade,omitempty"` - Height float32 `protobuf:"fixed32,6,opt,name=height,proto3" json:"height,omitempty"` - Weight float32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"` - Bmi float32 `protobuf:"fixed32,8,opt,name=bmi,proto3" json:"bmi,omitempty"` - Run_50M float32 `protobuf:"fixed32,9,opt,name=run_50m,json=run50m,proto3" json:"run_50m,omitempty"` - StandingLongJump float32 `protobuf:"fixed32,10,opt,name=standing_long_jump,json=standingLongJump,proto3" json:"standing_long_jump,omitempty"` - SitAndReach float32 `protobuf:"fixed32,11,opt,name=sit_and_reach,json=sitAndReach,proto3" json:"sit_and_reach,omitempty"` - Run_800M float32 `protobuf:"fixed32,12,opt,name=run_800m,json=run800m,proto3" json:"run_800m,omitempty"` - Run_1000M float32 `protobuf:"fixed32,13,opt,name=run_1000m,json=run1000m,proto3" json:"run_1000m,omitempty"` - SitUps int32 `protobuf:"varint,14,opt,name=sit_ups,json=sitUps,proto3" json:"sit_ups,omitempty"` - PullUps int32 `protobuf:"varint,15,opt,name=pull_ups,json=pullUps,proto3" json:"pull_ups,omitempty"` - LungCapacity int32 `protobuf:"varint,16,opt,name=lung_capacity,json=lungCapacity,proto3" json:"lung_capacity,omitempty"` - TotalScore float32 `protobuf:"fixed32,17,opt,name=total_score,json=totalScore,proto3" json:"total_score,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *FitnessScore) Reset() { - *x = FitnessScore{} - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *FitnessScore) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FitnessScore) ProtoMessage() {} - -func (x *FitnessScore) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_fitness_v1_fitness_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FitnessScore.ProtoReflect.Descriptor instead. -func (*FitnessScore) Descriptor() ([]byte, []int) { - return file_campusapis_fitness_v1_fitness_proto_rawDescGZIP(), []int{6} -} - -func (x *FitnessScore) GetStaffId() string { - if x != nil { - return x.StaffId - } - return "" -} - -func (x *FitnessScore) GetSchoolYear() string { - if x != nil { - return x.SchoolYear - } - return "" -} - -func (x *FitnessScore) GetSemester() int32 { - if x != nil { - return x.Semester - } - return 0 -} - -func (x *FitnessScore) GetGender() string { - if x != nil { - return x.Gender - } - return "" -} - -func (x *FitnessScore) GetGrade() int32 { - if x != nil { - return x.Grade - } - return 0 -} - -func (x *FitnessScore) GetHeight() float32 { - if x != nil { - return x.Height - } - return 0 -} - -func (x *FitnessScore) GetWeight() float32 { - if x != nil { - return x.Weight - } - return 0 -} - -func (x *FitnessScore) GetBmi() float32 { - if x != nil { - return x.Bmi - } - return 0 -} - -func (x *FitnessScore) GetRun_50M() float32 { - if x != nil { - return x.Run_50M - } - return 0 -} - -func (x *FitnessScore) GetStandingLongJump() float32 { - if x != nil { - return x.StandingLongJump - } - return 0 -} - -func (x *FitnessScore) GetSitAndReach() float32 { - if x != nil { - return x.SitAndReach - } - return 0 -} - -func (x *FitnessScore) GetRun_800M() float32 { - if x != nil { - return x.Run_800M - } - return 0 -} - -func (x *FitnessScore) GetRun_1000M() float32 { - if x != nil { - return x.Run_1000M - } - return 0 -} - -func (x *FitnessScore) GetSitUps() int32 { - if x != nil { - return x.SitUps - } - return 0 -} - -func (x *FitnessScore) GetPullUps() int32 { - if x != nil { - return x.PullUps - } - return 0 -} - -func (x *FitnessScore) GetLungCapacity() int32 { - if x != nil { - return x.LungCapacity - } - return 0 -} - -func (x *FitnessScore) GetTotalScore() float32 { - if x != nil { - return x.TotalScore - } - return 0 -} - -var File_campusapis_fitness_v1_fitness_proto protoreflect.FileDescriptor - -var file_campusapis_fitness_v1_fitness_proto_rawDesc = string([]byte{ - 0x0a, 0x23, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x66, 0x69, 0x74, - 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xff, 0x03, 0x0a, 0x18, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, 0x66, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, 0x66, - 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, 0x61, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, - 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, - 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x16, 0x0a, - 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x62, 0x6d, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x62, 0x6d, 0x69, 0x12, - 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x5f, 0x35, 0x30, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x06, 0x72, 0x75, 0x6e, 0x35, 0x30, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6e, - 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x6f, - 0x6e, 0x67, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x74, 0x5f, 0x61, 0x6e, - 0x64, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x73, - 0x69, 0x74, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, - 0x6e, 0x5f, 0x38, 0x30, 0x30, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, 0x75, - 0x6e, 0x38, 0x30, 0x30, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x31, 0x30, 0x30, - 0x30, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x31, 0x30, 0x30, - 0x30, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0e, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x69, 0x74, 0x55, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, - 0x75, 0x6c, 0x6c, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, - 0x75, 0x6c, 0x6c, 0x55, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x75, 0x6e, 0x67, 0x5f, 0x63, - 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, - 0x75, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x7c, 0x0a, 0x19, - 0x53, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, - 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, - 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x23, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, - 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, - 0x63, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x80, 0x04, 0x0a, 0x19, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, - 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, - 0x66, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, - 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, - 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x62, 0x6d, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x62, 0x6d, 0x69, - 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x5f, 0x35, 0x30, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x06, 0x72, 0x75, 0x6e, 0x35, 0x30, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, - 0x6f, 0x6e, 0x67, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x74, 0x5f, 0x61, - 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, - 0x73, 0x69, 0x74, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, - 0x75, 0x6e, 0x5f, 0x38, 0x30, 0x30, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, - 0x75, 0x6e, 0x38, 0x30, 0x30, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x31, 0x30, - 0x30, 0x30, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x31, 0x30, - 0x30, 0x30, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x69, 0x74, 0x55, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, - 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x70, 0x75, 0x6c, 0x6c, 0x55, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x75, 0x6e, 0x67, 0x5f, - 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x6c, 0x75, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x7d, 0x0a, - 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, - 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6d, 0x73, 0x67, 0x12, 0x37, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, - 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, - 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x73, 0x0a, 0x19, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, - 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, - 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, - 0x66, 0x66, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, - 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, - 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, - 0x72, 0x22, 0x44, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, - 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0xf3, 0x03, 0x0a, 0x0c, 0x46, 0x69, 0x74, 0x6e, - 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, - 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, - 0x66, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, - 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, - 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, - 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x62, 0x6d, 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x62, 0x6d, 0x69, - 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6e, 0x5f, 0x35, 0x30, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x06, 0x72, 0x75, 0x6e, 0x35, 0x30, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, - 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, - 0x6f, 0x6e, 0x67, 0x4a, 0x75, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x74, 0x5f, 0x61, - 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, - 0x73, 0x69, 0x74, 0x41, 0x6e, 0x64, 0x52, 0x65, 0x61, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, - 0x75, 0x6e, 0x5f, 0x38, 0x30, 0x30, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, - 0x75, 0x6e, 0x38, 0x30, 0x30, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x31, 0x30, - 0x30, 0x30, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x31, 0x30, - 0x30, 0x30, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0e, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x69, 0x74, 0x55, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, - 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x70, 0x75, 0x6c, 0x6c, 0x55, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x75, 0x6e, 0x67, 0x5f, - 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, - 0x6c, 0x75, 0x6e, 0x67, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x32, 0x8e, 0x04, - 0x0a, 0x0e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0xa6, 0x01, 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, - 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x28, 0x3a, 0x01, 0x2a, 0x5a, 0x10, 0x22, 0x0e, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, - 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x11, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, - 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0xa9, 0x01, 0x0a, 0x12, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, - 0x12, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, - 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, - 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, - 0x5a, 0x10, 0x32, 0x0e, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x32, 0x11, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0xa6, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x30, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, - 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, - 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, - 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, - 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x5a, 0x10, 0x2a, 0x0e, 0x2f, 0x66, 0x69, - 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x2a, 0x11, 0x2f, 0x66, 0x69, - 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0xe0, - 0x01, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x46, 0x69, - 0x74, 0x6e, 0x65, 0x73, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3f, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x64, 0x75, 0x68, 0x65, 0x6c, 0x70, - 0x2f, 0x61, 0x70, 0x69, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x64, 0x6b, 0x2f, 0x63, 0x61, - 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, - 0x2f, 0x76, 0x31, 0x3b, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, - 0x43, 0x46, 0x58, 0xaa, 0x02, 0x15, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x15, 0x43, 0x61, - 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, - 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x21, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, - 0x5c, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x17, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x3a, 0x3a, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -}) - -var ( - file_campusapis_fitness_v1_fitness_proto_rawDescOnce sync.Once - file_campusapis_fitness_v1_fitness_proto_rawDescData []byte -) - -func file_campusapis_fitness_v1_fitness_proto_rawDescGZIP() []byte { - file_campusapis_fitness_v1_fitness_proto_rawDescOnce.Do(func() { - file_campusapis_fitness_v1_fitness_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_campusapis_fitness_v1_fitness_proto_rawDesc), len(file_campusapis_fitness_v1_fitness_proto_rawDesc))) - }) - return file_campusapis_fitness_v1_fitness_proto_rawDescData -} - -var file_campusapis_fitness_v1_fitness_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_campusapis_fitness_v1_fitness_proto_goTypes = []any{ - (*StoreFitnessScoreRequest)(nil), // 0: campusapis.fitness.v1.StoreFitnessScoreRequest - (*StoreFitnessScoreResponse)(nil), // 1: campusapis.fitness.v1.StoreFitnessScoreResponse - (*UpdateFitnessScoreRequest)(nil), // 2: campusapis.fitness.v1.UpdateFitnessScoreRequest - (*UpdateFitnessScoreResponse)(nil), // 3: campusapis.fitness.v1.UpdateFitnessScoreResponse - (*DeleteFitnessScoreRequest)(nil), // 4: campusapis.fitness.v1.DeleteFitnessScoreRequest - (*DeleteFitnessScoreResponse)(nil), // 5: campusapis.fitness.v1.DeleteFitnessScoreResponse - (*FitnessScore)(nil), // 6: campusapis.fitness.v1.FitnessScore -} -var file_campusapis_fitness_v1_fitness_proto_depIdxs = []int32{ - 6, // 0: campusapis.fitness.v1.StoreFitnessScoreResponse.data:type_name -> campusapis.fitness.v1.FitnessScore - 6, // 1: campusapis.fitness.v1.UpdateFitnessScoreResponse.data:type_name -> campusapis.fitness.v1.FitnessScore - 0, // 2: campusapis.fitness.v1.FitnessService.StoreFitnessScore:input_type -> campusapis.fitness.v1.StoreFitnessScoreRequest - 2, // 3: campusapis.fitness.v1.FitnessService.UpdateFitnessScore:input_type -> campusapis.fitness.v1.UpdateFitnessScoreRequest - 4, // 4: campusapis.fitness.v1.FitnessService.DeleteFitnessScore:input_type -> campusapis.fitness.v1.DeleteFitnessScoreRequest - 1, // 5: campusapis.fitness.v1.FitnessService.StoreFitnessScore:output_type -> campusapis.fitness.v1.StoreFitnessScoreResponse - 3, // 6: campusapis.fitness.v1.FitnessService.UpdateFitnessScore:output_type -> campusapis.fitness.v1.UpdateFitnessScoreResponse - 5, // 7: campusapis.fitness.v1.FitnessService.DeleteFitnessScore:output_type -> campusapis.fitness.v1.DeleteFitnessScoreResponse - 5, // [5:8] is the sub-list for method output_type - 2, // [2:5] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_campusapis_fitness_v1_fitness_proto_init() } -func file_campusapis_fitness_v1_fitness_proto_init() { - if File_campusapis_fitness_v1_fitness_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: unsafe.Slice(unsafe.StringData(file_campusapis_fitness_v1_fitness_proto_rawDesc), len(file_campusapis_fitness_v1_fitness_proto_rawDesc)), - NumEnums: 0, - NumMessages: 7, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_campusapis_fitness_v1_fitness_proto_goTypes, - DependencyIndexes: file_campusapis_fitness_v1_fitness_proto_depIdxs, - MessageInfos: file_campusapis_fitness_v1_fitness_proto_msgTypes, - }.Build() - File_campusapis_fitness_v1_fitness_proto = out.File - file_campusapis_fitness_v1_fitness_proto_goTypes = nil - file_campusapis_fitness_v1_fitness_proto_depIdxs = nil -} diff --git a/campusapis/fitness/v1/fitness.pb.gw.go b/campusapis/fitness/v1/fitness.pb.gw.go deleted file mode 100644 index 9f1d992..0000000 --- a/campusapis/fitness/v1/fitness.pb.gw.go +++ /dev/null @@ -1,501 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: campusapis/fitness/v1/fitness.proto - -/* -Package fitnessv1 is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package fitnessv1 - -import ( - "context" - "errors" - "io" - "net/http" - - "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" - "github.com/grpc-ecosystem/grpc-gateway/v2/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/proto" -) - -// Suppress "imported and not used" errors -var ( - _ codes.Code - _ io.Reader - _ status.Status - _ = errors.New - _ = runtime.String - _ = utilities.NewDoubleArray - _ = metadata.Join -) - -func request_FitnessService_StoreFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq StoreFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.StoreFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_FitnessService_StoreFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq StoreFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.StoreFitnessScore(ctx, &protoReq) - return msg, metadata, err -} - -var filter_FitnessService_StoreFitnessScore_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_FitnessService_StoreFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq StoreFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_StoreFitnessScore_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.StoreFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_FitnessService_StoreFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq StoreFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_StoreFitnessScore_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.StoreFitnessScore(ctx, &protoReq) - return msg, metadata, err -} - -func request_FitnessService_UpdateFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq UpdateFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.UpdateFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_FitnessService_UpdateFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq UpdateFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.UpdateFitnessScore(ctx, &protoReq) - return msg, metadata, err -} - -var filter_FitnessService_UpdateFitnessScore_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_FitnessService_UpdateFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq UpdateFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_UpdateFitnessScore_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.UpdateFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_FitnessService_UpdateFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq UpdateFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_UpdateFitnessScore_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.UpdateFitnessScore(ctx, &protoReq) - return msg, metadata, err -} - -var filter_FitnessService_DeleteFitnessScore_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_FitnessService_DeleteFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_DeleteFitnessScore_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.DeleteFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_FitnessService_DeleteFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_DeleteFitnessScore_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.DeleteFitnessScore(ctx, &protoReq) - return msg, metadata, err -} - -var filter_FitnessService_DeleteFitnessScore_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} - -func request_FitnessService_DeleteFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, client FitnessServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_DeleteFitnessScore_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.DeleteFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err -} - -func local_request_FitnessService_DeleteFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, server FitnessServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var ( - protoReq DeleteFitnessScoreRequest - metadata runtime.ServerMetadata - ) - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_FitnessService_DeleteFitnessScore_1); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.DeleteFitnessScore(ctx, &protoReq) - return msg, metadata, err -} - -// RegisterFitnessServiceHandlerServer registers the http handlers for service FitnessService to "mux". -// UnaryRPC :call FitnessServiceServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterFitnessServiceHandlerFromEndpoint instead. -// GRPC interceptors will not work for this type of registration. To use interceptors, you must use the "runtime.WithMiddlewares" option in the "runtime.NewServeMux" call. -func RegisterFitnessServiceHandlerServer(ctx context.Context, mux *runtime.ServeMux, server FitnessServiceServer) error { - mux.Handle(http.MethodPost, pattern_FitnessService_StoreFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_FitnessService_StoreFitnessScore_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_StoreFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_FitnessService_StoreFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_FitnessService_StoreFitnessScore_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_StoreFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPatch, pattern_FitnessService_UpdateFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_FitnessService_UpdateFitnessScore_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_UpdateFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPatch, pattern_FitnessService_UpdateFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_FitnessService_UpdateFitnessScore_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_UpdateFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_FitnessService_DeleteFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_FitnessService_DeleteFitnessScore_0(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_DeleteFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_FitnessService_DeleteFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_FitnessService_DeleteFitnessScore_1(annotatedContext, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_DeleteFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - - return nil -} - -// RegisterFitnessServiceHandlerFromEndpoint is same as RegisterFitnessServiceHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterFitnessServiceHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.NewClient(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Errorf("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - return RegisterFitnessServiceHandler(ctx, mux, conn) -} - -// RegisterFitnessServiceHandler registers the http handlers for service FitnessService to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterFitnessServiceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterFitnessServiceHandlerClient(ctx, mux, NewFitnessServiceClient(conn)) -} - -// RegisterFitnessServiceHandlerClient registers the http handlers for service FitnessService -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "FitnessServiceClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "FitnessServiceClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "FitnessServiceClient" to call the correct interceptors. This client ignores the HTTP middlewares. -func RegisterFitnessServiceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client FitnessServiceClient) error { - mux.Handle(http.MethodPost, pattern_FitnessService_StoreFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_FitnessService_StoreFitnessScore_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_StoreFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPost, pattern_FitnessService_StoreFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_FitnessService_StoreFitnessScore_1(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_StoreFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPatch, pattern_FitnessService_UpdateFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_FitnessService_UpdateFitnessScore_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_UpdateFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodPatch, pattern_FitnessService_UpdateFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_FitnessService_UpdateFitnessScore_1(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_UpdateFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_FitnessService_DeleteFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/v1/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_FitnessService_DeleteFitnessScore_0(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_DeleteFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - mux.Handle(http.MethodDelete, pattern_FitnessService_DeleteFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_FitnessService_DeleteFitnessScore_1(annotatedContext, inboundMarshaler, client, req, pathParams) - annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) - if err != nil { - runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) - return - } - forward_FitnessService_DeleteFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - }) - return nil -} - -var ( - pattern_FitnessService_StoreFitnessScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"fitness", "v1", "score"}, "")) - pattern_FitnessService_StoreFitnessScore_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"fitness", "score"}, "")) - pattern_FitnessService_UpdateFitnessScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"fitness", "v1", "score"}, "")) - pattern_FitnessService_UpdateFitnessScore_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"fitness", "score"}, "")) - pattern_FitnessService_DeleteFitnessScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"fitness", "v1", "score"}, "")) - pattern_FitnessService_DeleteFitnessScore_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"fitness", "score"}, "")) -) - -var ( - forward_FitnessService_StoreFitnessScore_0 = runtime.ForwardResponseMessage - forward_FitnessService_StoreFitnessScore_1 = runtime.ForwardResponseMessage - forward_FitnessService_UpdateFitnessScore_0 = runtime.ForwardResponseMessage - forward_FitnessService_UpdateFitnessScore_1 = runtime.ForwardResponseMessage - forward_FitnessService_DeleteFitnessScore_0 = runtime.ForwardResponseMessage - forward_FitnessService_DeleteFitnessScore_1 = runtime.ForwardResponseMessage -) diff --git a/campusapis/fitness/v1/fitness.proto b/campusapis/fitness/v1/fitness.proto deleted file mode 100644 index cf976c7..0000000 --- a/campusapis/fitness/v1/fitness.proto +++ /dev/null @@ -1,133 +0,0 @@ -syntax = "proto3"; - -package campusapis.fitness.v1; - -import "google/api/annotations.proto"; - -option go_package = "./campusapis/fitness/v1"; - -// 体测成绩服务 -service FitnessService { - // 新增或更新体测成绩 - rpc StoreFitnessScore(StoreFitnessScoreRequest) returns (StoreFitnessScoreResponse) { - option (google.api.http) = { - post: "/fitness/v1/score" - body: "*" - additional_bindings { - post: "/fitness/score" - } - }; - } - - // 更新体测成绩 - rpc UpdateFitnessScore(UpdateFitnessScoreRequest) returns (UpdateFitnessScoreResponse) { - option (google.api.http) = { - patch: "/fitness/v1/score" - body: "*" - additional_bindings { - patch: "/fitness/score" - } - }; - } - - // 删除体测成绩 - rpc DeleteFitnessScore(DeleteFitnessScoreRequest) returns (DeleteFitnessScoreResponse) { - option (google.api.http) = { - delete: "/fitness/v1/score" - additional_bindings { - delete: "/fitness/score" - } - }; - } -} - -// StoreFitnessScoreRequest 新增或更新体测成绩请求 -message StoreFitnessScoreRequest { - string staff_id = 1; - string school_year = 2; - int32 semester = 3; - string gender = 4; - int32 grade = 5; - float height = 6; - float weight = 7; - float bmi = 8; - float run_50m = 9; - float standing_long_jump = 10; - float sit_and_reach = 11; - float run_800m = 12; - float run_1000m = 13; - int32 sit_ups = 14; - int32 pull_ups = 15; - int32 lung_capacity = 16; - float total_score = 17; -} - -// StoreFitnessScoreResponse 新增或更新体测成绩响应 -message StoreFitnessScoreResponse { - int32 error = 1; - string msg = 2; - FitnessScore data = 3; -} - -// UpdateFitnessScoreRequest 更新体测成绩请求 -message UpdateFitnessScoreRequest { - string staff_id = 1; - string school_year = 2; - int32 semester = 3; - string gender = 4; - int32 grade = 5; - float height = 6; - float weight = 7; - float bmi = 8; - float run_50m = 9; - float standing_long_jump = 10; - float sit_and_reach = 11; - float run_800m = 12; - float run_1000m = 13; - int32 sit_ups = 14; - int32 pull_ups = 15; - int32 lung_capacity = 16; - float total_score = 17; -} - -// UpdateFitnessScoreResponse 更新体测成绩响应 -message UpdateFitnessScoreResponse { - int32 error = 1; - string msg = 2; - FitnessScore data = 3; -} - -// DeleteFitnessScoreRequest 删除体测成绩请求 -message DeleteFitnessScoreRequest { - string staff_id = 1; - string school_year = 2; - int32 semester = 3; -} - -// DeleteFitnessScoreResponse 删除体测成绩响应 -message DeleteFitnessScoreResponse { - int32 error = 1; - string msg = 2; -} - -// FitnessScore 体测成绩信息 -message FitnessScore { - string staff_id = 1; - string school_year = 2; - int32 semester = 3; - string gender = 4; - int32 grade = 5; - float height = 6; - float weight = 7; - float bmi = 8; - float run_50m = 9; - float standing_long_jump = 10; - float sit_and_reach = 11; - float run_800m = 12; - float run_1000m = 13; - int32 sit_ups = 14; - int32 pull_ups = 15; - int32 lung_capacity = 16; - float total_score = 17; -} - diff --git a/campusapis/fitness/v1/fitness_grpc.pb.go b/campusapis/fitness/v1/fitness_grpc.pb.go deleted file mode 100644 index 2966cf4..0000000 --- a/campusapis/fitness/v1/fitness_grpc.pb.go +++ /dev/null @@ -1,207 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.5.1 -// - protoc (unknown) -// source: campusapis/fitness/v1/fitness.proto - -package fitnessv1 - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.64.0 or later. -const _ = grpc.SupportPackageIsVersion9 - -const ( - FitnessService_StoreFitnessScore_FullMethodName = "/campusapis.fitness.v1.FitnessService/StoreFitnessScore" - FitnessService_UpdateFitnessScore_FullMethodName = "/campusapis.fitness.v1.FitnessService/UpdateFitnessScore" - FitnessService_DeleteFitnessScore_FullMethodName = "/campusapis.fitness.v1.FitnessService/DeleteFitnessScore" -) - -// FitnessServiceClient is the client API for FitnessService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -// -// 体测成绩服务 -type FitnessServiceClient interface { - // 新增或更新体测成绩 - StoreFitnessScore(ctx context.Context, in *StoreFitnessScoreRequest, opts ...grpc.CallOption) (*StoreFitnessScoreResponse, error) - // 更新体测成绩 - UpdateFitnessScore(ctx context.Context, in *UpdateFitnessScoreRequest, opts ...grpc.CallOption) (*UpdateFitnessScoreResponse, error) - // 删除体测成绩 - DeleteFitnessScore(ctx context.Context, in *DeleteFitnessScoreRequest, opts ...grpc.CallOption) (*DeleteFitnessScoreResponse, error) -} - -type fitnessServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewFitnessServiceClient(cc grpc.ClientConnInterface) FitnessServiceClient { - return &fitnessServiceClient{cc} -} - -func (c *fitnessServiceClient) StoreFitnessScore(ctx context.Context, in *StoreFitnessScoreRequest, opts ...grpc.CallOption) (*StoreFitnessScoreResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(StoreFitnessScoreResponse) - err := c.cc.Invoke(ctx, FitnessService_StoreFitnessScore_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *fitnessServiceClient) UpdateFitnessScore(ctx context.Context, in *UpdateFitnessScoreRequest, opts ...grpc.CallOption) (*UpdateFitnessScoreResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(UpdateFitnessScoreResponse) - err := c.cc.Invoke(ctx, FitnessService_UpdateFitnessScore_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *fitnessServiceClient) DeleteFitnessScore(ctx context.Context, in *DeleteFitnessScoreRequest, opts ...grpc.CallOption) (*DeleteFitnessScoreResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(DeleteFitnessScoreResponse) - err := c.cc.Invoke(ctx, FitnessService_DeleteFitnessScore_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -// FitnessServiceServer is the server API for FitnessService service. -// All implementations must embed UnimplementedFitnessServiceServer -// for forward compatibility. -// -// 体测成绩服务 -type FitnessServiceServer interface { - // 新增或更新体测成绩 - StoreFitnessScore(context.Context, *StoreFitnessScoreRequest) (*StoreFitnessScoreResponse, error) - // 更新体测成绩 - UpdateFitnessScore(context.Context, *UpdateFitnessScoreRequest) (*UpdateFitnessScoreResponse, error) - // 删除体测成绩 - DeleteFitnessScore(context.Context, *DeleteFitnessScoreRequest) (*DeleteFitnessScoreResponse, error) - mustEmbedUnimplementedFitnessServiceServer() -} - -// UnimplementedFitnessServiceServer must be embedded to have -// forward compatible implementations. -// -// NOTE: this should be embedded by value instead of pointer to avoid a nil -// pointer dereference when methods are called. -type UnimplementedFitnessServiceServer struct{} - -func (UnimplementedFitnessServiceServer) StoreFitnessScore(context.Context, *StoreFitnessScoreRequest) (*StoreFitnessScoreResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method StoreFitnessScore not implemented") -} -func (UnimplementedFitnessServiceServer) UpdateFitnessScore(context.Context, *UpdateFitnessScoreRequest) (*UpdateFitnessScoreResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateFitnessScore not implemented") -} -func (UnimplementedFitnessServiceServer) DeleteFitnessScore(context.Context, *DeleteFitnessScoreRequest) (*DeleteFitnessScoreResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteFitnessScore not implemented") -} -func (UnimplementedFitnessServiceServer) mustEmbedUnimplementedFitnessServiceServer() {} -func (UnimplementedFitnessServiceServer) testEmbeddedByValue() {} - -// UnsafeFitnessServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to FitnessServiceServer will -// result in compilation errors. -type UnsafeFitnessServiceServer interface { - mustEmbedUnimplementedFitnessServiceServer() -} - -func RegisterFitnessServiceServer(s grpc.ServiceRegistrar, srv FitnessServiceServer) { - // If the following call pancis, it indicates UnimplementedFitnessServiceServer was - // embedded by pointer and is nil. This will cause panics if an - // unimplemented method is ever invoked, so we test this at initialization - // time to prevent it from happening at runtime later due to I/O. - if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { - t.testEmbeddedByValue() - } - s.RegisterService(&FitnessService_ServiceDesc, srv) -} - -func _FitnessService_StoreFitnessScore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(StoreFitnessScoreRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FitnessServiceServer).StoreFitnessScore(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: FitnessService_StoreFitnessScore_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FitnessServiceServer).StoreFitnessScore(ctx, req.(*StoreFitnessScoreRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FitnessService_UpdateFitnessScore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateFitnessScoreRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FitnessServiceServer).UpdateFitnessScore(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: FitnessService_UpdateFitnessScore_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FitnessServiceServer).UpdateFitnessScore(ctx, req.(*UpdateFitnessScoreRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _FitnessService_DeleteFitnessScore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteFitnessScoreRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(FitnessServiceServer).DeleteFitnessScore(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: FitnessService_DeleteFitnessScore_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(FitnessServiceServer).DeleteFitnessScore(ctx, req.(*DeleteFitnessScoreRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// FitnessService_ServiceDesc is the grpc.ServiceDesc for FitnessService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var FitnessService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "campusapis.fitness.v1.FitnessService", - HandlerType: (*FitnessServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "StoreFitnessScore", - Handler: _FitnessService_StoreFitnessScore_Handler, - }, - { - MethodName: "UpdateFitnessScore", - Handler: _FitnessService_UpdateFitnessScore_Handler, - }, - { - MethodName: "DeleteFitnessScore", - Handler: _FitnessService_DeleteFitnessScore_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "campusapis/fitness/v1/fitness.proto", -} diff --git a/campusapis/staff/v1/campus.pb.go b/campusapis/staff/v1/campus.pb.go index 94995ca..a85a4de 100644 --- a/campusapis/staff/v1/campus.pb.go +++ b/campusapis/staff/v1/campus.pb.go @@ -3972,6 +3972,761 @@ func (x *NiceResponse) GetData() string { return "" } +// StoreFitnessScoreRequest 新增或更新体测成绩请求 +type StoreFitnessScoreRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` + SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` + Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` + Gender string `protobuf:"bytes,4,opt,name=gender,proto3" json:"gender,omitempty"` + Grade int32 `protobuf:"varint,5,opt,name=grade,proto3" json:"grade,omitempty"` + Height float32 `protobuf:"fixed32,6,opt,name=height,proto3" json:"height,omitempty"` + Weight float32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"` + Bmi float32 `protobuf:"fixed32,8,opt,name=bmi,proto3" json:"bmi,omitempty"` + Run_50M float32 `protobuf:"fixed32,9,opt,name=run_50m,json=run50m,proto3" json:"run_50m,omitempty"` + StandingLongJump float32 `protobuf:"fixed32,10,opt,name=standing_long_jump,json=standingLongJump,proto3" json:"standing_long_jump,omitempty"` + SitAndReach float32 `protobuf:"fixed32,11,opt,name=sit_and_reach,json=sitAndReach,proto3" json:"sit_and_reach,omitempty"` + Run_800M float32 `protobuf:"fixed32,12,opt,name=run_800m,json=run800m,proto3" json:"run_800m,omitempty"` + Run_1000M float32 `protobuf:"fixed32,13,opt,name=run_1000m,json=run1000m,proto3" json:"run_1000m,omitempty"` + SitUps int32 `protobuf:"varint,14,opt,name=sit_ups,json=sitUps,proto3" json:"sit_ups,omitempty"` + PullUps int32 `protobuf:"varint,15,opt,name=pull_ups,json=pullUps,proto3" json:"pull_ups,omitempty"` + LungCapacity int32 `protobuf:"varint,16,opt,name=lung_capacity,json=lungCapacity,proto3" json:"lung_capacity,omitempty"` + TotalScore float32 `protobuf:"fixed32,17,opt,name=total_score,json=totalScore,proto3" json:"total_score,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StoreFitnessScoreRequest) Reset() { + *x = StoreFitnessScoreRequest{} + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StoreFitnessScoreRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StoreFitnessScoreRequest) ProtoMessage() {} + +func (x *StoreFitnessScoreRequest) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[52] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StoreFitnessScoreRequest.ProtoReflect.Descriptor instead. +func (*StoreFitnessScoreRequest) Descriptor() ([]byte, []int) { + return file_campusapis_staff_v1_campus_proto_rawDescGZIP(), []int{52} +} + +func (x *StoreFitnessScoreRequest) GetStaffId() string { + if x != nil { + return x.StaffId + } + return "" +} + +func (x *StoreFitnessScoreRequest) GetSchoolYear() string { + if x != nil { + return x.SchoolYear + } + return "" +} + +func (x *StoreFitnessScoreRequest) GetSemester() int32 { + if x != nil { + return x.Semester + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetGender() string { + if x != nil { + return x.Gender + } + return "" +} + +func (x *StoreFitnessScoreRequest) GetGrade() int32 { + if x != nil { + return x.Grade + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetHeight() float32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetWeight() float32 { + if x != nil { + return x.Weight + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetBmi() float32 { + if x != nil { + return x.Bmi + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetRun_50M() float32 { + if x != nil { + return x.Run_50M + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetStandingLongJump() float32 { + if x != nil { + return x.StandingLongJump + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetSitAndReach() float32 { + if x != nil { + return x.SitAndReach + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetRun_800M() float32 { + if x != nil { + return x.Run_800M + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetRun_1000M() float32 { + if x != nil { + return x.Run_1000M + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetSitUps() int32 { + if x != nil { + return x.SitUps + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetPullUps() int32 { + if x != nil { + return x.PullUps + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetLungCapacity() int32 { + if x != nil { + return x.LungCapacity + } + return 0 +} + +func (x *StoreFitnessScoreRequest) GetTotalScore() float32 { + if x != nil { + return x.TotalScore + } + return 0 +} + +// StoreFitnessScoreResponse 新增或更新体测成绩响应 +type StoreFitnessScoreResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Data *FitnessScore `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *StoreFitnessScoreResponse) Reset() { + *x = StoreFitnessScoreResponse{} + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StoreFitnessScoreResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StoreFitnessScoreResponse) ProtoMessage() {} + +func (x *StoreFitnessScoreResponse) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[53] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StoreFitnessScoreResponse.ProtoReflect.Descriptor instead. +func (*StoreFitnessScoreResponse) Descriptor() ([]byte, []int) { + return file_campusapis_staff_v1_campus_proto_rawDescGZIP(), []int{53} +} + +func (x *StoreFitnessScoreResponse) GetError() int32 { + if x != nil { + return x.Error + } + return 0 +} + +func (x *StoreFitnessScoreResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *StoreFitnessScoreResponse) GetData() *FitnessScore { + if x != nil { + return x.Data + } + return nil +} + +// UpdateFitnessScoreRequest 更新体测成绩请求 +type UpdateFitnessScoreRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` + SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` + Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` + Gender string `protobuf:"bytes,4,opt,name=gender,proto3" json:"gender,omitempty"` + Grade int32 `protobuf:"varint,5,opt,name=grade,proto3" json:"grade,omitempty"` + Height float32 `protobuf:"fixed32,6,opt,name=height,proto3" json:"height,omitempty"` + Weight float32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"` + Bmi float32 `protobuf:"fixed32,8,opt,name=bmi,proto3" json:"bmi,omitempty"` + Run_50M float32 `protobuf:"fixed32,9,opt,name=run_50m,json=run50m,proto3" json:"run_50m,omitempty"` + StandingLongJump float32 `protobuf:"fixed32,10,opt,name=standing_long_jump,json=standingLongJump,proto3" json:"standing_long_jump,omitempty"` + SitAndReach float32 `protobuf:"fixed32,11,opt,name=sit_and_reach,json=sitAndReach,proto3" json:"sit_and_reach,omitempty"` + Run_800M float32 `protobuf:"fixed32,12,opt,name=run_800m,json=run800m,proto3" json:"run_800m,omitempty"` + Run_1000M float32 `protobuf:"fixed32,13,opt,name=run_1000m,json=run1000m,proto3" json:"run_1000m,omitempty"` + SitUps int32 `protobuf:"varint,14,opt,name=sit_ups,json=sitUps,proto3" json:"sit_ups,omitempty"` + PullUps int32 `protobuf:"varint,15,opt,name=pull_ups,json=pullUps,proto3" json:"pull_ups,omitempty"` + LungCapacity int32 `protobuf:"varint,16,opt,name=lung_capacity,json=lungCapacity,proto3" json:"lung_capacity,omitempty"` + TotalScore float32 `protobuf:"fixed32,17,opt,name=total_score,json=totalScore,proto3" json:"total_score,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateFitnessScoreRequest) Reset() { + *x = UpdateFitnessScoreRequest{} + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateFitnessScoreRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateFitnessScoreRequest) ProtoMessage() {} + +func (x *UpdateFitnessScoreRequest) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[54] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateFitnessScoreRequest.ProtoReflect.Descriptor instead. +func (*UpdateFitnessScoreRequest) Descriptor() ([]byte, []int) { + return file_campusapis_staff_v1_campus_proto_rawDescGZIP(), []int{54} +} + +func (x *UpdateFitnessScoreRequest) GetStaffId() string { + if x != nil { + return x.StaffId + } + return "" +} + +func (x *UpdateFitnessScoreRequest) GetSchoolYear() string { + if x != nil { + return x.SchoolYear + } + return "" +} + +func (x *UpdateFitnessScoreRequest) GetSemester() int32 { + if x != nil { + return x.Semester + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetGender() string { + if x != nil { + return x.Gender + } + return "" +} + +func (x *UpdateFitnessScoreRequest) GetGrade() int32 { + if x != nil { + return x.Grade + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetHeight() float32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetWeight() float32 { + if x != nil { + return x.Weight + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetBmi() float32 { + if x != nil { + return x.Bmi + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetRun_50M() float32 { + if x != nil { + return x.Run_50M + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetStandingLongJump() float32 { + if x != nil { + return x.StandingLongJump + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetSitAndReach() float32 { + if x != nil { + return x.SitAndReach + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetRun_800M() float32 { + if x != nil { + return x.Run_800M + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetRun_1000M() float32 { + if x != nil { + return x.Run_1000M + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetSitUps() int32 { + if x != nil { + return x.SitUps + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetPullUps() int32 { + if x != nil { + return x.PullUps + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetLungCapacity() int32 { + if x != nil { + return x.LungCapacity + } + return 0 +} + +func (x *UpdateFitnessScoreRequest) GetTotalScore() float32 { + if x != nil { + return x.TotalScore + } + return 0 +} + +// UpdateFitnessScoreResponse 更新体测成绩响应 +type UpdateFitnessScoreResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + Data *FitnessScore `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateFitnessScoreResponse) Reset() { + *x = UpdateFitnessScoreResponse{} + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateFitnessScoreResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateFitnessScoreResponse) ProtoMessage() {} + +func (x *UpdateFitnessScoreResponse) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[55] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateFitnessScoreResponse.ProtoReflect.Descriptor instead. +func (*UpdateFitnessScoreResponse) Descriptor() ([]byte, []int) { + return file_campusapis_staff_v1_campus_proto_rawDescGZIP(), []int{55} +} + +func (x *UpdateFitnessScoreResponse) GetError() int32 { + if x != nil { + return x.Error + } + return 0 +} + +func (x *UpdateFitnessScoreResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *UpdateFitnessScoreResponse) GetData() *FitnessScore { + if x != nil { + return x.Data + } + return nil +} + +// DeleteFitnessScoreRequest 删除体测成绩请求 +type DeleteFitnessScoreRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` + SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` + Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteFitnessScoreRequest) Reset() { + *x = DeleteFitnessScoreRequest{} + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteFitnessScoreRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteFitnessScoreRequest) ProtoMessage() {} + +func (x *DeleteFitnessScoreRequest) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[56] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteFitnessScoreRequest.ProtoReflect.Descriptor instead. +func (*DeleteFitnessScoreRequest) Descriptor() ([]byte, []int) { + return file_campusapis_staff_v1_campus_proto_rawDescGZIP(), []int{56} +} + +func (x *DeleteFitnessScoreRequest) GetStaffId() string { + if x != nil { + return x.StaffId + } + return "" +} + +func (x *DeleteFitnessScoreRequest) GetSchoolYear() string { + if x != nil { + return x.SchoolYear + } + return "" +} + +func (x *DeleteFitnessScoreRequest) GetSemester() int32 { + if x != nil { + return x.Semester + } + return 0 +} + +// DeleteFitnessScoreResponse 删除体测成绩响应 +type DeleteFitnessScoreResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Error int32 `protobuf:"varint,1,opt,name=error,proto3" json:"error,omitempty"` + Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DeleteFitnessScoreResponse) Reset() { + *x = DeleteFitnessScoreResponse{} + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DeleteFitnessScoreResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteFitnessScoreResponse) ProtoMessage() {} + +func (x *DeleteFitnessScoreResponse) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[57] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteFitnessScoreResponse.ProtoReflect.Descriptor instead. +func (*DeleteFitnessScoreResponse) Descriptor() ([]byte, []int) { + return file_campusapis_staff_v1_campus_proto_rawDescGZIP(), []int{57} +} + +func (x *DeleteFitnessScoreResponse) GetError() int32 { + if x != nil { + return x.Error + } + return 0 +} + +func (x *DeleteFitnessScoreResponse) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +// FitnessScore 体测成绩信息 +type FitnessScore struct { + state protoimpl.MessageState `protogen:"open.v1"` + StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId,proto3" json:"staff_id,omitempty"` + SchoolYear string `protobuf:"bytes,2,opt,name=school_year,json=schoolYear,proto3" json:"school_year,omitempty"` + Semester int32 `protobuf:"varint,3,opt,name=semester,proto3" json:"semester,omitempty"` + Gender string `protobuf:"bytes,4,opt,name=gender,proto3" json:"gender,omitempty"` + Grade int32 `protobuf:"varint,5,opt,name=grade,proto3" json:"grade,omitempty"` + Height float32 `protobuf:"fixed32,6,opt,name=height,proto3" json:"height,omitempty"` + Weight float32 `protobuf:"fixed32,7,opt,name=weight,proto3" json:"weight,omitempty"` + Bmi float32 `protobuf:"fixed32,8,opt,name=bmi,proto3" json:"bmi,omitempty"` + Run_50M float32 `protobuf:"fixed32,9,opt,name=run_50m,json=run50m,proto3" json:"run_50m,omitempty"` + StandingLongJump float32 `protobuf:"fixed32,10,opt,name=standing_long_jump,json=standingLongJump,proto3" json:"standing_long_jump,omitempty"` + SitAndReach float32 `protobuf:"fixed32,11,opt,name=sit_and_reach,json=sitAndReach,proto3" json:"sit_and_reach,omitempty"` + Run_800M float32 `protobuf:"fixed32,12,opt,name=run_800m,json=run800m,proto3" json:"run_800m,omitempty"` + Run_1000M float32 `protobuf:"fixed32,13,opt,name=run_1000m,json=run1000m,proto3" json:"run_1000m,omitempty"` + SitUps int32 `protobuf:"varint,14,opt,name=sit_ups,json=sitUps,proto3" json:"sit_ups,omitempty"` + PullUps int32 `protobuf:"varint,15,opt,name=pull_ups,json=pullUps,proto3" json:"pull_ups,omitempty"` + LungCapacity int32 `protobuf:"varint,16,opt,name=lung_capacity,json=lungCapacity,proto3" json:"lung_capacity,omitempty"` + TotalScore float32 `protobuf:"fixed32,17,opt,name=total_score,json=totalScore,proto3" json:"total_score,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FitnessScore) Reset() { + *x = FitnessScore{} + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FitnessScore) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FitnessScore) ProtoMessage() {} + +func (x *FitnessScore) ProtoReflect() protoreflect.Message { + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[58] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FitnessScore.ProtoReflect.Descriptor instead. +func (*FitnessScore) Descriptor() ([]byte, []int) { + return file_campusapis_staff_v1_campus_proto_rawDescGZIP(), []int{58} +} + +func (x *FitnessScore) GetStaffId() string { + if x != nil { + return x.StaffId + } + return "" +} + +func (x *FitnessScore) GetSchoolYear() string { + if x != nil { + return x.SchoolYear + } + return "" +} + +func (x *FitnessScore) GetSemester() int32 { + if x != nil { + return x.Semester + } + return 0 +} + +func (x *FitnessScore) GetGender() string { + if x != nil { + return x.Gender + } + return "" +} + +func (x *FitnessScore) GetGrade() int32 { + if x != nil { + return x.Grade + } + return 0 +} + +func (x *FitnessScore) GetHeight() float32 { + if x != nil { + return x.Height + } + return 0 +} + +func (x *FitnessScore) GetWeight() float32 { + if x != nil { + return x.Weight + } + return 0 +} + +func (x *FitnessScore) GetBmi() float32 { + if x != nil { + return x.Bmi + } + return 0 +} + +func (x *FitnessScore) GetRun_50M() float32 { + if x != nil { + return x.Run_50M + } + return 0 +} + +func (x *FitnessScore) GetStandingLongJump() float32 { + if x != nil { + return x.StandingLongJump + } + return 0 +} + +func (x *FitnessScore) GetSitAndReach() float32 { + if x != nil { + return x.SitAndReach + } + return 0 +} + +func (x *FitnessScore) GetRun_800M() float32 { + if x != nil { + return x.Run_800M + } + return 0 +} + +func (x *FitnessScore) GetRun_1000M() float32 { + if x != nil { + return x.Run_1000M + } + return 0 +} + +func (x *FitnessScore) GetSitUps() int32 { + if x != nil { + return x.SitUps + } + return 0 +} + +func (x *FitnessScore) GetPullUps() int32 { + if x != nil { + return x.PullUps + } + return 0 +} + +func (x *FitnessScore) GetLungCapacity() int32 { + if x != nil { + return x.LungCapacity + } + return 0 +} + +func (x *FitnessScore) GetTotalScore() float32 { + if x != nil { + return x.TotalScore + } + return 0 +} + // 某年贫困详情 type StudentNeedyInfo_Nested struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -3985,7 +4740,7 @@ type StudentNeedyInfo_Nested struct { func (x *StudentNeedyInfo_Nested) Reset() { *x = StudentNeedyInfo_Nested{} - mi := &file_campusapis_staff_v1_campus_proto_msgTypes[52] + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3997,7 +4752,7 @@ func (x *StudentNeedyInfo_Nested) String() string { func (*StudentNeedyInfo_Nested) ProtoMessage() {} func (x *StudentNeedyInfo_Nested) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_staff_v1_campus_proto_msgTypes[52] + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[59] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4037,7 +4792,7 @@ type PostStudentGateAccessResponse_Data struct { func (x *PostStudentGateAccessResponse_Data) Reset() { *x = PostStudentGateAccessResponse_Data{} - mi := &file_campusapis_staff_v1_campus_proto_msgTypes[53] + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4049,7 +4804,7 @@ func (x *PostStudentGateAccessResponse_Data) String() string { func (*PostStudentGateAccessResponse_Data) ProtoMessage() {} func (x *PostStudentGateAccessResponse_Data) ProtoReflect() protoreflect.Message { - mi := &file_campusapis_staff_v1_campus_proto_msgTypes[53] + mi := &file_campusapis_staff_v1_campus_proto_msgTypes[60] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4623,216 +5378,371 @@ var file_campusapis_staff_v1_campus_proto_rawDesc = string([]byte{ 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xb1, 0x18, 0x0a, 0x0d, 0x43, 0x61, 0x6d, 0x70, - 0x75, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x47, 0x65, - 0x74, 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, - 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x5a, 0x0e, 0x12, 0x0c, 0x2f, 0x70, 0x65, 0x72, 0x73, - 0x6f, 0x6e, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x15, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, - 0x76, 0x31, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x86, - 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, - 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2b, 0x2e, 0x63, 0x61, 0x6d, 0x70, - 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x5a, 0x0f, - 0x12, 0x0d, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, - 0x16, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, - 0x6e, 0x74, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0xa8, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x44, 0x69, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x44, 0x69, 0x76, - 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, + 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xff, 0x03, 0x0a, 0x18, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, 0x66, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, 0x66, 0x49, 0x64, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, + 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, + 0x67, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x65, + 0x6e, 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, + 0x69, 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, + 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x6d, + 0x69, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x62, 0x6d, 0x69, 0x12, 0x17, 0x0a, 0x07, + 0x72, 0x75, 0x6e, 0x5f, 0x35, 0x30, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x72, + 0x75, 0x6e, 0x35, 0x30, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x6e, 0x67, 0x4a, + 0x75, 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, + 0x65, 0x61, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x73, 0x69, 0x74, 0x41, + 0x6e, 0x64, 0x52, 0x65, 0x61, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6e, 0x5f, 0x38, + 0x30, 0x30, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x38, 0x30, + 0x30, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x6d, 0x18, + 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x31, 0x30, 0x30, 0x30, 0x6d, 0x12, + 0x17, 0x0a, 0x07, 0x73, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x06, 0x73, 0x69, 0x74, 0x55, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x75, 0x6c, 0x6c, + 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x75, 0x6c, 0x6c, + 0x55, 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x75, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x61, + 0x63, 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x75, 0x6e, 0x67, + 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x7a, 0x0a, 0x19, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, + 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x35, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, + 0x76, 0x31, 0x2e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x80, 0x04, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, 0x66, 0x49, 0x64, 0x12, 0x1f, + 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, + 0x1a, 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x67, + 0x65, 0x6e, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, + 0x67, 0x68, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x02, 0x52, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x6d, 0x69, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x62, 0x6d, 0x69, 0x12, 0x17, 0x0a, 0x07, 0x72, + 0x75, 0x6e, 0x5f, 0x35, 0x30, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x72, 0x75, + 0x6e, 0x35, 0x30, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, + 0x5f, 0x6c, 0x6f, 0x6e, 0x67, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x10, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x6e, 0x67, 0x4a, 0x75, + 0x6d, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, + 0x61, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x73, 0x69, 0x74, 0x41, 0x6e, + 0x64, 0x52, 0x65, 0x61, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6e, 0x5f, 0x38, 0x30, + 0x30, 0x6d, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x38, 0x30, 0x30, + 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x6d, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x31, 0x30, 0x30, 0x30, 0x6d, 0x12, 0x17, + 0x0a, 0x07, 0x73, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x73, 0x69, 0x74, 0x55, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x75, 0x6c, 0x6c, 0x5f, + 0x75, 0x70, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x75, 0x6c, 0x6c, 0x55, + 0x70, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x75, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, + 0x69, 0x74, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x75, 0x6e, 0x67, 0x43, + 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x7b, 0x0a, 0x1a, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, 0x0a, 0x03, + 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x35, + 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, - 0x76, 0x31, 0x2e, 0x4e, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x5a, 0x10, 0x12, 0x0e, 0x2f, 0x73, 0x74, 0x75, 0x64, - 0x65, 0x6e, 0x74, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x2f, 0x73, 0x74, 0x61, 0x66, - 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x12, 0xb6, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, - 0x74, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x37, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x76, 0x31, 0x2e, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x73, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, + 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, 0x66, 0x49, 0x64, 0x12, 0x1f, 0x0a, + 0x0b, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, + 0x0a, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x22, 0x44, 0x0a, 0x1a, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x10, + 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, + 0x22, 0xf3, 0x03, 0x0a, 0x0c, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, + 0x65, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x74, 0x61, 0x66, 0x66, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x66, 0x66, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x59, 0x65, 0x61, 0x72, 0x12, 0x1a, 0x0a, + 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x08, 0x73, 0x65, 0x6d, 0x65, 0x73, 0x74, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x67, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x67, 0x65, 0x6e, 0x64, 0x65, + 0x72, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, + 0x06, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x6d, 0x69, 0x18, 0x08, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x03, 0x62, 0x6d, 0x69, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x75, 0x6e, + 0x5f, 0x35, 0x30, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x72, 0x75, 0x6e, 0x35, + 0x30, 0x6d, 0x12, 0x2c, 0x0a, 0x12, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6c, + 0x6f, 0x6e, 0x67, 0x5f, 0x6a, 0x75, 0x6d, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, + 0x73, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4c, 0x6f, 0x6e, 0x67, 0x4a, 0x75, 0x6d, 0x70, + 0x12, 0x22, 0x0a, 0x0d, 0x73, 0x69, 0x74, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x72, 0x65, 0x61, 0x63, + 0x68, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x73, 0x69, 0x74, 0x41, 0x6e, 0x64, 0x52, + 0x65, 0x61, 0x63, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6e, 0x5f, 0x38, 0x30, 0x30, 0x6d, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x72, 0x75, 0x6e, 0x38, 0x30, 0x30, 0x6d, 0x12, + 0x1b, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x5f, 0x31, 0x30, 0x30, 0x30, 0x6d, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x31, 0x30, 0x30, 0x30, 0x6d, 0x12, 0x17, 0x0a, 0x07, + 0x73, 0x69, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, + 0x69, 0x74, 0x55, 0x70, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x70, 0x75, 0x6c, 0x6c, 0x5f, 0x75, 0x70, + 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x70, 0x75, 0x6c, 0x6c, 0x55, 0x70, 0x73, + 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x75, 0x6e, 0x67, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, + 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6c, 0x75, 0x6e, 0x67, 0x43, 0x61, 0x70, + 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x73, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x32, 0xb5, 0x1c, 0x0a, 0x0d, 0x43, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, + 0x50, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x73, + 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x5a, 0x0e, 0x12, 0x0c, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, + 0x6e, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x15, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, + 0x31, 0x2f, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x86, 0x01, + 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2b, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x5a, 0x0f, 0x12, + 0x0d, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x16, + 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, + 0x74, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0xa8, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x75, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x44, 0x69, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, + 0x75, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x79, 0x44, 0x69, 0x76, 0x69, + 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x63, 0x61, + 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x5a, 0x10, 0x12, 0x0e, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, + 0x6e, 0x74, 0x2f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0xb6, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, + 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x37, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x52, + 0x6f, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x5a, 0x1b, 0x12, 0x19, 0x2f, 0x73, 0x74, + 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x6c, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, + 0x52, 0x6f, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x44, 0x6f, 0x72, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, - 0x52, 0x6f, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x5a, 0x1b, 0x12, 0x19, 0x2f, 0x73, - 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, - 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x22, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, - 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x63, 0x68, 0x6f, 0x6f, - 0x6c, 0x52, 0x6f, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x8e, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x44, 0x6f, 0x72, 0x6d, 0x49, 0x6e, - 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x2f, 0x2e, 0x63, 0x61, 0x6d, - 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x44, 0x6f, 0x72, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x29, 0x5a, 0x0f, 0x12, 0x0d, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, - 0x64, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, - 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x64, 0x6f, 0x72, 0x6d, 0x12, 0x9e, 0x01, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x72, 0x74, 0x68, - 0x64, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, - 0x33, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, - 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, - 0x42, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x5a, 0x13, 0x12, 0x11, - 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, - 0x79, 0x12, 0x1a, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, - 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x12, 0xb9, 0x01, - 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x72, 0x74, - 0x68, 0x64, 0x61, 0x79, 0x73, 0x49, 0x6e, 0x12, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, - 0x73, 0x49, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x61, 0x6d, - 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x72, 0x74, 0x68, - 0x64, 0x61, 0x79, 0x73, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x5a, 0x14, 0x12, 0x12, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, - 0x6e, 0x74, 0x2f, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x73, 0x12, 0x1b, 0x2f, 0x73, - 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, - 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x11, 0x47, 0x65, - 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, - 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, - 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x29, 0x5a, 0x0f, 0x12, 0x0d, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x64, + 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, + 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x64, 0x6f, 0x72, 0x6d, 0x12, 0x9e, 0x01, 0x0a, 0x16, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x72, 0x74, 0x68, 0x64, + 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x33, + 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, + 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x42, + 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x37, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x5a, 0x13, 0x12, 0x11, 0x2f, + 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, + 0x12, 0x1a, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, + 0x65, 0x6e, 0x74, 0x2f, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x12, 0xb9, 0x01, 0x0a, + 0x15, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x72, 0x74, 0x68, + 0x64, 0x61, 0x79, 0x73, 0x49, 0x6e, 0x12, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x73, + 0x49, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x42, 0x69, 0x72, 0x74, 0x68, 0x64, + 0x61, 0x79, 0x73, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x5a, 0x14, 0x12, 0x12, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, + 0x74, 0x2f, 0x62, 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x73, 0x12, 0x1b, 0x2f, 0x73, 0x74, + 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x62, + 0x69, 0x72, 0x74, 0x68, 0x64, 0x61, 0x79, 0x73, 0x12, 0xa7, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x52, - 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x5a, 0x11, 0x12, 0x0f, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, - 0x6e, 0x74, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x2f, 0x73, 0x74, 0x61, 0x66, - 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x72, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x12, 0xc2, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, + 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, + 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x5a, 0x11, 0x12, 0x0f, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, + 0x74, 0x2f, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x18, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, + 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x72, 0x65, 0x77, 0x61, + 0x72, 0x64, 0x12, 0xc2, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, + 0x74, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x36, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, + 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x12, 0x36, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, - 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x61, 0x6d, - 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x72, 0x73, - 0x65, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x5a, 0x11, 0x12, 0x0f, 0x2f, - 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x18, - 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, - 0x74, 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x2b, 0x2e, 0x63, - 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, - 0x64, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x5a, - 0x10, 0x12, 0x0e, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x12, 0x17, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, - 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0xae, 0x01, 0x0a, 0x15, 0x47, - 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, - 0x72, 0x61, 0x64, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, - 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x72, 0x73, 0x65, + 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x5a, 0x11, 0x12, 0x0f, 0x2f, 0x73, + 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x18, 0x2f, + 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, + 0x2f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x9f, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x2b, 0x2e, 0x63, 0x61, + 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x64, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x5a, 0x10, + 0x12, 0x0e, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x72, 0x61, 0x64, 0x65, + 0x12, 0x17, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, + 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0xae, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, - 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x74, - 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x73, 0x74, - 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x9a, 0x01, 0x0a, 0x0e, - 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x12, 0x2a, - 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, - 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x45, - 0x78, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x61, 0x6d, - 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x5a, - 0x0f, 0x12, 0x0d, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x65, 0x78, 0x61, 0x6d, - 0x12, 0x16, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, - 0x65, 0x6e, 0x74, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x12, 0x9e, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, - 0x44, 0x61, 0x69, 0x6c, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6d, 0x70, + 0x61, 0x64, 0x65, 0x12, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, + 0x62, 0x61, 0x6c, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, + 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x28, 0x12, 0x26, 0x2f, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x74, 0x61, + 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x73, 0x74, 0x75, + 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x9a, 0x01, 0x0a, 0x0e, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x12, 0x2a, 0x2e, + 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x45, 0x78, + 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, - 0x6c, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x5a, 0x14, 0x12, 0x12, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, - 0x6e, 0x74, 0x2f, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x12, 0x1b, 0x2f, 0x73, + 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x45, 0x78, 0x61, 0x6d, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x5a, 0x0f, + 0x12, 0x0d, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x12, + 0x16, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, + 0x6e, 0x74, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x12, 0x9e, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x44, + 0x61, 0x69, 0x6c, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x12, 0x28, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x61, 0x69, 0x6c, + 0x79, 0x45, 0x78, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x5a, 0x14, 0x12, 0x12, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, + 0x74, 0x2f, 0x64, 0x61, 0x69, 0x6c, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x12, 0x1b, 0x2f, 0x73, 0x74, + 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x64, + 0x61, 0x69, 0x6c, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, + 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x50, 0x41, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, + 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, + 0x65, 0x6e, 0x74, 0x47, 0x50, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x5a, 0x0e, 0x12, 0x0c, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, + 0x6e, 0x74, 0x2f, 0x67, 0x70, 0x61, 0x12, 0x15, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x70, 0x61, 0x12, 0x80, 0x01, + 0x0a, 0x15, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x74, + 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, + 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x74, 0x65, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0xa8, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x53, + 0x74, 0x61, 0x79, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, + 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x79, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x37, 0x5a, 0x16, 0x12, 0x14, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, + 0x2f, 0x68, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x79, 0x53, 0x74, 0x61, 0x79, 0x12, 0x1d, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, - 0x64, 0x61, 0x69, 0x6c, 0x79, 0x45, 0x78, 0x61, 0x6d, 0x12, 0x82, 0x01, 0x0a, 0x0d, 0x47, 0x65, - 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x50, 0x41, 0x12, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x2a, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, - 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, - 0x64, 0x65, 0x6e, 0x74, 0x47, 0x50, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x5a, 0x0e, 0x12, 0x0c, 0x2f, 0x73, 0x74, 0x75, 0x64, - 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x70, 0x61, 0x12, 0x15, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, - 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x2f, 0x67, 0x70, 0x61, 0x12, 0x80, - 0x01, 0x0a, 0x15, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x61, - 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x31, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, - 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x6f, 0x73, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x74, 0x65, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x63, 0x61, - 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x47, 0x61, 0x74, - 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0xa8, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, - 0x53, 0x74, 0x61, 0x79, 0x53, 0x63, 0x68, 0x6f, 0x6f, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x35, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, - 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x79, 0x53, 0x63, 0x68, 0x6f, 0x6f, - 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x37, 0x5a, 0x16, 0x12, 0x14, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, - 0x74, 0x2f, 0x68, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x79, 0x53, 0x74, 0x61, 0x79, 0x12, 0x1d, 0x2f, - 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, - 0x2f, 0x68, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x79, 0x53, 0x74, 0x61, 0x79, 0x12, 0xab, 0x01, 0x0a, - 0x13, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x42, 0x61, 0x73, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x68, 0x6f, 0x6c, 0x69, 0x64, 0x61, 0x79, 0x53, 0x74, 0x61, 0x79, 0x12, 0xab, 0x01, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x2f, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, + 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, + 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, - 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x5a, - 0x10, 0x12, 0x0e, 0x2f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x2f, 0x62, 0x61, 0x73, - 0x65, 0x12, 0x17, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x12, 0xa5, 0x01, 0x0a, 0x11, 0x47, - 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x5a, 0x10, + 0x12, 0x0e, 0x2f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x2f, 0x62, 0x61, 0x73, 0x65, + 0x12, 0x17, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x6d, 0x61, 0x6e, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x12, 0xa5, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, + 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, + 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, + 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, + 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, + 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x5a, 0x10, 0x12, 0x0e, 0x2f, 0x66, 0x72, 0x65, 0x73, 0x68, + 0x6d, 0x61, 0x6e, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, + 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x2f, 0x69, 0x6e, 0x66, + 0x6f, 0x12, 0xb6, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, + 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, + 0x6d, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x52, 0x6f, + 0x6f, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x5a, 0x14, 0x12, 0x12, 0x2f, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x6d, 0x61, 0x6e, 0x2f, 0x72, 0x6f, 0x6f, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x2f, + 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, + 0x6e, 0x2f, 0x72, 0x6f, 0x6f, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x12, 0xa8, 0x01, 0x0a, 0x11, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, - 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, - 0x61, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, + 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, - 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, - 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x31, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2b, 0x5a, 0x10, 0x12, 0x0e, 0x2f, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x6d, 0x61, 0x6e, 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x17, 0x2f, 0x73, 0x74, 0x61, 0x66, - 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x2f, 0x69, 0x6e, - 0x66, 0x6f, 0x12, 0xb6, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, - 0x61, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x63, 0x61, - 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x52, 0x6f, 0x6f, - 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, - 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x72, 0x65, 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x52, - 0x6f, 0x6f, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x39, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x5a, 0x14, 0x12, 0x12, 0x2f, 0x66, 0x72, 0x65, - 0x73, 0x68, 0x6d, 0x61, 0x6e, 0x2f, 0x72, 0x6f, 0x6f, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x12, 0x1b, - 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x72, 0x65, 0x73, 0x68, 0x6d, - 0x61, 0x6e, 0x2f, 0x72, 0x6f, 0x6f, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x42, 0xd1, 0x01, 0x0a, 0x17, - 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, - 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x68, 0x64, 0x75, 0x68, 0x65, 0x6c, 0x70, 0x2f, 0x61, 0x70, 0x69, 0x5f, 0x6f, - 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x64, 0x6b, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x3b, 0x73, 0x74, 0x61, 0x66, - 0x66, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x13, 0x43, 0x61, 0x6d, 0x70, - 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x56, 0x31, 0xca, - 0x02, 0x13, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x53, 0x74, 0x61, - 0x66, 0x66, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, - 0x69, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x66, 0x66, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, - 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x66, 0x66, 0x3a, 0x3a, 0x56, 0x31, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x66, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, + 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x34, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x5a, 0x10, 0x22, 0x0e, 0x2f, 0x66, + 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x17, 0x2f, 0x73, + 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0xab, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2e, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, + 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, + 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x3a, 0x01, 0x2a, 0x5a, 0x10, 0x32, 0x0e, 0x2f, 0x66, 0x69, 0x74, + 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x32, 0x17, 0x2f, 0x73, 0x74, 0x61, + 0x66, 0x66, 0x2f, 0x76, 0x31, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x12, 0xa8, 0x01, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, + 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2e, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x63, 0x61, 0x6d, + 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x53, 0x63, + 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2b, 0x5a, 0x10, 0x2a, 0x0e, 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x2a, 0x17, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, + 0x2f, 0x66, 0x69, 0x74, 0x6e, 0x65, 0x73, 0x73, 0x2f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0xd1, + 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, + 0x73, 0x2e, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x61, 0x6d, 0x70, + 0x75, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x64, 0x75, 0x68, 0x65, 0x6c, 0x70, 0x2f, 0x61, 0x70, + 0x69, 0x5f, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x73, 0x64, 0x6b, 0x2f, 0x63, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x73, 0x74, 0x61, 0x66, 0x66, 0x2f, 0x76, 0x31, 0x3b, 0x73, + 0x74, 0x61, 0x66, 0x66, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x53, 0x58, 0xaa, 0x02, 0x13, 0x43, + 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x66, 0x66, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x13, 0x43, 0x61, 0x6d, 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x5c, + 0x53, 0x74, 0x61, 0x66, 0x66, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x43, 0x61, 0x6d, 0x70, 0x75, + 0x73, 0x61, 0x70, 0x69, 0x73, 0x5c, 0x53, 0x74, 0x61, 0x66, 0x66, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x43, 0x61, 0x6d, + 0x70, 0x75, 0x73, 0x61, 0x70, 0x69, 0x73, 0x3a, 0x3a, 0x53, 0x74, 0x61, 0x66, 0x66, 0x3a, 0x3a, + 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -4847,7 +5757,7 @@ func file_campusapis_staff_v1_campus_proto_rawDescGZIP() []byte { return file_campusapis_staff_v1_campus_proto_rawDescData } -var file_campusapis_staff_v1_campus_proto_msgTypes = make([]protoimpl.MessageInfo, 54) +var file_campusapis_staff_v1_campus_proto_msgTypes = make([]protoimpl.MessageInfo, 61) var file_campusapis_staff_v1_campus_proto_goTypes = []any{ (*GetPersonInfoResponse)(nil), // 0: campusapis.staff.v1.GetPersonInfoResponse (*PersonInfo)(nil), // 1: campusapis.staff.v1.PersonInfo @@ -4901,20 +5811,27 @@ var file_campusapis_staff_v1_campus_proto_goTypes = []any{ (*FreshmanRoommate)(nil), // 49: campusapis.staff.v1.FreshmanRoommate (*GetStudentCountByDivisionRequest)(nil), // 50: campusapis.staff.v1.GetStudentCountByDivisionRequest (*NiceResponse)(nil), // 51: campusapis.staff.v1.NiceResponse - (*StudentNeedyInfo_Nested)(nil), // 52: campusapis.staff.v1.StudentNeedyInfo.Nested - (*PostStudentGateAccessResponse_Data)(nil), // 53: campusapis.staff.v1.PostStudentGateAccessResponse.Data - (staff.Type)(0), // 54: campusapis.staff.Type - (*emptypb.Empty)(nil), // 55: google.protobuf.Empty + (*StoreFitnessScoreRequest)(nil), // 52: campusapis.staff.v1.StoreFitnessScoreRequest + (*StoreFitnessScoreResponse)(nil), // 53: campusapis.staff.v1.StoreFitnessScoreResponse + (*UpdateFitnessScoreRequest)(nil), // 54: campusapis.staff.v1.UpdateFitnessScoreRequest + (*UpdateFitnessScoreResponse)(nil), // 55: campusapis.staff.v1.UpdateFitnessScoreResponse + (*DeleteFitnessScoreRequest)(nil), // 56: campusapis.staff.v1.DeleteFitnessScoreRequest + (*DeleteFitnessScoreResponse)(nil), // 57: campusapis.staff.v1.DeleteFitnessScoreResponse + (*FitnessScore)(nil), // 58: campusapis.staff.v1.FitnessScore + (*StudentNeedyInfo_Nested)(nil), // 59: campusapis.staff.v1.StudentNeedyInfo.Nested + (*PostStudentGateAccessResponse_Data)(nil), // 60: campusapis.staff.v1.PostStudentGateAccessResponse.Data + (staff.Type)(0), // 61: campusapis.staff.Type + (*emptypb.Empty)(nil), // 62: google.protobuf.Empty } var file_campusapis_staff_v1_campus_proto_depIdxs = []int32{ 1, // 0: campusapis.staff.v1.GetPersonInfoResponse.data:type_name -> campusapis.staff.v1.PersonInfo 10, // 1: campusapis.staff.v1.GetStudentInfoResponse.data:type_name -> campusapis.staff.v1.StudentInfo 12, // 2: campusapis.staff.v1.GetStudentSchoolRollStatusResponse.data:type_name -> campusapis.staff.v1.StudentSchoolRollStatus 14, // 3: campusapis.staff.v1.GetStudentNeedyInfoResponse.data:type_name -> campusapis.staff.v1.StudentNeedyInfo - 52, // 4: campusapis.staff.v1.StudentNeedyInfo.items:type_name -> campusapis.staff.v1.StudentNeedyInfo.Nested + 59, // 4: campusapis.staff.v1.StudentNeedyInfo.items:type_name -> campusapis.staff.v1.StudentNeedyInfo.Nested 16, // 5: campusapis.staff.v1.GetStudentDormInfoResponse.data:type_name -> campusapis.staff.v1.DormInfo 18, // 6: campusapis.staff.v1.GetStudentBirthdayInfoResponse.data:type_name -> campusapis.staff.v1.StudentBirthdayInfo - 54, // 7: campusapis.staff.v1.GetStudentBirthdaysInRequest.type:type_name -> campusapis.staff.Type + 61, // 7: campusapis.staff.v1.GetStudentBirthdaysInRequest.type:type_name -> campusapis.staff.Type 18, // 8: campusapis.staff.v1.GetStudentBirthdaysInResponse.data:type_name -> campusapis.staff.v1.StudentBirthdayInfo 22, // 9: campusapis.staff.v1.GetStudentRewardsResponse.data:type_name -> campusapis.staff.v1.StudentReward 24, // 10: campusapis.staff.v1.GetStudentCourseSelectionsResponse.data:type_name -> campusapis.staff.v1.StudentCourseSelection @@ -4925,54 +5842,62 @@ var file_campusapis_staff_v1_campus_proto_depIdxs = []int32{ 33, // 15: campusapis.staff.v1.GetStudentGPAResponse.data:type_name -> campusapis.staff.v1.StudentGPA 34, // 16: campusapis.staff.v1.StudentGPA.perSemester:type_name -> campusapis.staff.v1.GPAPerSemester 35, // 17: campusapis.staff.v1.StudentGPA.total:type_name -> campusapis.staff.v1.GPATotal - 53, // 18: campusapis.staff.v1.PostStudentGateAccessResponse.data:type_name -> campusapis.staff.v1.PostStudentGateAccessResponse.Data + 60, // 18: campusapis.staff.v1.PostStudentGateAccessResponse.data:type_name -> campusapis.staff.v1.PostStudentGateAccessResponse.Data 39, // 19: campusapis.staff.v1.GetStudentStaySchoolInfoResponse.data:type_name -> campusapis.staff.v1.StudentStaySchoolInfo 45, // 20: campusapis.staff.v1.GetFreshmanBaseInfoResponse.data:type_name -> campusapis.staff.v1.FreshmanBaseInfo 47, // 21: campusapis.staff.v1.GetFreshmanDetailResponse.data:type_name -> campusapis.staff.v1.FreshmanDetail 49, // 22: campusapis.staff.v1.GetFreshmanRoommatesResponse.data:type_name -> campusapis.staff.v1.FreshmanRoommate - 55, // 23: campusapis.staff.v1.CampusService.GetPersonInfo:input_type -> google.protobuf.Empty - 55, // 24: campusapis.staff.v1.CampusService.GetStudentInfo:input_type -> google.protobuf.Empty - 50, // 25: campusapis.staff.v1.CampusService.GetStudentCountByDivision:input_type -> campusapis.staff.v1.GetStudentCountByDivisionRequest - 55, // 26: campusapis.staff.v1.CampusService.GetStudentSchoolRollStatus:input_type -> google.protobuf.Empty - 55, // 27: campusapis.staff.v1.CampusService.GetStudentDormInfo:input_type -> google.protobuf.Empty - 55, // 28: campusapis.staff.v1.CampusService.GetStudentBirthdayInfo:input_type -> google.protobuf.Empty - 19, // 29: campusapis.staff.v1.CampusService.GetStudentBirthdaysIn:input_type -> campusapis.staff.v1.GetStudentBirthdaysInRequest - 2, // 30: campusapis.staff.v1.CampusService.GetStudentRewards:input_type -> campusapis.staff.v1.GetStudentRewardsRequest - 3, // 31: campusapis.staff.v1.CampusService.GetStudentCourseSelections:input_type -> campusapis.staff.v1.GetStudentCourseSelectionsRequest - 4, // 32: campusapis.staff.v1.CampusService.GetStudentGrade:input_type -> campusapis.staff.v1.GetStudentGradeRequest - 5, // 33: campusapis.staff.v1.CampusService.GetGlobalStudentGrade:input_type -> campusapis.staff.v1.GetGlobalStudentGradeRequest - 6, // 34: campusapis.staff.v1.CampusService.GetStudentExam:input_type -> campusapis.staff.v1.GetStudentExamRequest - 7, // 35: campusapis.staff.v1.CampusService.GetDailyExam:input_type -> campusapis.staff.v1.GetDailyExamRequest - 55, // 36: campusapis.staff.v1.CampusService.GetStudentGPA:input_type -> google.protobuf.Empty - 36, // 37: campusapis.staff.v1.CampusService.PostStudentGateAccess:input_type -> campusapis.staff.v1.PostStudentGateAccessRequest - 55, // 38: campusapis.staff.v1.CampusService.GetStudentStaySchoolInfo:input_type -> google.protobuf.Empty - 40, // 39: campusapis.staff.v1.CampusService.GetFreshmanBaseInfo:input_type -> campusapis.staff.v1.GetFreshmanBaseInfoRequest - 41, // 40: campusapis.staff.v1.CampusService.GetFreshmanDetail:input_type -> campusapis.staff.v1.GetFreshmanDetailRequest - 42, // 41: campusapis.staff.v1.CampusService.GetFreshmanRoommates:input_type -> campusapis.staff.v1.GetFreshmanRoommatesRequest - 0, // 42: campusapis.staff.v1.CampusService.GetPersonInfo:output_type -> campusapis.staff.v1.GetPersonInfoResponse - 9, // 43: campusapis.staff.v1.CampusService.GetStudentInfo:output_type -> campusapis.staff.v1.GetStudentInfoResponse - 51, // 44: campusapis.staff.v1.CampusService.GetStudentCountByDivision:output_type -> campusapis.staff.v1.NiceResponse - 11, // 45: campusapis.staff.v1.CampusService.GetStudentSchoolRollStatus:output_type -> campusapis.staff.v1.GetStudentSchoolRollStatusResponse - 15, // 46: campusapis.staff.v1.CampusService.GetStudentDormInfo:output_type -> campusapis.staff.v1.GetStudentDormInfoResponse - 17, // 47: campusapis.staff.v1.CampusService.GetStudentBirthdayInfo:output_type -> campusapis.staff.v1.GetStudentBirthdayInfoResponse - 20, // 48: campusapis.staff.v1.CampusService.GetStudentBirthdaysIn:output_type -> campusapis.staff.v1.GetStudentBirthdaysInResponse - 21, // 49: campusapis.staff.v1.CampusService.GetStudentRewards:output_type -> campusapis.staff.v1.GetStudentRewardsResponse - 23, // 50: campusapis.staff.v1.CampusService.GetStudentCourseSelections:output_type -> campusapis.staff.v1.GetStudentCourseSelectionsResponse - 25, // 51: campusapis.staff.v1.CampusService.GetStudentGrade:output_type -> campusapis.staff.v1.GetStudentGradeResponse - 27, // 52: campusapis.staff.v1.CampusService.GetGlobalStudentGrade:output_type -> campusapis.staff.v1.GetGlobalStudentGradeResponse - 30, // 53: campusapis.staff.v1.CampusService.GetStudentExam:output_type -> campusapis.staff.v1.GetStudentExamResponse - 28, // 54: campusapis.staff.v1.CampusService.GetDailyExam:output_type -> campusapis.staff.v1.GetDailyExamResponse - 32, // 55: campusapis.staff.v1.CampusService.GetStudentGPA:output_type -> campusapis.staff.v1.GetStudentGPAResponse - 37, // 56: campusapis.staff.v1.CampusService.PostStudentGateAccess:output_type -> campusapis.staff.v1.PostStudentGateAccessResponse - 38, // 57: campusapis.staff.v1.CampusService.GetStudentStaySchoolInfo:output_type -> campusapis.staff.v1.GetStudentStaySchoolInfoResponse - 44, // 58: campusapis.staff.v1.CampusService.GetFreshmanBaseInfo:output_type -> campusapis.staff.v1.GetFreshmanBaseInfoResponse - 46, // 59: campusapis.staff.v1.CampusService.GetFreshmanDetail:output_type -> campusapis.staff.v1.GetFreshmanDetailResponse - 48, // 60: campusapis.staff.v1.CampusService.GetFreshmanRoommates:output_type -> campusapis.staff.v1.GetFreshmanRoommatesResponse - 42, // [42:61] is the sub-list for method output_type - 23, // [23:42] is the sub-list for method input_type - 23, // [23:23] is the sub-list for extension type_name - 23, // [23:23] is the sub-list for extension extendee - 0, // [0:23] is the sub-list for field type_name + 58, // 23: campusapis.staff.v1.StoreFitnessScoreResponse.data:type_name -> campusapis.staff.v1.FitnessScore + 58, // 24: campusapis.staff.v1.UpdateFitnessScoreResponse.data:type_name -> campusapis.staff.v1.FitnessScore + 62, // 25: campusapis.staff.v1.CampusService.GetPersonInfo:input_type -> google.protobuf.Empty + 62, // 26: campusapis.staff.v1.CampusService.GetStudentInfo:input_type -> google.protobuf.Empty + 50, // 27: campusapis.staff.v1.CampusService.GetStudentCountByDivision:input_type -> campusapis.staff.v1.GetStudentCountByDivisionRequest + 62, // 28: campusapis.staff.v1.CampusService.GetStudentSchoolRollStatus:input_type -> google.protobuf.Empty + 62, // 29: campusapis.staff.v1.CampusService.GetStudentDormInfo:input_type -> google.protobuf.Empty + 62, // 30: campusapis.staff.v1.CampusService.GetStudentBirthdayInfo:input_type -> google.protobuf.Empty + 19, // 31: campusapis.staff.v1.CampusService.GetStudentBirthdaysIn:input_type -> campusapis.staff.v1.GetStudentBirthdaysInRequest + 2, // 32: campusapis.staff.v1.CampusService.GetStudentRewards:input_type -> campusapis.staff.v1.GetStudentRewardsRequest + 3, // 33: campusapis.staff.v1.CampusService.GetStudentCourseSelections:input_type -> campusapis.staff.v1.GetStudentCourseSelectionsRequest + 4, // 34: campusapis.staff.v1.CampusService.GetStudentGrade:input_type -> campusapis.staff.v1.GetStudentGradeRequest + 5, // 35: campusapis.staff.v1.CampusService.GetGlobalStudentGrade:input_type -> campusapis.staff.v1.GetGlobalStudentGradeRequest + 6, // 36: campusapis.staff.v1.CampusService.GetStudentExam:input_type -> campusapis.staff.v1.GetStudentExamRequest + 7, // 37: campusapis.staff.v1.CampusService.GetDailyExam:input_type -> campusapis.staff.v1.GetDailyExamRequest + 62, // 38: campusapis.staff.v1.CampusService.GetStudentGPA:input_type -> google.protobuf.Empty + 36, // 39: campusapis.staff.v1.CampusService.PostStudentGateAccess:input_type -> campusapis.staff.v1.PostStudentGateAccessRequest + 62, // 40: campusapis.staff.v1.CampusService.GetStudentStaySchoolInfo:input_type -> google.protobuf.Empty + 40, // 41: campusapis.staff.v1.CampusService.GetFreshmanBaseInfo:input_type -> campusapis.staff.v1.GetFreshmanBaseInfoRequest + 41, // 42: campusapis.staff.v1.CampusService.GetFreshmanDetail:input_type -> campusapis.staff.v1.GetFreshmanDetailRequest + 42, // 43: campusapis.staff.v1.CampusService.GetFreshmanRoommates:input_type -> campusapis.staff.v1.GetFreshmanRoommatesRequest + 52, // 44: campusapis.staff.v1.CampusService.StoreFitnessScore:input_type -> campusapis.staff.v1.StoreFitnessScoreRequest + 54, // 45: campusapis.staff.v1.CampusService.UpdateFitnessScore:input_type -> campusapis.staff.v1.UpdateFitnessScoreRequest + 56, // 46: campusapis.staff.v1.CampusService.DeleteFitnessScore:input_type -> campusapis.staff.v1.DeleteFitnessScoreRequest + 0, // 47: campusapis.staff.v1.CampusService.GetPersonInfo:output_type -> campusapis.staff.v1.GetPersonInfoResponse + 9, // 48: campusapis.staff.v1.CampusService.GetStudentInfo:output_type -> campusapis.staff.v1.GetStudentInfoResponse + 51, // 49: campusapis.staff.v1.CampusService.GetStudentCountByDivision:output_type -> campusapis.staff.v1.NiceResponse + 11, // 50: campusapis.staff.v1.CampusService.GetStudentSchoolRollStatus:output_type -> campusapis.staff.v1.GetStudentSchoolRollStatusResponse + 15, // 51: campusapis.staff.v1.CampusService.GetStudentDormInfo:output_type -> campusapis.staff.v1.GetStudentDormInfoResponse + 17, // 52: campusapis.staff.v1.CampusService.GetStudentBirthdayInfo:output_type -> campusapis.staff.v1.GetStudentBirthdayInfoResponse + 20, // 53: campusapis.staff.v1.CampusService.GetStudentBirthdaysIn:output_type -> campusapis.staff.v1.GetStudentBirthdaysInResponse + 21, // 54: campusapis.staff.v1.CampusService.GetStudentRewards:output_type -> campusapis.staff.v1.GetStudentRewardsResponse + 23, // 55: campusapis.staff.v1.CampusService.GetStudentCourseSelections:output_type -> campusapis.staff.v1.GetStudentCourseSelectionsResponse + 25, // 56: campusapis.staff.v1.CampusService.GetStudentGrade:output_type -> campusapis.staff.v1.GetStudentGradeResponse + 27, // 57: campusapis.staff.v1.CampusService.GetGlobalStudentGrade:output_type -> campusapis.staff.v1.GetGlobalStudentGradeResponse + 30, // 58: campusapis.staff.v1.CampusService.GetStudentExam:output_type -> campusapis.staff.v1.GetStudentExamResponse + 28, // 59: campusapis.staff.v1.CampusService.GetDailyExam:output_type -> campusapis.staff.v1.GetDailyExamResponse + 32, // 60: campusapis.staff.v1.CampusService.GetStudentGPA:output_type -> campusapis.staff.v1.GetStudentGPAResponse + 37, // 61: campusapis.staff.v1.CampusService.PostStudentGateAccess:output_type -> campusapis.staff.v1.PostStudentGateAccessResponse + 38, // 62: campusapis.staff.v1.CampusService.GetStudentStaySchoolInfo:output_type -> campusapis.staff.v1.GetStudentStaySchoolInfoResponse + 44, // 63: campusapis.staff.v1.CampusService.GetFreshmanBaseInfo:output_type -> campusapis.staff.v1.GetFreshmanBaseInfoResponse + 46, // 64: campusapis.staff.v1.CampusService.GetFreshmanDetail:output_type -> campusapis.staff.v1.GetFreshmanDetailResponse + 48, // 65: campusapis.staff.v1.CampusService.GetFreshmanRoommates:output_type -> campusapis.staff.v1.GetFreshmanRoommatesResponse + 53, // 66: campusapis.staff.v1.CampusService.StoreFitnessScore:output_type -> campusapis.staff.v1.StoreFitnessScoreResponse + 55, // 67: campusapis.staff.v1.CampusService.UpdateFitnessScore:output_type -> campusapis.staff.v1.UpdateFitnessScoreResponse + 57, // 68: campusapis.staff.v1.CampusService.DeleteFitnessScore:output_type -> campusapis.staff.v1.DeleteFitnessScoreResponse + 47, // [47:69] is the sub-list for method output_type + 25, // [25:47] is the sub-list for method input_type + 25, // [25:25] is the sub-list for extension type_name + 25, // [25:25] is the sub-list for extension extendee + 0, // [0:25] is the sub-list for field type_name } func init() { file_campusapis_staff_v1_campus_proto_init() } @@ -4986,7 +5911,7 @@ func file_campusapis_staff_v1_campus_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_campusapis_staff_v1_campus_proto_rawDesc), len(file_campusapis_staff_v1_campus_proto_rawDesc)), NumEnums: 0, - NumMessages: 54, + NumMessages: 61, NumExtensions: 0, NumServices: 1, }, diff --git a/campusapis/staff/v1/campus.pb.gw.go b/campusapis/staff/v1/campus.pb.gw.go index f9e434c..670e098 100644 --- a/campusapis/staff/v1/campus.pb.gw.go +++ b/campusapis/staff/v1/campus.pb.gw.go @@ -984,6 +984,182 @@ func local_request_CampusService_GetFreshmanRoommates_1(ctx context.Context, mar return msg, metadata, err } +func request_CampusService_StoreFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, client CampusServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq StoreFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.StoreFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_CampusService_StoreFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, server CampusServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq StoreFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.StoreFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +var filter_CampusService_StoreFitnessScore_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + +func request_CampusService_StoreFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, client CampusServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq StoreFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_CampusService_StoreFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.StoreFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_CampusService_StoreFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, server CampusServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq StoreFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_CampusService_StoreFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.StoreFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +func request_CampusService_UpdateFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, client CampusServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.UpdateFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_CampusService_UpdateFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, server CampusServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil && !errors.Is(err, io.EOF) { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.UpdateFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +var filter_CampusService_UpdateFitnessScore_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + +func request_CampusService_UpdateFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, client CampusServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_CampusService_UpdateFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.UpdateFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_CampusService_UpdateFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, server CampusServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq UpdateFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_CampusService_UpdateFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.UpdateFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +var filter_CampusService_DeleteFitnessScore_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + +func request_CampusService_DeleteFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, client CampusServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeleteFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_CampusService_DeleteFitnessScore_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.DeleteFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_CampusService_DeleteFitnessScore_0(ctx context.Context, marshaler runtime.Marshaler, server CampusServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeleteFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_CampusService_DeleteFitnessScore_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.DeleteFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + +var filter_CampusService_DeleteFitnessScore_1 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} + +func request_CampusService_DeleteFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, client CampusServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeleteFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_CampusService_DeleteFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.DeleteFitnessScore(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err +} + +func local_request_CampusService_DeleteFitnessScore_1(ctx context.Context, marshaler runtime.Marshaler, server CampusServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var ( + protoReq DeleteFitnessScoreRequest + metadata runtime.ServerMetadata + ) + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_CampusService_DeleteFitnessScore_1); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.DeleteFitnessScore(ctx, &protoReq) + return msg, metadata, err +} + // RegisterCampusServiceHandlerServer registers the http handlers for service CampusService to "mux". // UnaryRPC :call CampusServiceServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1710,6 +1886,126 @@ func RegisterCampusServiceHandlerServer(ctx context.Context, mux *runtime.ServeM } forward_CampusService_GetFreshmanRoommates_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodPost, pattern_CampusService_StoreFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/StoreFitnessScore", runtime.WithHTTPPathPattern("/staff/v1/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_CampusService_StoreFitnessScore_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_StoreFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_CampusService_StoreFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_CampusService_StoreFitnessScore_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_StoreFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPatch, pattern_CampusService_UpdateFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/staff/v1/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_CampusService_UpdateFitnessScore_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_UpdateFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPatch, pattern_CampusService_UpdateFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_CampusService_UpdateFitnessScore_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_UpdateFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_CampusService_DeleteFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/staff/v1/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_CampusService_DeleteFitnessScore_0(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_DeleteFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_CampusService_DeleteFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateIncomingContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_CampusService_DeleteFitnessScore_1(annotatedContext, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_DeleteFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) return nil } @@ -2362,6 +2658,108 @@ func RegisterCampusServiceHandlerClient(ctx context.Context, mux *runtime.ServeM } forward_CampusService_GetFreshmanRoommates_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) + mux.Handle(http.MethodPost, pattern_CampusService_StoreFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/StoreFitnessScore", runtime.WithHTTPPathPattern("/staff/v1/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_CampusService_StoreFitnessScore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_StoreFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPost, pattern_CampusService_StoreFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/StoreFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_CampusService_StoreFitnessScore_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_StoreFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPatch, pattern_CampusService_UpdateFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/staff/v1/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_CampusService_UpdateFitnessScore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_UpdateFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodPatch, pattern_CampusService_UpdateFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/UpdateFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_CampusService_UpdateFitnessScore_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_UpdateFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_CampusService_DeleteFitnessScore_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/staff/v1/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_CampusService_DeleteFitnessScore_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_DeleteFitnessScore_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) + mux.Handle(http.MethodDelete, pattern_CampusService_DeleteFitnessScore_1, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + annotatedContext, err := runtime.AnnotateContext(ctx, mux, req, "/campusapis.staff.v1.CampusService/DeleteFitnessScore", runtime.WithHTTPPathPattern("/fitness/score")) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_CampusService_DeleteFitnessScore_1(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) + if err != nil { + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) + return + } + forward_CampusService_DeleteFitnessScore_1(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + }) return nil } @@ -2402,6 +2800,12 @@ var ( pattern_CampusService_GetFreshmanDetail_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"freshman", "info"}, "")) pattern_CampusService_GetFreshmanRoommates_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"staff", "v1", "freshman", "roommate"}, "")) pattern_CampusService_GetFreshmanRoommates_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"freshman", "roommate"}, "")) + pattern_CampusService_StoreFitnessScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"staff", "v1", "fitness", "score"}, "")) + pattern_CampusService_StoreFitnessScore_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"fitness", "score"}, "")) + pattern_CampusService_UpdateFitnessScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"staff", "v1", "fitness", "score"}, "")) + pattern_CampusService_UpdateFitnessScore_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"fitness", "score"}, "")) + pattern_CampusService_DeleteFitnessScore_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"staff", "v1", "fitness", "score"}, "")) + pattern_CampusService_DeleteFitnessScore_1 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"fitness", "score"}, "")) ) var ( @@ -2441,4 +2845,10 @@ var ( forward_CampusService_GetFreshmanDetail_1 = runtime.ForwardResponseMessage forward_CampusService_GetFreshmanRoommates_0 = runtime.ForwardResponseMessage forward_CampusService_GetFreshmanRoommates_1 = runtime.ForwardResponseMessage + forward_CampusService_StoreFitnessScore_0 = runtime.ForwardResponseMessage + forward_CampusService_StoreFitnessScore_1 = runtime.ForwardResponseMessage + forward_CampusService_UpdateFitnessScore_0 = runtime.ForwardResponseMessage + forward_CampusService_UpdateFitnessScore_1 = runtime.ForwardResponseMessage + forward_CampusService_DeleteFitnessScore_0 = runtime.ForwardResponseMessage + forward_CampusService_DeleteFitnessScore_1 = runtime.ForwardResponseMessage ) diff --git a/campusapis/staff/v1/campus.proto b/campusapis/staff/v1/campus.proto index 0fc4c44..c4bdb05 100644 --- a/campusapis/staff/v1/campus.proto +++ b/campusapis/staff/v1/campus.proto @@ -205,9 +205,41 @@ service CampusService { } }; } -} -//下面为返回体和请求体 + //体测 + + //新增或更新体测成绩 + rpc StoreFitnessScore(StoreFitnessScoreRequest) returns (StoreFitnessScoreResponse) { + option (google.api.http) = { + post: "/staff/v1/fitness/score" + body: "*" + additional_bindings { + post: "/fitness/score" + } + }; + } + + //更新体测成绩 + rpc UpdateFitnessScore(UpdateFitnessScoreRequest) returns (UpdateFitnessScoreResponse) { + option (google.api.http) = { + patch: "/staff/v1/fitness/score" + body: "*" + additional_bindings { + patch: "/fitness/score" + } + }; + } + + //删除体测成绩 + rpc DeleteFitnessScore(DeleteFitnessScoreRequest) returns (DeleteFitnessScoreResponse) { + option (google.api.http) = { + delete: "/staff/v1/fitness/score" + additional_bindings { + delete: "/fitness/score" + } + }; + } +} @@ -831,4 +863,96 @@ message NiceResponse { int32 error = 1; string msg = 2; string data = 3; +} + +//下方为体测成绩相关消息 + +// StoreFitnessScoreRequest 新增或更新体测成绩请求 +message StoreFitnessScoreRequest { + string staff_id = 1; + string school_year = 2; + int32 semester = 3; + string gender = 4; + int32 grade = 5; + float height = 6; + float weight = 7; + float bmi = 8; + float run_50m = 9; + float standing_long_jump = 10; + float sit_and_reach = 11; + float run_800m = 12; + float run_1000m = 13; + int32 sit_ups = 14; + int32 pull_ups = 15; + int32 lung_capacity = 16; + float total_score = 17; +} + +// StoreFitnessScoreResponse 新增或更新体测成绩响应 +message StoreFitnessScoreResponse { + int32 error = 1; + string msg = 2; + FitnessScore data = 3; +} + +// UpdateFitnessScoreRequest 更新体测成绩请求 +message UpdateFitnessScoreRequest { + string staff_id = 1; + string school_year = 2; + int32 semester = 3; + string gender = 4; + int32 grade = 5; + float height = 6; + float weight = 7; + float bmi = 8; + float run_50m = 9; + float standing_long_jump = 10; + float sit_and_reach = 11; + float run_800m = 12; + float run_1000m = 13; + int32 sit_ups = 14; + int32 pull_ups = 15; + int32 lung_capacity = 16; + float total_score = 17; +} + +// UpdateFitnessScoreResponse 更新体测成绩响应 +message UpdateFitnessScoreResponse { + int32 error = 1; + string msg = 2; + FitnessScore data = 3; +} + +// DeleteFitnessScoreRequest 删除体测成绩请求 +message DeleteFitnessScoreRequest { + string staff_id = 1; + string school_year = 2; + int32 semester = 3; +} + +// DeleteFitnessScoreResponse 删除体测成绩响应 +message DeleteFitnessScoreResponse { + int32 error = 1; + string msg = 2; +} + +// FitnessScore 体测成绩信息 +message FitnessScore { + string staff_id = 1; + string school_year = 2; + int32 semester = 3; + string gender = 4; + int32 grade = 5; + float height = 6; + float weight = 7; + float bmi = 8; + float run_50m = 9; + float standing_long_jump = 10; + float sit_and_reach = 11; + float run_800m = 12; + float run_1000m = 13; + int32 sit_ups = 14; + int32 pull_ups = 15; + int32 lung_capacity = 16; + float total_score = 17; } \ No newline at end of file diff --git a/campusapis/staff/v1/campus_grpc.pb.go b/campusapis/staff/v1/campus_grpc.pb.go index fe969e1..c875e0e 100644 --- a/campusapis/staff/v1/campus_grpc.pb.go +++ b/campusapis/staff/v1/campus_grpc.pb.go @@ -39,6 +39,9 @@ const ( CampusService_GetFreshmanBaseInfo_FullMethodName = "/campusapis.staff.v1.CampusService/GetFreshmanBaseInfo" CampusService_GetFreshmanDetail_FullMethodName = "/campusapis.staff.v1.CampusService/GetFreshmanDetail" CampusService_GetFreshmanRoommates_FullMethodName = "/campusapis.staff.v1.CampusService/GetFreshmanRoommates" + CampusService_StoreFitnessScore_FullMethodName = "/campusapis.staff.v1.CampusService/StoreFitnessScore" + CampusService_UpdateFitnessScore_FullMethodName = "/campusapis.staff.v1.CampusService/UpdateFitnessScore" + CampusService_DeleteFitnessScore_FullMethodName = "/campusapis.staff.v1.CampusService/DeleteFitnessScore" ) // CampusServiceClient is the client API for CampusService service. @@ -105,6 +108,12 @@ type CampusServiceClient interface { GetFreshmanDetail(ctx context.Context, in *GetFreshmanDetailRequest, opts ...grpc.CallOption) (*GetFreshmanDetailResponse, error) // 获取新生宿舍信息 GetFreshmanRoommates(ctx context.Context, in *GetFreshmanRoommatesRequest, opts ...grpc.CallOption) (*GetFreshmanRoommatesResponse, error) + // 新增或更新体测成绩 + StoreFitnessScore(ctx context.Context, in *StoreFitnessScoreRequest, opts ...grpc.CallOption) (*StoreFitnessScoreResponse, error) + // 更新体测成绩 + UpdateFitnessScore(ctx context.Context, in *UpdateFitnessScoreRequest, opts ...grpc.CallOption) (*UpdateFitnessScoreResponse, error) + // 删除体测成绩 + DeleteFitnessScore(ctx context.Context, in *DeleteFitnessScoreRequest, opts ...grpc.CallOption) (*DeleteFitnessScoreResponse, error) } type campusServiceClient struct { @@ -305,6 +314,36 @@ func (c *campusServiceClient) GetFreshmanRoommates(ctx context.Context, in *GetF return out, nil } +func (c *campusServiceClient) StoreFitnessScore(ctx context.Context, in *StoreFitnessScoreRequest, opts ...grpc.CallOption) (*StoreFitnessScoreResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StoreFitnessScoreResponse) + err := c.cc.Invoke(ctx, CampusService_StoreFitnessScore_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *campusServiceClient) UpdateFitnessScore(ctx context.Context, in *UpdateFitnessScoreRequest, opts ...grpc.CallOption) (*UpdateFitnessScoreResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdateFitnessScoreResponse) + err := c.cc.Invoke(ctx, CampusService_UpdateFitnessScore_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *campusServiceClient) DeleteFitnessScore(ctx context.Context, in *DeleteFitnessScoreRequest, opts ...grpc.CallOption) (*DeleteFitnessScoreResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(DeleteFitnessScoreResponse) + err := c.cc.Invoke(ctx, CampusService_DeleteFitnessScore_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // CampusServiceServer is the server API for CampusService service. // All implementations must embed UnimplementedCampusServiceServer // for forward compatibility. @@ -369,6 +408,12 @@ type CampusServiceServer interface { GetFreshmanDetail(context.Context, *GetFreshmanDetailRequest) (*GetFreshmanDetailResponse, error) // 获取新生宿舍信息 GetFreshmanRoommates(context.Context, *GetFreshmanRoommatesRequest) (*GetFreshmanRoommatesResponse, error) + // 新增或更新体测成绩 + StoreFitnessScore(context.Context, *StoreFitnessScoreRequest) (*StoreFitnessScoreResponse, error) + // 更新体测成绩 + UpdateFitnessScore(context.Context, *UpdateFitnessScoreRequest) (*UpdateFitnessScoreResponse, error) + // 删除体测成绩 + DeleteFitnessScore(context.Context, *DeleteFitnessScoreRequest) (*DeleteFitnessScoreResponse, error) mustEmbedUnimplementedCampusServiceServer() } @@ -436,6 +481,15 @@ func (UnimplementedCampusServiceServer) GetFreshmanDetail(context.Context, *GetF func (UnimplementedCampusServiceServer) GetFreshmanRoommates(context.Context, *GetFreshmanRoommatesRequest) (*GetFreshmanRoommatesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetFreshmanRoommates not implemented") } +func (UnimplementedCampusServiceServer) StoreFitnessScore(context.Context, *StoreFitnessScoreRequest) (*StoreFitnessScoreResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method StoreFitnessScore not implemented") +} +func (UnimplementedCampusServiceServer) UpdateFitnessScore(context.Context, *UpdateFitnessScoreRequest) (*UpdateFitnessScoreResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateFitnessScore not implemented") +} +func (UnimplementedCampusServiceServer) DeleteFitnessScore(context.Context, *DeleteFitnessScoreRequest) (*DeleteFitnessScoreResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteFitnessScore not implemented") +} func (UnimplementedCampusServiceServer) mustEmbedUnimplementedCampusServiceServer() {} func (UnimplementedCampusServiceServer) testEmbeddedByValue() {} @@ -799,6 +853,60 @@ func _CampusService_GetFreshmanRoommates_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } +func _CampusService_StoreFitnessScore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StoreFitnessScoreRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CampusServiceServer).StoreFitnessScore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CampusService_StoreFitnessScore_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CampusServiceServer).StoreFitnessScore(ctx, req.(*StoreFitnessScoreRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CampusService_UpdateFitnessScore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateFitnessScoreRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CampusServiceServer).UpdateFitnessScore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CampusService_UpdateFitnessScore_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CampusServiceServer).UpdateFitnessScore(ctx, req.(*UpdateFitnessScoreRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _CampusService_DeleteFitnessScore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteFitnessScoreRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(CampusServiceServer).DeleteFitnessScore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: CampusService_DeleteFitnessScore_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(CampusServiceServer).DeleteFitnessScore(ctx, req.(*DeleteFitnessScoreRequest)) + } + return interceptor(ctx, in, info, handler) +} + // CampusService_ServiceDesc is the grpc.ServiceDesc for CampusService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -882,6 +990,18 @@ var CampusService_ServiceDesc = grpc.ServiceDesc{ MethodName: "GetFreshmanRoommates", Handler: _CampusService_GetFreshmanRoommates_Handler, }, + { + MethodName: "StoreFitnessScore", + Handler: _CampusService_StoreFitnessScore_Handler, + }, + { + MethodName: "UpdateFitnessScore", + Handler: _CampusService_UpdateFitnessScore_Handler, + }, + { + MethodName: "DeleteFitnessScore", + Handler: _CampusService_DeleteFitnessScore_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "campusapis/staff/v1/campus.proto", diff --git a/docs/swagger/campusapis/fitness/v1/fitness.swagger.json b/docs/swagger/campusapis/fitness/v1/fitness.swagger.json deleted file mode 100644 index 282f9e0..0000000 --- a/docs/swagger/campusapis/fitness/v1/fitness.swagger.json +++ /dev/null @@ -1,736 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "campusapis/fitness/v1/fitness.proto", - "version": "version not set" - }, - "tags": [ - { - "name": "FitnessService" - } - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": { - "/fitness/score": { - "delete": { - "summary": "删除体测成绩", - "operationId": "FitnessService_DeleteFitnessScore2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeleteFitnessScoreResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "staffId", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "schoolYear", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "semester", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - } - ], - "tags": [ - "FitnessService" - ] - }, - "post": { - "summary": "新增或更新体测成绩", - "operationId": "FitnessService_StoreFitnessScore2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1StoreFitnessScoreResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "staffId", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "schoolYear", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "semester", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "gender", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "grade", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "height", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "weight", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "bmi", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "run50m", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "standingLongJump", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "sitAndReach", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "run800m", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "run1000m", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "sitUps", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "pullUps", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "lungCapacity", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "totalScore", - "in": "query", - "required": false, - "type": "number", - "format": "float" - } - ], - "tags": [ - "FitnessService" - ] - }, - "patch": { - "summary": "更新体测成绩", - "operationId": "FitnessService_UpdateFitnessScore2", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1UpdateFitnessScoreResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "staffId", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "schoolYear", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "semester", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "gender", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "grade", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "height", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "weight", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "bmi", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "run50m", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "standingLongJump", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "sitAndReach", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "run800m", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "run1000m", - "in": "query", - "required": false, - "type": "number", - "format": "float" - }, - { - "name": "sitUps", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "pullUps", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "lungCapacity", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "totalScore", - "in": "query", - "required": false, - "type": "number", - "format": "float" - } - ], - "tags": [ - "FitnessService" - ] - } - }, - "/fitness/v1/score": { - "delete": { - "summary": "删除体测成绩", - "operationId": "FitnessService_DeleteFitnessScore", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeleteFitnessScoreResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "staffId", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "schoolYear", - "in": "query", - "required": false, - "type": "string" - }, - { - "name": "semester", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - } - ], - "tags": [ - "FitnessService" - ] - }, - "post": { - "summary": "新增或更新体测成绩", - "operationId": "FitnessService_StoreFitnessScore", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1StoreFitnessScoreResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1StoreFitnessScoreRequest" - } - } - ], - "tags": [ - "FitnessService" - ] - }, - "patch": { - "summary": "更新体测成绩", - "operationId": "FitnessService_UpdateFitnessScore", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1UpdateFitnessScoreResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1UpdateFitnessScoreRequest" - } - } - ], - "tags": [ - "FitnessService" - ] - } - } - }, - "definitions": { - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/protobufAny" - } - } - } - }, - "v1DeleteFitnessScoreResponse": { - "type": "object", - "properties": { - "error": { - "type": "integer", - "format": "int32" - }, - "msg": { - "type": "string" - } - }, - "title": "DeleteFitnessScoreResponse 删除体测成绩响应" - }, - "v1FitnessScore": { - "type": "object", - "properties": { - "staffId": { - "type": "string" - }, - "schoolYear": { - "type": "string" - }, - "semester": { - "type": "integer", - "format": "int32" - }, - "gender": { - "type": "string" - }, - "grade": { - "type": "integer", - "format": "int32" - }, - "height": { - "type": "number", - "format": "float" - }, - "weight": { - "type": "number", - "format": "float" - }, - "bmi": { - "type": "number", - "format": "float" - }, - "run50m": { - "type": "number", - "format": "float" - }, - "standingLongJump": { - "type": "number", - "format": "float" - }, - "sitAndReach": { - "type": "number", - "format": "float" - }, - "run800m": { - "type": "number", - "format": "float" - }, - "run1000m": { - "type": "number", - "format": "float" - }, - "sitUps": { - "type": "integer", - "format": "int32" - }, - "pullUps": { - "type": "integer", - "format": "int32" - }, - "lungCapacity": { - "type": "integer", - "format": "int32" - }, - "totalScore": { - "type": "number", - "format": "float" - } - }, - "title": "FitnessScore 体测成绩信息" - }, - "v1StoreFitnessScoreRequest": { - "type": "object", - "properties": { - "staffId": { - "type": "string" - }, - "schoolYear": { - "type": "string" - }, - "semester": { - "type": "integer", - "format": "int32" - }, - "gender": { - "type": "string" - }, - "grade": { - "type": "integer", - "format": "int32" - }, - "height": { - "type": "number", - "format": "float" - }, - "weight": { - "type": "number", - "format": "float" - }, - "bmi": { - "type": "number", - "format": "float" - }, - "run50m": { - "type": "number", - "format": "float" - }, - "standingLongJump": { - "type": "number", - "format": "float" - }, - "sitAndReach": { - "type": "number", - "format": "float" - }, - "run800m": { - "type": "number", - "format": "float" - }, - "run1000m": { - "type": "number", - "format": "float" - }, - "sitUps": { - "type": "integer", - "format": "int32" - }, - "pullUps": { - "type": "integer", - "format": "int32" - }, - "lungCapacity": { - "type": "integer", - "format": "int32" - }, - "totalScore": { - "type": "number", - "format": "float" - } - }, - "title": "StoreFitnessScoreRequest 新增或更新体测成绩请求" - }, - "v1StoreFitnessScoreResponse": { - "type": "object", - "properties": { - "error": { - "type": "integer", - "format": "int32" - }, - "msg": { - "type": "string" - }, - "data": { - "$ref": "#/definitions/v1FitnessScore" - } - }, - "title": "StoreFitnessScoreResponse 新增或更新体测成绩响应" - }, - "v1UpdateFitnessScoreRequest": { - "type": "object", - "properties": { - "staffId": { - "type": "string" - }, - "schoolYear": { - "type": "string" - }, - "semester": { - "type": "integer", - "format": "int32" - }, - "gender": { - "type": "string" - }, - "grade": { - "type": "integer", - "format": "int32" - }, - "height": { - "type": "number", - "format": "float" - }, - "weight": { - "type": "number", - "format": "float" - }, - "bmi": { - "type": "number", - "format": "float" - }, - "run50m": { - "type": "number", - "format": "float" - }, - "standingLongJump": { - "type": "number", - "format": "float" - }, - "sitAndReach": { - "type": "number", - "format": "float" - }, - "run800m": { - "type": "number", - "format": "float" - }, - "run1000m": { - "type": "number", - "format": "float" - }, - "sitUps": { - "type": "integer", - "format": "int32" - }, - "pullUps": { - "type": "integer", - "format": "int32" - }, - "lungCapacity": { - "type": "integer", - "format": "int32" - }, - "totalScore": { - "type": "number", - "format": "float" - } - }, - "title": "UpdateFitnessScoreRequest 更新体测成绩请求" - }, - "v1UpdateFitnessScoreResponse": { - "type": "object", - "properties": { - "error": { - "type": "integer", - "format": "int32" - }, - "msg": { - "type": "string" - }, - "data": { - "$ref": "#/definitions/v1FitnessScore" - } - }, - "title": "UpdateFitnessScoreResponse 更新体测成绩响应" - } - } -} diff --git a/docs/swagger/campusapis/staff/v1/campus.swagger.json b/docs/swagger/campusapis/staff/v1/campus.swagger.json index dbc46af..6e37ccb 100644 --- a/docs/swagger/campusapis/staff/v1/campus.swagger.json +++ b/docs/swagger/campusapis/staff/v1/campus.swagger.json @@ -16,6 +16,328 @@ "application/json" ], "paths": { + "/fitness/score": { + "delete": { + "summary": "删除体测成绩", + "operationId": "CampusService_DeleteFitnessScore2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1DeleteFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "staffId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "schoolYear", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "semester", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "CampusService" + ] + }, + "post": { + "summary": "新增或更新体测成绩", + "operationId": "CampusService_StoreFitnessScore2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1StoreFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "staffId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "schoolYear", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "semester", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "gender", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "grade", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "height", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "weight", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "bmi", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run50m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "standingLongJump", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "sitAndReach", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run800m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run1000m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "sitUps", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pullUps", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "lungCapacity", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "totalScore", + "in": "query", + "required": false, + "type": "number", + "format": "float" + } + ], + "tags": [ + "CampusService" + ] + }, + "patch": { + "summary": "更新体测成绩", + "operationId": "CampusService_UpdateFitnessScore2", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "staffId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "schoolYear", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "semester", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "gender", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "grade", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "height", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "weight", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "bmi", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run50m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "standingLongJump", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "sitAndReach", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run800m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "run1000m", + "in": "query", + "required": false, + "type": "number", + "format": "float" + }, + { + "name": "sitUps", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pullUps", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "lungCapacity", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "totalScore", + "in": "query", + "required": false, + "type": "number", + "format": "float" + } + ], + "tags": [ + "CampusService" + ] + } + }, "/freshman/base": { "get": { "summary": "获取新生基本信息", @@ -232,6 +554,112 @@ ] } }, + "/staff/v1/fitness/score": { + "delete": { + "summary": "删除体测成绩", + "operationId": "CampusService_DeleteFitnessScore", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1DeleteFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "staffId", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "schoolYear", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "semester", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "tags": [ + "CampusService" + ] + }, + "post": { + "summary": "新增或更新体测成绩", + "operationId": "CampusService_StoreFitnessScore", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1StoreFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1StoreFitnessScoreRequest" + } + } + ], + "tags": [ + "CampusService" + ] + }, + "patch": { + "summary": "更新体测成绩", + "operationId": "CampusService_UpdateFitnessScore", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateFitnessScoreResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1UpdateFitnessScoreRequest" + } + } + ], + "tags": [ + "CampusService" + ] + } + }, "/staff/v1/freshman/base": { "get": { "summary": "获取新生基本信息", @@ -1284,6 +1712,19 @@ } } }, + "v1DeleteFitnessScoreResponse": { + "type": "object", + "properties": { + "error": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + } + }, + "title": "DeleteFitnessScoreResponse 删除体测成绩响应" + }, "v1DormInfo": { "type": "object", "properties": { @@ -1301,6 +1742,77 @@ } } }, + "v1FitnessScore": { + "type": "object", + "properties": { + "staffId": { + "type": "string" + }, + "schoolYear": { + "type": "string" + }, + "semester": { + "type": "integer", + "format": "int32" + }, + "gender": { + "type": "string" + }, + "grade": { + "type": "integer", + "format": "int32" + }, + "height": { + "type": "number", + "format": "float" + }, + "weight": { + "type": "number", + "format": "float" + }, + "bmi": { + "type": "number", + "format": "float" + }, + "run50m": { + "type": "number", + "format": "float" + }, + "standingLongJump": { + "type": "number", + "format": "float" + }, + "sitAndReach": { + "type": "number", + "format": "float" + }, + "run800m": { + "type": "number", + "format": "float" + }, + "run1000m": { + "type": "number", + "format": "float" + }, + "sitUps": { + "type": "integer", + "format": "int32" + }, + "pullUps": { + "type": "integer", + "format": "int32" + }, + "lungCapacity": { + "type": "integer", + "format": "int32" + }, + "totalScore": { + "type": "number", + "format": "float" + } + }, + "title": "FitnessScore 体测成绩信息" + }, "v1FreshmanBaseInfo": { "type": "object", "properties": { @@ -1886,6 +2398,93 @@ }, "title": "PostStudentGateAccessResponse 推送学生门禁通行信息" }, + "v1StoreFitnessScoreRequest": { + "type": "object", + "properties": { + "staffId": { + "type": "string" + }, + "schoolYear": { + "type": "string" + }, + "semester": { + "type": "integer", + "format": "int32" + }, + "gender": { + "type": "string" + }, + "grade": { + "type": "integer", + "format": "int32" + }, + "height": { + "type": "number", + "format": "float" + }, + "weight": { + "type": "number", + "format": "float" + }, + "bmi": { + "type": "number", + "format": "float" + }, + "run50m": { + "type": "number", + "format": "float" + }, + "standingLongJump": { + "type": "number", + "format": "float" + }, + "sitAndReach": { + "type": "number", + "format": "float" + }, + "run800m": { + "type": "number", + "format": "float" + }, + "run1000m": { + "type": "number", + "format": "float" + }, + "sitUps": { + "type": "integer", + "format": "int32" + }, + "pullUps": { + "type": "integer", + "format": "int32" + }, + "lungCapacity": { + "type": "integer", + "format": "int32" + }, + "totalScore": { + "type": "number", + "format": "float" + } + }, + "title": "StoreFitnessScoreRequest 新增或更新体测成绩请求" + }, + "v1StoreFitnessScoreResponse": { + "type": "object", + "properties": { + "error": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + }, + "data": { + "$ref": "#/definitions/v1FitnessScore" + } + }, + "title": "StoreFitnessScoreResponse 新增或更新体测成绩响应" + }, "v1StudentBirthdayInfo": { "type": "object", "properties": { @@ -2238,6 +2837,93 @@ } }, "title": "留校生信息" + }, + "v1UpdateFitnessScoreRequest": { + "type": "object", + "properties": { + "staffId": { + "type": "string" + }, + "schoolYear": { + "type": "string" + }, + "semester": { + "type": "integer", + "format": "int32" + }, + "gender": { + "type": "string" + }, + "grade": { + "type": "integer", + "format": "int32" + }, + "height": { + "type": "number", + "format": "float" + }, + "weight": { + "type": "number", + "format": "float" + }, + "bmi": { + "type": "number", + "format": "float" + }, + "run50m": { + "type": "number", + "format": "float" + }, + "standingLongJump": { + "type": "number", + "format": "float" + }, + "sitAndReach": { + "type": "number", + "format": "float" + }, + "run800m": { + "type": "number", + "format": "float" + }, + "run1000m": { + "type": "number", + "format": "float" + }, + "sitUps": { + "type": "integer", + "format": "int32" + }, + "pullUps": { + "type": "integer", + "format": "int32" + }, + "lungCapacity": { + "type": "integer", + "format": "int32" + }, + "totalScore": { + "type": "number", + "format": "float" + } + }, + "title": "UpdateFitnessScoreRequest 更新体测成绩请求" + }, + "v1UpdateFitnessScoreResponse": { + "type": "object", + "properties": { + "error": { + "type": "integer", + "format": "int32" + }, + "msg": { + "type": "string" + }, + "data": { + "$ref": "#/definitions/v1FitnessScore" + } + }, + "title": "UpdateFitnessScoreResponse 更新体测成绩响应" } } }