diff --git a/modules/dragon/api_lvitem.go b/modules/dragon/api_lvitem.go index df771d678..072a2a037 100644 --- a/modules/dragon/api_lvitem.go +++ b/modules/dragon/api_lvitem.go @@ -8,7 +8,7 @@ import ( //参数校验 func (this *apiComp) LvItemCheck(session comm.IUserSession, req *pb.DragonLvItemReq) (errdata *pb.ErrorData) { - if len(req.Oid) == 0 || req.Attribute == "" { + if len(req.Oid) == 0 { errdata = &pb.ErrorData{ Code: pb.ErrorCode_ReqParameterError, Title: pb.ErrorCode_ReqParameterError.ToString(), diff --git a/pb/equipment_db.pb.go b/pb/equipment_db.pb.go index 6de4db178..1553c0a31 100644 --- a/pb/equipment_db.pb.go +++ b/pb/equipment_db.pb.go @@ -26,13 +26,13 @@ type EquipmentAttributeEntry struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id"` //属性词条主键id 唯一 - Libraryid int32 `protobuf:"varint,2,opt,name=libraryid,proto3" json:"libraryid"` //属性词条id 非唯一 - AttrName int32 `protobuf:"varint,3,opt,name=AttrName,proto3" json:"AttrName"` //属性名 - Lv int32 `protobuf:"varint,4,opt,name=Lv,proto3" json:"Lv"` //属性等级 - Value int32 `protobuf:"varint,5,opt,name=Value,proto3" json:"Value"` //属性值 - BaseValue int32 `protobuf:"varint,6,opt,name=BaseValue,proto3" json:"BaseValue"` //基础属性 - EnchValue int32 `protobuf:"varint,7,opt,name=EnchValue,proto3" json:"EnchValue"` //附魔属性 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id"` //属性词条主键id 唯一 + Libraryid int32 `protobuf:"varint,2,opt,name=libraryid,proto3" json:"libraryid"` //属性词条id 非唯一 + AttrName string `protobuf:"bytes,3,opt,name=AttrName,proto3" json:"AttrName"` //属性名 + Lv int32 `protobuf:"varint,4,opt,name=Lv,proto3" json:"Lv"` //属性等级 + Value int32 `protobuf:"varint,5,opt,name=Value,proto3" json:"Value"` //属性值 + BaseValue int32 `protobuf:"varint,6,opt,name=BaseValue,proto3" json:"BaseValue"` //基础属性 + EnchValue int32 `protobuf:"varint,7,opt,name=EnchValue,proto3" json:"EnchValue"` //附魔属性 } func (x *EquipmentAttributeEntry) Reset() { @@ -81,11 +81,11 @@ func (x *EquipmentAttributeEntry) GetLibraryid() int32 { return 0 } -func (x *EquipmentAttributeEntry) GetAttrName() int32 { +func (x *EquipmentAttributeEntry) GetAttrName() string { if x != nil { return x.AttrName } - return 0 + return "" } func (x *EquipmentAttributeEntry) GetLv() int32 { @@ -122,11 +122,11 @@ type EquipmentSkillEntry struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id"` //属性词条主键id 唯一 - Libraryid int32 `protobuf:"varint,2,opt,name=libraryid,proto3" json:"libraryid"` //属性词条id 非唯一 - AttrName int32 `protobuf:"varint,3,opt,name=AttrName,proto3" json:"AttrName"` //属性名 - SkillId int32 `protobuf:"varint,4,opt,name=SkillId,proto3" json:"SkillId"` //技能id - Lv int32 `protobuf:"varint,5,opt,name=Lv,proto3" json:"Lv"` //属性等级 + Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id"` //属性词条主键id 唯一 + Libraryid int32 `protobuf:"varint,2,opt,name=libraryid,proto3" json:"libraryid"` //属性词条id 非唯一 + AttrName string `protobuf:"bytes,3,opt,name=AttrName,proto3" json:"AttrName"` //属性名 + SkillId int32 `protobuf:"varint,4,opt,name=SkillId,proto3" json:"SkillId"` //技能id + Lv int32 `protobuf:"varint,5,opt,name=Lv,proto3" json:"Lv"` //属性等级 } func (x *EquipmentSkillEntry) Reset() { @@ -175,11 +175,11 @@ func (x *EquipmentSkillEntry) GetLibraryid() int32 { return 0 } -func (x *EquipmentSkillEntry) GetAttrName() int32 { +func (x *EquipmentSkillEntry) GetAttrName() string { if x != nil { return x.AttrName } - return 0 + return "" } func (x *EquipmentSkillEntry) GetSkillId() int32 { @@ -430,7 +430,7 @@ var file_equipment_equipment_db_proto_rawDesc = []byte{ 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x74, 0x74, 0x72, - 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x74, 0x74, 0x72, + 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x41, 0x74, 0x74, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4c, 0x76, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x61, @@ -442,7 +442,7 @@ var file_equipment_equipment_db_proto_rawDesc = []byte{ 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6c, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, - 0x41, 0x74, 0x74, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x41, 0x74, 0x74, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x41, 0x74, 0x74, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4c, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, diff --git a/pb/hero_db.pb.go b/pb/hero_db.pb.go index 2ab7b6b21..fe4ed13d5 100644 --- a/pb/hero_db.pb.go +++ b/pb/hero_db.pb.go @@ -73,33 +73,33 @@ type DBHero struct { 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"` - HeroID string `protobuf:"bytes,3,opt,name=heroID,proto3" json:"heroID" bson:"heroID"` // 英雄的配置表ID - Star int32 `protobuf:"varint,4,opt,name=star,proto3" json:"star"` // 英雄星级 - Lv int32 `protobuf:"varint,5,opt,name=lv,proto3" json:"lv"` // 英雄等级 - Exp int32 `protobuf:"varint,6,opt,name=exp,proto3" json:"exp"` // 英雄经验 - JuexingLv int32 `protobuf:"varint,7,opt,name=juexingLv,proto3" json:"juexingLv" bson:"juexingLv"` //觉醒等级 - CaptainSkill int32 `protobuf:"varint,8,opt,name=captainSkill,proto3" json:"captainSkill" bson:"captainSkill"` //队长技能 - NormalSkill []*SkillData `protobuf:"bytes,9,rep,name=normalSkill,proto3" json:"normalSkill" bson:"normalSkill"` //普通技能 - Property map[int32]int32 `protobuf:"bytes,10,rep,name=property,proto3" json:"property" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 属性相关 - AddProperty map[int32]int32 `protobuf:"bytes,11,rep,name=addProperty,proto3" json:"addProperty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"addProperty"` //附加属性相关 - CardType int32 `protobuf:"varint,12,opt,name=cardType,proto3" json:"cardType" bson:"cardType"` //卡片类型(升星卡、经验卡、技能升级卡) - CurSkin int32 `protobuf:"varint,13,opt,name=curSkin,proto3" json:"curSkin" bson:"curSkin"` //当前装备的皮肤ID - Skins []int32 `protobuf:"varint,14,rep,packed,name=skins,proto3" json:"skins"` // 所有皮肤ID - Block bool `protobuf:"varint,15,opt,name=block,proto3" json:"block"` // 锁定 - EquipID []string `protobuf:"bytes,16,rep,name=equipID,proto3" json:"equipID" bson:"equipID"` //装备 objID - JuexProperty map[int32]int32 `protobuf:"bytes,17,rep,name=juexProperty,proto3" json:"juexProperty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"juexProperty"` ////hp - Status HeroType `protobuf:"varint,18,opt,name=status,proto3,enum=HeroType" json:"status" bson:"status"` //状态 (1 练功) - Suits []*DB_EquipmentSuit `protobuf:"bytes,19,rep,name=suits,proto3" json:"suits" bson:"suits"` //套装列表 - TalentProperty map[int32]int32 `protobuf:"bytes,20,rep,name=talentProperty,proto3" json:"talentProperty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"talentProperty"` // // 天赋属性 - EquipSkill []*SkillData `protobuf:"bytes,21,rep,name=equipSkill,proto3" json:"equipSkill" bson:"equipSkill"` //装备技能 - HoroscopeProperty map[int32]int32 `protobuf:"bytes,22,rep,name=horoscopeProperty,proto3" json:"horoscopeProperty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"horoscopeProperty"` ////星座属性加成 - Fulllvenr int32 `protobuf:"varint,23,opt,name=fulllvenr,proto3" json:"fulllvenr" bson:"fulllvenr"` ////满级登记分组 武馆使用 - KongfuUid string `protobuf:"bytes,24,opt,name=kongfuUid,proto3" json:"kongfuUid"` //@go_tags(`bson:"kongfuUid"`)// 英雄在谁家练功 - Fetters map[int32]int32 `protobuf:"bytes,25,rep,name=fetters,proto3" json:"fetters" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"fetters"` ////羁绊属性加成 - SameCount int32 `protobuf:"varint,26,opt,name=sameCount,proto3" json:"sameCount" bson:"sameCount"` ////叠加数 - Ispasson bool `protobuf:"varint,27,opt,name=ispasson,proto3" json:"ispasson"` //是否是传功学员 - Awakenskill []*SkillData `protobuf:"bytes,28,rep,name=awakenskill,proto3" json:"awakenskill"` // 觉醒技能 - Talentskill []*SkillData `protobuf:"bytes,29,rep,name=talentskill,proto3" json:"talentskill"` // 回响技能 + HeroID string `protobuf:"bytes,3,opt,name=heroID,proto3" json:"heroID" bson:"heroID"` // 英雄的配置表ID + Star int32 `protobuf:"varint,4,opt,name=star,proto3" json:"star"` // 英雄星级 + Lv int32 `protobuf:"varint,5,opt,name=lv,proto3" json:"lv"` // 英雄等级 + Exp int32 `protobuf:"varint,6,opt,name=exp,proto3" json:"exp"` // 英雄经验 + JuexingLv int32 `protobuf:"varint,7,opt,name=juexingLv,proto3" json:"juexingLv" bson:"juexingLv"` //觉醒等级 + CaptainSkill int32 `protobuf:"varint,8,opt,name=captainSkill,proto3" json:"captainSkill" bson:"captainSkill"` //队长技能 + NormalSkill []*SkillData `protobuf:"bytes,9,rep,name=normalSkill,proto3" json:"normalSkill" bson:"normalSkill"` //普通技能 + Property map[string]int32 `protobuf:"bytes,10,rep,name=property,proto3" json:"property" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 属性相关 + AddProperty map[string]int32 `protobuf:"bytes,11,rep,name=addProperty,proto3" json:"addProperty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"addProperty"` //附加属性相关 + CardType int32 `protobuf:"varint,12,opt,name=cardType,proto3" json:"cardType" bson:"cardType"` //卡片类型(升星卡、经验卡、技能升级卡) + CurSkin int32 `protobuf:"varint,13,opt,name=curSkin,proto3" json:"curSkin" bson:"curSkin"` //当前装备的皮肤ID + Skins []int32 `protobuf:"varint,14,rep,packed,name=skins,proto3" json:"skins"` // 所有皮肤ID + Block bool `protobuf:"varint,15,opt,name=block,proto3" json:"block"` // 锁定 + EquipID []string `protobuf:"bytes,16,rep,name=equipID,proto3" json:"equipID" bson:"equipID"` //装备 objID + JuexProperty map[string]int32 `protobuf:"bytes,17,rep,name=juexProperty,proto3" json:"juexProperty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"juexProperty"` ////hp + Status HeroType `protobuf:"varint,18,opt,name=status,proto3,enum=HeroType" json:"status" bson:"status"` //状态 (1 练功) + Suits []*DB_EquipmentSuit `protobuf:"bytes,19,rep,name=suits,proto3" json:"suits" bson:"suits"` //套装列表 + TalentProperty map[string]int32 `protobuf:"bytes,20,rep,name=talentProperty,proto3" json:"talentProperty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"talentProperty"` // // 天赋属性 + EquipSkill []*SkillData `protobuf:"bytes,21,rep,name=equipSkill,proto3" json:"equipSkill" bson:"equipSkill"` //装备技能 + HoroscopeProperty map[string]int32 `protobuf:"bytes,22,rep,name=horoscopeProperty,proto3" json:"horoscopeProperty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"horoscopeProperty"` ////星座属性加成 + Fulllvenr int32 `protobuf:"varint,23,opt,name=fulllvenr,proto3" json:"fulllvenr" bson:"fulllvenr"` ////满级登记分组 武馆使用 + KongfuUid string `protobuf:"bytes,24,opt,name=kongfuUid,proto3" json:"kongfuUid"` //@go_tags(`bson:"kongfuUid"`)// 英雄在谁家练功 + Fetters map[string]int32 `protobuf:"bytes,25,rep,name=fetters,proto3" json:"fetters" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"fetters"` ////羁绊属性加成 + SameCount int32 `protobuf:"varint,26,opt,name=sameCount,proto3" json:"sameCount" bson:"sameCount"` ////叠加数 + Ispasson bool `protobuf:"varint,27,opt,name=ispasson,proto3" json:"ispasson"` //是否是传功学员 + Awakenskill []*SkillData `protobuf:"bytes,28,rep,name=awakenskill,proto3" json:"awakenskill"` // 觉醒技能 + Talentskill []*SkillData `protobuf:"bytes,29,rep,name=talentskill,proto3" json:"talentskill"` // 回响技能 } func (x *DBHero) Reset() { @@ -197,14 +197,14 @@ func (x *DBHero) GetNormalSkill() []*SkillData { return nil } -func (x *DBHero) GetProperty() map[int32]int32 { +func (x *DBHero) GetProperty() map[string]int32 { if x != nil { return x.Property } return nil } -func (x *DBHero) GetAddProperty() map[int32]int32 { +func (x *DBHero) GetAddProperty() map[string]int32 { if x != nil { return x.AddProperty } @@ -246,7 +246,7 @@ func (x *DBHero) GetEquipID() []string { return nil } -func (x *DBHero) GetJuexProperty() map[int32]int32 { +func (x *DBHero) GetJuexProperty() map[string]int32 { if x != nil { return x.JuexProperty } @@ -267,7 +267,7 @@ func (x *DBHero) GetSuits() []*DB_EquipmentSuit { return nil } -func (x *DBHero) GetTalentProperty() map[int32]int32 { +func (x *DBHero) GetTalentProperty() map[string]int32 { if x != nil { return x.TalentProperty } @@ -281,7 +281,7 @@ func (x *DBHero) GetEquipSkill() []*SkillData { return nil } -func (x *DBHero) GetHoroscopeProperty() map[int32]int32 { +func (x *DBHero) GetHoroscopeProperty() map[string]int32 { if x != nil { return x.HoroscopeProperty } @@ -302,7 +302,7 @@ func (x *DBHero) GetKongfuUid() string { return "" } -func (x *DBHero) GetFetters() map[int32]int32 { +func (x *DBHero) GetFetters() map[string]int32 { if x != nil { return x.Fetters } @@ -803,28 +803,28 @@ var file_hero_hero_db_proto_rawDesc = []byte{ 0x6c, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x74, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x73, 0x6b, 0x69, 0x6c, 0x6c, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 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, 0x3e, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, + 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, 0x3f, 0x0a, 0x11, 0x4a, 0x75, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 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, 0x41, 0x0a, 0x13, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 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, + 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, 0x44, 0x0a, 0x16, 0x48, 0x6f, 0x72, 0x6f, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 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, + 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, 0x3a, 0x0a, 0x0c, 0x46, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73, 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, + 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, 0x8e, 0x0b, 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,