From a627891dae62c7abe9749ac18d47f1539a1c3b96 Mon Sep 17 00:00:00 2001 From: meixiongfeng <766881921@qq.com> Date: Fri, 1 Sep 2023 14:52:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=AD=E7=BB=83=E5=A2=9E=E5=8A=A0cd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/dragon/api_list.go | 25 ++++++- modules/dragon/api_train.go | 30 +++++++- modules/dragon/model_dragon.go | 5 +- modules/dragon/module.go | 2 +- pb/dragon_db.pb.go | 132 +++++++++++++++++++++++++-------- pb/errorcode.pb.go | 113 +++++++++++++++------------- 6 files changed, 216 insertions(+), 91 deletions(-) diff --git a/modules/dragon/api_list.go b/modules/dragon/api_list.go index 99a981ab4..ca7ecb5d0 100644 --- a/modules/dragon/api_list.go +++ b/modules/dragon/api_list.go @@ -3,6 +3,8 @@ package dragon import ( "go_dreamfactory/comm" "go_dreamfactory/pb" + "go_dreamfactory/sys/configure" + "go_dreamfactory/utils" ) //参数校验 @@ -11,10 +13,27 @@ func (this *apiComp) GetListCheck(session comm.IUserSession, req *pb.DragonGetLi } func (this *apiComp) GetList(session comm.IUserSession, req *pb.DragonGetListReq) (errdata *pb.ErrorData) { + var ( + dragon []*pb.DBDragon + update map[string]interface{} + ) rsp := &pb.DragonGetListResp{} - - rsp.Dragons, _ = this.module.modelDragon.GetDragonList(session.GetUserId()) - + update = map[string]interface{}{} + dragon, _ = this.module.modelDragon.GetDragonList(session.GetUserId()) + for _, v := range dragon { + if !utils.IsToday(v.Rtime) { + v.Rtime = configure.Now().Unix() + for _, v1 := range v.Play { + if v1.Count != 0 { + v1.Count = 0 + update["play"] = v.Play + break + } + } + update["rtime"] = v.Rtime + this.module.modelDragon.UpdateDragonData(session.GetUserId(), v.Id, update) + } + } session.SendMsg(string(this.module.GetType()), "", rsp) return } diff --git a/modules/dragon/api_train.go b/modules/dragon/api_train.go index 1349df1f1..39bb776a8 100644 --- a/modules/dragon/api_train.go +++ b/modules/dragon/api_train.go @@ -3,6 +3,7 @@ package dragon import ( "go_dreamfactory/comm" "go_dreamfactory/pb" + "go_dreamfactory/sys/configure" cfg "go_dreamfactory/sys/configure/structs" ) @@ -104,12 +105,33 @@ func (this *apiComp) Train(session comm.IUserSession, req *pb.DragonTrainReq) (e dragon.Property["etime"] = speed update["property"] = dragon.Property } - - // 校验训练次数 - if dragon.Play[req.Ttype] >= playConf.Time { + if _, ok := dragon.Play[req.Ttype]; !ok { + dragon.Play[req.Ttype] = &pb.PlayData{ + Count: 0, + Cdendtime: 0, + } + } + if dragon.Play[req.Ttype].Cdendtime > configure.Now().Unix() { // cd时间冷却中 + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DragonTrainCding, + Title: pb.ErrorCode_DragonTrainCding.ToString(), + Message: err.Error(), + } return } - dragon.Play[req.Ttype] += 1 // 次数+1 + if playConf.Cd > 0 { + dragon.Play[req.Ttype].Cdendtime = configure.Now().Unix() + int64(playConf.Cd) + } + // 校验训练次数 + if dragon.Play[req.Ttype].Count >= playConf.Time { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DragonTrainMaxCount, + Title: pb.ErrorCode_DragonTrainMaxCount.ToString(), + Message: err.Error(), + } + return + } + dragon.Play[req.Ttype].Count += 1 // 次数+1 update["play"] = dragon.Play if errdata = this.module.ConsumeRes(session, playConf.Deplete, true); errdata != nil { diff --git a/modules/dragon/model_dragon.go b/modules/dragon/model_dragon.go index dd1c051e6..c384d3f7e 100644 --- a/modules/dragon/model_dragon.go +++ b/modules/dragon/model_dragon.go @@ -5,6 +5,7 @@ import ( "go_dreamfactory/lego/core" "go_dreamfactory/modules" "go_dreamfactory/pb" + "go_dreamfactory/sys/configure" "go_dreamfactory/sys/db" "go.mongodb.org/mongo-driver/bson/primitive" @@ -105,8 +106,8 @@ func (this *ModelDragon) CreateDragon(session comm.IUserSession, dragons map[str Lv: lv, Exp: 0, Property: map[string]int32{}, - Play: map[int32]int32{}, - Rtime: 0, + Play: map[int32]*pb.PlayData{}, + Rtime: configure.Now().Unix(), } if conf, err := this.module.configure.GetDragonConfById(dragonCfgId, lv); err == nil { if c, err := this.module.configure.GetDragonMount(dragonCfgId, conf.Type); err == nil { diff --git a/modules/dragon/module.go b/modules/dragon/module.go index 0d2ea2e22..211f75238 100644 --- a/modules/dragon/module.go +++ b/modules/dragon/module.go @@ -68,7 +68,7 @@ func (this *Dragon) CreateRobotDragon(dragonid string, lv int32) (dragon *pb.DBD Lv: lv, Exp: 0, Property: map[string]int32{}, - Play: map[int32]int32{}, + Play: map[int32]*pb.PlayData{}, Rtime: configure.Now().Unix(), } diff --git a/pb/dragon_db.pb.go b/pb/dragon_db.pb.go index 6664719a0..94226c1ad 100644 --- a/pb/dragon_db.pb.go +++ b/pb/dragon_db.pb.go @@ -20,25 +20,80 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type PlayData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Count int32 `protobuf:"varint,1,opt,name=count,proto3" json:"count"` + Cdendtime int64 `protobuf:"varint,2,opt,name=cdendtime,proto3" json:"cdendtime"` // cd 结束时间 +} + +func (x *PlayData) Reset() { + *x = PlayData{} + if protoimpl.UnsafeEnabled { + mi := &file_dragon_dragon_db_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PlayData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PlayData) ProtoMessage() {} + +func (x *PlayData) ProtoReflect() protoreflect.Message { + mi := &file_dragon_dragon_db_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PlayData.ProtoReflect.Descriptor instead. +func (*PlayData) Descriptor() ([]byte, []int) { + return file_dragon_dragon_db_proto_rawDescGZIP(), []int{0} +} + +func (x *PlayData) GetCount() int32 { + if x != nil { + return x.Count + } + return 0 +} + +func (x *PlayData) GetCdendtime() int64 { + if x != nil { + return x.Cdendtime + } + return 0 +} + type DBDragon struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID - Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` - Dragonid string `protobuf:"bytes,3,opt,name=dragonid,proto3" json:"dragonid"` // 坐骑配置id - Lv int32 `protobuf:"varint,4,opt,name=lv,proto3" json:"lv"` //等级 - Exp int32 `protobuf:"varint,5,opt,name=exp,proto3" json:"exp"` // 经验 - Property map[string]int32 `protobuf:"bytes,6,rep,name=property,proto3" json:"property" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 坐骑属性 - Play map[int32]int32 `protobuf:"bytes,7,rep,name=play,proto3" json:"play" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 坐骑训练次数 - Rtime int64 `protobuf:"varint,8,opt,name=rtime,proto3" json:"rtime"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid"` + Dragonid string `protobuf:"bytes,3,opt,name=dragonid,proto3" json:"dragonid"` // 坐骑配置id + Lv int32 `protobuf:"varint,4,opt,name=lv,proto3" json:"lv"` //等级 + Exp int32 `protobuf:"varint,5,opt,name=exp,proto3" json:"exp"` // 经验 + Property map[string]int32 `protobuf:"bytes,6,rep,name=property,proto3" json:"property" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 坐骑属性 + Play map[int32]*PlayData `protobuf:"bytes,7,rep,name=play,proto3" json:"play" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // 坐骑训练次数 + Rtime int64 `protobuf:"varint,8,opt,name=rtime,proto3" json:"rtime"` // 刷新时间 用来清除 每日训练次数 } func (x *DBDragon) Reset() { *x = DBDragon{} if protoimpl.UnsafeEnabled { - mi := &file_dragon_dragon_db_proto_msgTypes[0] + mi := &file_dragon_dragon_db_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -51,7 +106,7 @@ func (x *DBDragon) String() string { func (*DBDragon) ProtoMessage() {} func (x *DBDragon) ProtoReflect() protoreflect.Message { - mi := &file_dragon_dragon_db_proto_msgTypes[0] + mi := &file_dragon_dragon_db_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64,7 +119,7 @@ func (x *DBDragon) ProtoReflect() protoreflect.Message { // Deprecated: Use DBDragon.ProtoReflect.Descriptor instead. func (*DBDragon) Descriptor() ([]byte, []int) { - return file_dragon_dragon_db_proto_rawDescGZIP(), []int{0} + return file_dragon_dragon_db_proto_rawDescGZIP(), []int{1} } func (x *DBDragon) GetId() string { @@ -109,7 +164,7 @@ func (x *DBDragon) GetProperty() map[string]int32 { return nil } -func (x *DBDragon) GetPlay() map[int32]int32 { +func (x *DBDragon) GetPlay() map[int32]*PlayData { if x != nil { return x.Play } @@ -127,7 +182,11 @@ var File_dragon_dragon_db_proto protoreflect.FileDescriptor var file_dragon_dragon_db_proto_rawDesc = []byte{ 0x0a, 0x16, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x2f, 0x64, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x5f, - 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd4, 0x02, 0x0a, 0x08, 0x44, 0x42, 0x44, + 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3e, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, + 0x44, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x64, + 0x65, 0x6e, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x63, + 0x64, 0x65, 0x6e, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xdf, 0x02, 0x0a, 0x08, 0x44, 0x42, 0x44, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x72, 0x61, 0x67, 0x6f, @@ -145,11 +204,12 @@ var file_dragon_dragon_db_proto_rawDesc = []byte{ 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x45, 0x6e, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, - 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, + 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -164,20 +224,22 @@ func file_dragon_dragon_db_proto_rawDescGZIP() []byte { return file_dragon_dragon_db_proto_rawDescData } -var file_dragon_dragon_db_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_dragon_dragon_db_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_dragon_dragon_db_proto_goTypes = []interface{}{ - (*DBDragon)(nil), // 0: DBDragon - nil, // 1: DBDragon.PropertyEntry - nil, // 2: DBDragon.PlayEntry + (*PlayData)(nil), // 0: PlayData + (*DBDragon)(nil), // 1: DBDragon + nil, // 2: DBDragon.PropertyEntry + nil, // 3: DBDragon.PlayEntry } var file_dragon_dragon_db_proto_depIdxs = []int32{ - 1, // 0: DBDragon.property:type_name -> DBDragon.PropertyEntry - 2, // 1: DBDragon.play:type_name -> DBDragon.PlayEntry - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] 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 + 2, // 0: DBDragon.property:type_name -> DBDragon.PropertyEntry + 3, // 1: DBDragon.play:type_name -> DBDragon.PlayEntry + 0, // 2: DBDragon.PlayEntry.value:type_name -> PlayData + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_dragon_dragon_db_proto_init() } @@ -187,6 +249,18 @@ func file_dragon_dragon_db_proto_init() { } if !protoimpl.UnsafeEnabled { file_dragon_dragon_db_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PlayData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_dragon_dragon_db_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DBDragon); i { case 0: return &v.state @@ -205,7 +279,7 @@ func file_dragon_dragon_db_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dragon_dragon_db_proto_rawDesc, NumEnums: 0, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, diff --git a/pb/errorcode.pb.go b/pb/errorcode.pb.go index 699a457ee..ee4b4bd19 100644 --- a/pb/errorcode.pb.go +++ b/pb/errorcode.pb.go @@ -406,6 +406,8 @@ const ( ErrorCode_ParkourInviteOverdue ErrorCode = 4402 //邀请已过期 ErrorCode_ParkourInviteNoPermissions ErrorCode = 4403 //无权邀请 ErrorCode_ParkourTargetTeamed ErrorCode = 4404 //目标已组队 + ErrorCode_DragonTrainCding ErrorCode = 4405 // 训练cd 中 + ErrorCode_DragonTrainMaxCount ErrorCode = 4406 // 当日训练次数上限 //reputation ErrorCode_ReputationTalentFull ErrorCode = 4501 //天赋满级 ErrorCode_ReputationNoPreNodeLv ErrorCode = 4502 //前置节点等级不满足 @@ -792,6 +794,8 @@ var ( 4402: "ParkourInviteOverdue", 4403: "ParkourInviteNoPermissions", 4404: "ParkourTargetTeamed", + 4405: "DragonTrainCding", + 4406: "DragonTrainMaxCount", 4501: "ReputationTalentFull", 4502: "ReputationNoPreNodeLv", 4601: "OldtimesReceived", @@ -1169,6 +1173,8 @@ var ( "ParkourInviteOverdue": 4402, "ParkourInviteNoPermissions": 4403, "ParkourTargetTeamed": 4404, + "DragonTrainCding": 4405, + "DragonTrainMaxCount": 4406, "ReputationTalentFull": 4501, "ReputationNoPreNodeLv": 4502, "OldtimesReceived": 4601, @@ -1232,7 +1238,7 @@ var File_errorcode_proto protoreflect.FileDescriptor var file_errorcode_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2a, 0xc2, 0x45, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x6f, 0x2a, 0xf3, 0x45, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x47, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x45, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, @@ -1739,57 +1745,60 @@ var file_errorcode_proto_rawDesc = []byte{ 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4e, 0x6f, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0xb3, 0x22, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x6b, 0x6f, 0x75, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x65, 0x61, - 0x6d, 0x65, 0x64, 0x10, 0xb4, 0x22, 0x12, 0x19, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x95, - 0x23, 0x12, 0x1a, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, - 0x6f, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x76, 0x10, 0x96, 0x23, 0x12, 0x15, 0x0a, - 0x10, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x64, 0x10, 0xf9, 0x23, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xfa, 0x23, 0x12, 0x16, 0x0a, 0x11, 0x4f, - 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x76, 0x65, 0x72, - 0x10, 0xfb, 0x23, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x50, - 0x72, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, - 0x64, 0x10, 0xfc, 0x23, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x4e, 0x6f, 0x41, 0x6c, 0x6c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xfd, 0x23, - 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x61, 0x73, 0x73, 0x6f, 0x6e, 0x48, 0x65, 0x72, 0x6f, 0x4e, 0x75, - 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xdd, 0x24, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x61, 0x73, 0x73, 0x6f, 0x6e, 0x48, 0x65, 0x72, 0x6f, 0x55, 0x6e, 0x61, 0x76, 0x61, - 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10, 0xde, 0x24, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, 0x73, - 0x73, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72, 0x10, - 0xdf, 0x24, 0x12, 0x13, 0x0a, 0x0e, 0x57, 0x61, 0x72, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, 0x6f, - 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xc1, 0x25, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x74, 0x6f, 0x6e, 0x65, - 0x68, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x10, 0xa5, 0x26, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x74, - 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x55, 0x66, 0x66, 0x10, 0xa6, 0x26, 0x12, 0x18, 0x0a, - 0x13, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x61, - 0x6c, 0x45, 0x72, 0x72, 0x10, 0xa7, 0x26, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x6e, 0x65, - 0x68, 0x65, 0x6e, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6f, 0x6d, 0x46, 0x61, - 0x69, 0x6c, 0x65, 0x64, 0x10, 0xa8, 0x26, 0x12, 0x1d, 0x0a, 0x18, 0x53, 0x74, 0x6f, 0x6e, 0x65, - 0x68, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x10, 0xa9, 0x26, 0x12, 0x1d, 0x0a, 0x18, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, - 0x65, 0x6e, 0x67, 0x65, 0x47, 0x6f, 0x74, 0x6f, 0x52, 0x6f, 0x6f, 0x6d, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x10, 0xaa, 0x26, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, - 0x6e, 0x67, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x78, 0x46, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x10, 0xab, 0x26, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, - 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0xac, 0x26, - 0x12, 0x17, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x53, 0x74, - 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x10, 0xad, 0x26, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x74, 0x6f, - 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x79, 0x10, 0xae, - 0x26, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x48, - 0x65, 0x72, 0x6f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0xaf, 0x26, 0x12, 0x1b, - 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x62, 0x75, 0x66, 0x66, - 0x52, 0x65, 0x73, 0x65, 0x74, 0x45, 0x72, 0x72, 0x10, 0xb0, 0x26, 0x12, 0x11, 0x0a, 0x0c, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x10, 0x89, 0x27, 0x12, 0x15, - 0x0a, 0x10, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x55, 0x6e, 0x4f, 0x70, 0x65, 0x6e, - 0x65, 0x64, 0x10, 0x8a, 0x27, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, - 0x79, 0x52, 0x65, 0x70, 0x61, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x8b, 0x27, 0x12, - 0x16, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x49, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x10, 0x8c, 0x27, 0x12, 0x14, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x8d, 0x27, 0x12, 0x17, 0x0a, - 0x12, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x61, 0x6e, 0x74, 0x52, 0x65, 0x77, - 0x61, 0x72, 0x64, 0x10, 0x8e, 0x27, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6d, 0x65, 0x64, 0x10, 0xb4, 0x22, 0x12, 0x15, 0x0a, 0x10, 0x44, 0x72, 0x61, 0x67, 0x6f, 0x6e, + 0x54, 0x72, 0x61, 0x69, 0x6e, 0x43, 0x64, 0x69, 0x6e, 0x67, 0x10, 0xb5, 0x22, 0x12, 0x18, 0x0a, + 0x13, 0x44, 0x72, 0x61, 0x67, 0x6f, 0x6e, 0x54, 0x72, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x78, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xb6, 0x22, 0x12, 0x19, 0x0a, 0x14, 0x52, 0x65, 0x70, 0x75, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, + 0x95, 0x23, 0x12, 0x1a, 0x0a, 0x15, 0x52, 0x65, 0x70, 0x75, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4e, 0x6f, 0x50, 0x72, 0x65, 0x4e, 0x6f, 0x64, 0x65, 0x4c, 0x76, 0x10, 0x96, 0x23, 0x12, 0x15, + 0x0a, 0x10, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, + 0x65, 0x64, 0x10, 0xf9, 0x23, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xfa, 0x23, 0x12, 0x16, 0x0a, 0x11, + 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4f, 0x76, 0x65, + 0x72, 0x10, 0xfb, 0x23, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x50, 0x72, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, + 0x65, 0x64, 0x10, 0xfc, 0x23, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x6c, 0x64, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x4e, 0x6f, 0x41, 0x6c, 0x6c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0xfd, + 0x23, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x61, 0x73, 0x73, 0x6f, 0x6e, 0x48, 0x65, 0x72, 0x6f, 0x4e, + 0x75, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xdd, 0x24, 0x12, 0x1a, + 0x0a, 0x15, 0x50, 0x61, 0x73, 0x73, 0x6f, 0x6e, 0x48, 0x65, 0x72, 0x6f, 0x55, 0x6e, 0x61, 0x76, + 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10, 0xde, 0x24, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x61, + 0x73, 0x73, 0x6f, 0x6e, 0x53, 0x65, 0x61, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x72, 0x72, + 0x10, 0xdf, 0x24, 0x12, 0x13, 0x0a, 0x0e, 0x57, 0x61, 0x72, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x4e, + 0x6f, 0x4f, 0x70, 0x65, 0x6e, 0x10, 0xc1, 0x25, 0x12, 0x21, 0x0a, 0x1c, 0x53, 0x74, 0x6f, 0x6e, + 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x10, 0xa5, 0x26, 0x12, 0x21, 0x0a, 0x1c, 0x53, + 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x42, 0x55, 0x66, 0x66, 0x10, 0xa6, 0x26, 0x12, 0x18, + 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x50, 0x6f, 0x72, 0x74, + 0x61, 0x6c, 0x45, 0x72, 0x72, 0x10, 0xa7, 0x26, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x6e, + 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6f, 0x6d, 0x46, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0xa8, 0x26, 0x12, 0x1d, 0x0a, 0x18, 0x53, 0x74, 0x6f, 0x6e, + 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x26, 0x12, 0x1d, 0x0a, 0x18, 0x53, 0x74, 0x6f, 0x6e, 0x65, + 0x68, 0x65, 0x6e, 0x67, 0x65, 0x47, 0x6f, 0x74, 0x6f, 0x52, 0x6f, 0x6f, 0x6d, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x10, 0xaa, 0x26, 0x12, 0x1e, 0x0a, 0x19, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, + 0x65, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x42, 0x6f, 0x78, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x10, 0xab, 0x26, 0x12, 0x19, 0x0a, 0x14, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, + 0x65, 0x6e, 0x67, 0x65, 0x4e, 0x6f, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x10, 0xac, + 0x26, 0x12, 0x17, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x4d, 0x61, 0x78, 0x10, 0xad, 0x26, 0x12, 0x16, 0x0a, 0x11, 0x53, 0x74, + 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x43, 0x61, 0x6e, 0x74, 0x42, 0x75, 0x79, 0x10, + 0xae, 0x26, 0x12, 0x1b, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, + 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0xaf, 0x26, 0x12, + 0x1b, 0x0a, 0x16, 0x53, 0x74, 0x6f, 0x6e, 0x65, 0x68, 0x65, 0x6e, 0x67, 0x65, 0x62, 0x75, 0x66, + 0x66, 0x52, 0x65, 0x73, 0x65, 0x74, 0x45, 0x72, 0x72, 0x10, 0xb0, 0x26, 0x12, 0x11, 0x0a, 0x0c, + 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4f, 0x76, 0x65, 0x72, 0x10, 0x89, 0x27, 0x12, + 0x15, 0x0a, 0x10, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x55, 0x6e, 0x4f, 0x70, 0x65, + 0x6e, 0x65, 0x64, 0x10, 0x8a, 0x27, 0x12, 0x18, 0x0a, 0x13, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x70, 0x61, 0x74, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0x8b, 0x27, + 0x12, 0x16, 0x0a, 0x11, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x4e, 0x6f, 0x74, 0x49, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x10, 0x8c, 0x27, 0x12, 0x14, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x8d, 0x27, 0x12, 0x17, + 0x0a, 0x12, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x43, 0x61, 0x6e, 0x74, 0x52, 0x65, + 0x77, 0x61, 0x72, 0x64, 0x10, 0x8e, 0x27, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (