diff --git a/modules/hero/api_savecard.go b/modules/hero/api_savecard.go index 18e0ba203..f937bbc8e 100644 --- a/modules/hero/api_savecard.go +++ b/modules/hero/api_savecard.go @@ -18,9 +18,10 @@ func (this *apiComp) SaveCardCheck(session comm.IUserSession, req *pb.HeroSaveCa func (this *apiComp) SaveCard(session comm.IUserSession, req *pb.HeroSaveCardReq) (errdata *pb.ErrorData) { var ( - err error - result *pb.DBSelectDraw - update map[string]interface{} + err error + result *pb.DBSelectDraw + update map[string]interface{} + heroRecord *pb.DBHeroRecord ) update = make(map[string]interface{}) if result, err = this.module.modelSelect.GetDrawSelectData(session.GetUserId()); err != nil { @@ -31,13 +32,22 @@ func (this *apiComp) SaveCard(session comm.IUserSession, req *pb.HeroSaveCardReq } return } - if result.Complete { + if heroRecord, err = this.module.modelRecord.GetHeroRecord(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + if heroRecord.Newcomplete { errdata = &pb.ErrorData{ Code: pb.ErrorCode_HeroSelectDrawComplete, Title: pb.ErrorCode_HeroSelectDrawComplete.ToString(), } return } + if req.Index == 1 { result.Rst1 = result.Cur update["rst1"] = result.Rst1 diff --git a/modules/hero/api_selectcard.go b/modules/hero/api_selectcard.go index b47e7b3db..91f11c3d4 100644 --- a/modules/hero/api_selectcard.go +++ b/modules/hero/api_selectcard.go @@ -19,10 +19,11 @@ func (this *apiComp) SelectCardCheck(session comm.IUserSession, req *pb.HeroSele func (this *apiComp) SelectCard(session comm.IUserSession, req *pb.HeroSelectCardReq) (errdata *pb.ErrorData) { var ( - err error - result *pb.DBSelectDraw - szAtno []*pb.AtnoData - curSzCard []string + err error + result *pb.DBSelectDraw + szAtno []*pb.AtnoData + curSzCard []string + heroRecord *pb.DBHeroRecord ) if result, err = this.module.modelSelect.GetDrawSelectData(session.GetUserId()); err != nil { @@ -33,13 +34,22 @@ func (this *apiComp) SelectCard(session comm.IUserSession, req *pb.HeroSelectCar } return } - if result.Complete { + if heroRecord, err = this.module.modelRecord.GetHeroRecord(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + if heroRecord.Newcomplete { errdata = &pb.ErrorData{ Code: pb.ErrorCode_HeroSelectDrawComplete, Title: pb.ErrorCode_HeroSelectDrawComplete.ToString(), } return } + if req.Index == 0 { curSzCard = result.Cur } else if req.Index == 1 { @@ -80,16 +90,25 @@ func (this *apiComp) SelectCard(session comm.IUserSession, req *pb.HeroSelectCar szAtno = append(szAtno, &pb.AtnoData{Atno: atno}) } } - - result.Complete = true + if err = this.module.modelRecord.ChangeHeroRecord(session.GetUserId(), map[string]interface{}{ + "newcomplete": heroRecord.Newcomplete, + }); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.String(), + Message: err.Error(), + } + return + } + //result.Complete = true result.Cur = []string{} // 清空数据 result.Rst1 = []string{} // 清空数据 result.Rst2 = []string{} // 清空数据 if err = this.module.modelSelect.ChangeHeroSelectData(session.GetUserId(), map[string]interface{}{ - "complete": result.Complete, - "cur": result.Cur, - "rst1": result.Rst1, - "rst2": result.Rst2, + //"complete": result.Complete, + "cur": result.Cur, + "rst1": result.Rst1, + "rst2": result.Rst2, }); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, diff --git a/modules/hero/api_selectdraw.go b/modules/hero/api_selectdraw.go index 01f1c9aa7..8fd271856 100644 --- a/modules/hero/api_selectdraw.go +++ b/modules/hero/api_selectdraw.go @@ -13,9 +13,10 @@ func (this *apiComp) SelectDrawCheck(session comm.IUserSession, req *pb.HeroSele func (this *apiComp) SelectDraw(session comm.IUserSession, req *pb.HeroSelectDrawReq) (errdata *pb.ErrorData) { var ( - err error - result *pb.DBSelectDraw - drawType int32 + err error + result *pb.DBSelectDraw + drawType int32 + heroRecord *pb.DBHeroRecord ) if result, err = this.module.modelSelect.GetDrawSelectData(session.GetUserId()); err != nil { @@ -26,7 +27,15 @@ func (this *apiComp) SelectDraw(session comm.IUserSession, req *pb.HeroSelectDra } return } - if result.Complete { + if heroRecord, err = this.module.modelRecord.GetHeroRecord(session.GetUserId()); err != nil { + errdata = &pb.ErrorData{ + Code: pb.ErrorCode_DBError, + Title: pb.ErrorCode_DBError.ToString(), + Message: err.Error(), + } + return + } + if heroRecord.Newcomplete { errdata = &pb.ErrorData{ Code: pb.ErrorCode_HeroSelectDrawComplete, Title: pb.ErrorCode_HeroSelectDrawComplete.ToString(), @@ -41,11 +50,11 @@ func (this *apiComp) SelectDraw(session comm.IUserSession, req *pb.HeroSelectDra star4Count int32 // 10连抽4星数量 star5Count int32 // 10连抽5星数量 cfgGlobal *cfg.GameGlobalData // 全局配置 - heroRecord *pb.DBHeroRecord - strPool []string // 10连跨多个卡池情况 - update map[string]interface{} - drawConf *cfg.GameDrawPoolData + strPool []string // 10连跨多个卡池情况 + update map[string]interface{} + drawConf *cfg.GameDrawPoolData + dCount int32 IsBaodiPool bool // 是否是保底卡池 appointmap map[int32]string // 指定次数抽卡到指定卡池 @@ -55,14 +64,6 @@ func (this *apiComp) SelectDraw(session comm.IUserSession, req *pb.HeroSelectDra update = make(map[string]interface{}) appointmap = make(map[int32]string) szCards = make([]string, 0) - if heroRecord, err = this.module.modelRecord.GetHeroRecord(session.GetUserId()); err != nil { - errdata = &pb.ErrorData{ - Code: pb.ErrorCode_DBError, - Title: pb.ErrorCode_DBError.ToString(), - Message: err.Error(), - } - return - } // 准备数据 ///////////////////////////////////// @@ -87,24 +88,23 @@ func (this *apiComp) SelectDraw(session comm.IUserSession, req *pb.HeroSelectDra return } - drawCount = heroRecord.Count[drawType] // 获取当前阵容抽卡次数 - if true { // 普通卡池抽卡 + if true { // 普通卡池抽卡 ////// 获取消耗 if costRes, errdata = this.module.modelHero.CheckDrawCardRes(session, drawConf, 0, drawCount); errdata != nil { return } - + dCount = heroRecord.Count[drawType] // 获取当前阵容抽卡次数 // 校验是否达到保底卡池 - if drawConf.Protect >= drawCount { + if drawConf.Protect >= dCount { IsBaodiPool = true } ///// 获取消耗 end for i := 1; i <= int(drawCount); i++ { // 一张一张的抽 heroRecord.Race[drawType] += 1 - drawCount++ + dCount++ heroRecord.Baodi5[drawType]++ heroRecord.Baodi4[drawType]++ - if v, ok := appointmap[drawCount]; ok { // 优先校验是否是指定抽 + if v, ok := appointmap[dCount]; ok { // 优先校验是否是指定抽 strPool = append(strPool, v) //找到了 continue } @@ -165,23 +165,20 @@ func (this *apiComp) SelectDraw(session comm.IUserSession, req *pb.HeroSelectDra continue } - if drawCount == 10 { - if star4Count >= cfgGlobal.Draw10Star4Max { // 10连抽最大4星数量 - if IsBaodiPool { - strPool[len(strPool)-1] = drawConf.P3pool - } else { - strPool[len(strPool)-1] = drawConf.N3pool - } - } - if star5Count >= cfgGlobal.Draw10Star5Max { // 10连抽最大5星数量 - if IsBaodiPool { - strPool[len(strPool)-1] = drawConf.P3pool - } else { - strPool[len(strPool)-1] = drawConf.N3pool - } + if star4Count >= cfgGlobal.Draw10Star4Max { // 10连抽最大4星数量 + if IsBaodiPool { + strPool[len(strPool)-1] = drawConf.P3pool + } else { + strPool[len(strPool)-1] = drawConf.N3pool + } + } + if star5Count >= cfgGlobal.Draw10Star5Max { // 10连抽最大5星数量 + if IsBaodiPool { + strPool[len(strPool)-1] = drawConf.P3pool + } else { + strPool[len(strPool)-1] = drawConf.N3pool } } - } } // 通过卡池获得最终的英雄 @@ -202,11 +199,11 @@ func (this *apiComp) SelectDraw(session comm.IUserSession, req *pb.HeroSelectDra if errdata = this.module.ConsumeRes(session, costRes, true); errdata != nil { return } - heroRecord.Totalcount += drawCount - heroRecord.Daycount += drawCount + heroRecord.Totalcount += dCount + heroRecord.Daycount += dCount - heroRecord.Count[drawType] = drawCount - update["drawcount"] = drawCount + heroRecord.Count[drawType] = dCount + update["drawcount"] = dCount update["count"] = heroRecord.Count update["totalcount"] = heroRecord.Totalcount update["race"] = heroRecord.Race diff --git a/pb/hero_db.pb.go b/pb/hero_db.pb.go index 5ba10824f..d0739268e 100644 --- a/pb/hero_db.pb.go +++ b/pb/hero_db.pb.go @@ -361,6 +361,7 @@ type DBHeroRecord struct { Wish map[string]int64 `protobuf:"bytes,18,rep,name=wish,proto3" json:"wish" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 许愿招募 key:英雄id value 冷却结束时间 WishHero string `protobuf:"bytes,19,opt,name=wishHero,proto3" json:"wishHero"` // 当前许愿英雄 (默认值为0 需客户端 查表读取默认字段) Peachreward bool `protobuf:"varint,20,opt,name=peachreward,proto3" json:"peachreward"` // 圣桃结实已领取奖励 + Newcomplete bool `protobuf:"varint,21,opt,name=newcomplete,proto3" json:"newcomplete"` // 完成新手招募招募 } func (x *DBHeroRecord) Reset() { @@ -521,6 +522,13 @@ func (x *DBHeroRecord) GetPeachreward() bool { return false } +func (x *DBHeroRecord) GetNewcomplete() bool { + if x != nil { + return x.Newcomplete + } + return false +} + // 英雄天赋系统 type DBHeroTalent struct { state protoimpl.MessageState @@ -599,13 +607,12 @@ type DBSelectDraw struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID 主键id - Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID - Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count"` // 当前已经尝试的次数 - Cur []string `protobuf:"bytes,4,rep,name=cur,proto3" json:"cur"` // 当前结果 - Rst1 []string `protobuf:"bytes,5,rep,name=rst1,proto3" json:"rst1"` // 结果1 - Rst2 []string `protobuf:"bytes,6,rep,name=rst2,proto3" json:"rst2"` // 结果2 - Complete bool `protobuf:"varint,7,opt,name=complete,proto3" json:"complete"` // 完成招募 + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID 主键id + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID + Count int32 `protobuf:"varint,3,opt,name=count,proto3" json:"count"` // 当前已经尝试的次数 + Cur []string `protobuf:"bytes,4,rep,name=cur,proto3" json:"cur"` // 当前结果 + Rst1 []string `protobuf:"bytes,5,rep,name=rst1,proto3" json:"rst1"` // 结果1 + Rst2 []string `protobuf:"bytes,6,rep,name=rst2,proto3" json:"rst2"` // 结果2 } func (x *DBSelectDraw) Reset() { @@ -682,13 +689,6 @@ func (x *DBSelectDraw) GetRst2() []string { return nil } -func (x *DBSelectDraw) GetComplete() bool { - if x != nil { - return x.Complete - } - return false -} - var File_hero_hero_db_proto protoreflect.FileDescriptor var file_hero_hero_db_proto_rawDesc = []byte{ @@ -786,7 +786,7 @@ var file_hero_hero_db_proto_rawDesc = []byte{ 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xd6, 0x09, 0x0a, 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, + 0x02, 0x38, 0x01, 0x22, 0xf8, 0x09, 0x0a, 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 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, 0x14, 0x0a, 0x05, 0x6d, 0x74, 0x69, 0x6d, 0x65, 0x18, @@ -830,66 +830,66 @@ var file_hero_hero_db_proto_rawDesc = []byte{ 0x77, 0x69, 0x73, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x69, 0x73, 0x68, 0x48, 0x65, 0x72, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x61, 0x63, 0x68, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x70, - 0x65, 0x61, 0x63, 0x68, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x3c, 0x0a, 0x0e, 0x43, 0x6f, - 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x65, 0x61, 0x63, 0x68, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e, 0x65, + 0x77, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x6e, 0x65, 0x77, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x1a, 0x3c, 0x0a, 0x0e, + 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 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, 0x3c, 0x0a, 0x0e, 0x53, 0x74, + 0x61, 0x72, 0x35, 0x48, 0x65, 0x72, 0x6f, 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, 0x3c, 0x0a, 0x0e, 0x53, 0x74, 0x61, 0x72, - 0x35, 0x48, 0x65, 0x72, 0x6f, 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, 0x52, 0x61, 0x63, 0x65, 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, 0x1a, - 0x39, 0x0a, 0x0b, 0x42, 0x61, 0x6f, 0x64, 0x69, 0x34, 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, 0x1a, 0x39, 0x0a, 0x0b, 0x42, 0x61, - 0x6f, 0x64, 0x69, 0x35, 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, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, 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, 0x1a, - 0x38, 0x0a, 0x0a, 0x50, 0x65, 0x61, 0x63, 0x68, 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, 0x08, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 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, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x57, 0x69, 0x73, 0x68, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x52, 0x61, 0x63, 0x65, + 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, 0x1a, 0x39, 0x0a, 0x0b, 0x42, 0x61, 0x6f, 0x64, 0x69, 0x34, 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, - 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb6, 0x01, 0x0a, - 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 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, - 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x61, 0x6c, 0x65, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, - 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x06, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x54, 0x61, - 0x6c, 0x65, 0x6e, 0x74, 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, 0x22, 0x9c, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x53, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x44, 0x72, 0x61, 0x77, 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, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x63, 0x75, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63, 0x75, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x74, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, - 0x72, 0x73, 0x74, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x74, 0x32, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x04, 0x72, 0x73, 0x74, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, - 0x6c, 0x65, 0x74, 0x65, 0x2a, 0x2f, 0x0a, 0x08, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x69, 0x6c, 0x10, - 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x4b, 0x6f, 0x6e, - 0x67, 0x46, 0x75, 0x10, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, + 0x42, 0x61, 0x6f, 0x64, 0x69, 0x35, 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, 0x1a, 0x38, 0x0a, 0x0a, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 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, 0x1a, 0x38, 0x0a, 0x0a, 0x50, 0x65, 0x61, 0x63, 0x68, 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, 0x08, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x38, 0x0a, 0x0a, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 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, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x37, 0x0a, 0x09, 0x57, 0x69, 0x73, 0x68, 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, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb6, + 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 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, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x06, 0x74, 0x61, 0x6c, + 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x44, 0x42, 0x48, 0x65, + 0x72, 0x6f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x1a, 0x39, 0x0a, 0x0b, + 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 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, 0x22, 0x80, 0x01, 0x0a, 0x0c, 0x44, 0x42, 0x53, 0x65, + 0x6c, 0x65, 0x63, 0x74, 0x44, 0x72, 0x61, 0x77, 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, 0x14, 0x0a, 0x05, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x10, 0x0a, 0x03, 0x63, 0x75, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x63, + 0x75, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x74, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x04, 0x72, 0x73, 0x74, 0x31, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x73, 0x74, 0x32, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x72, 0x73, 0x74, 0x32, 0x2a, 0x2f, 0x0a, 0x08, 0x48, 0x65, + 0x72, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x65, 0x72, 0x6f, 0x54, 0x79, + 0x70, 0x65, 0x4e, 0x69, 0x6c, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x65, 0x72, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x4b, 0x6f, 0x6e, 0x67, 0x46, 0x75, 0x10, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, + 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (